見出し画像

データ共有プラットフォーム「delika」を使ってみた

 こんにちは、データソリューショングループの松村です。
 今回は「delika」というデータ共有・分析プラットフォームに配置したデータを以前の記事で紹介したExploratoryからアクセスする方法をご紹介します。

 「delikaというデータ共有に便利なプラットフォームがある」「Exploratoryにこんな使い方もある」という事例として参考になれば幸いです。最後までよろしくお願いいたします。


1. delikaとは

 delikaは株式会社コネクトデータが提供する2021年1月に一般公開されたできたてホヤホヤのサービスです。詳細な製品紹介は公式ページを見ていただくのが確実ですが、以下の特徴を有する、分析に有用な外部データの収集や共有のためのオープンなプラットフォームを目指したサービスです。

スクリーンショット 2021-03-31 18.36.50

delikaの位置付け(delika紹介資料より)

画像2

自分が保有しないデータも簡単に利用可能(delika紹介資料より)

画像3

データ配布・販売のイメージ(delika紹介資料より)

delikaの特徴的な機能
 ・クリック操作による簡単なデータのアップロードと公開
 ・データのバージョン管理
  →データの更新履歴や更新理由を管理でき、特定のバージョンのデータを利用可能
 ・データにライセンスを付与
  →データの利用範囲や条件を設定可能
 ・公開されているデータをライセンスの範囲内で自由に利用可能
 ・SQLによるデータ探索・抽出 
 ・APIが提供されており外部ツールから操作可能
  →R, Pythonのライブラリも提供されている

 上記機能に加えデータ活用ビジネスに有用なデータ販売※1機能の提供が予定されており、個人的に注目しているサービスの一つです。

 本noteでは2章にてdelikaでのデータ公開の流れ・SQLの実行をご説明し、3章では公開したデータにExploratoryからアクセスする方法をご紹介します。なお、delikaには無料版と有料版がありますが、本noteで紹介する内容は全て無料版で利用可能です※2。


2. delikaを使ってみる

 delikaを使うにあたって、事前にアカウントを作成する必要があります。アカウント作成にはメールアドレスと電話番号の入力があり、ログインする際にもSMS認証が毎回必要です。

2-1. delikaにデータをアップロードする
 delikaではデータセットを作成し、その中に複数のファイルをアップロードする仕組みになっています。

 事前に作成したdelikaのアカウントを用いて下記リンクの場所にデータをアップロードすると、次のスクリーンショットのようになります。今回は、以前個人的に作成した「ECサイトの購買データを意識したテストデータ」をアップロードしています※3。

 ・https://delika.io/ymattu/ec-log-sample

画像4

 また、1章で紹介したライセンス付与機能はデータセット単位で適用され、付与できるライセンスの種類は以下の通りです※4。

画像5

クリエイティブ・コモンズ・ライセンスとは」を参考に作成

 なお、ソフトウェアには明確に定められた形式のライセンスがある一方、データのために定められたライセンスは現在のところは存在せず、データに対してはインターネット上の著作物へのライセンスとして使われるCC BYが利用されることが多いです※5。

2-2. SQLでデータを抽出してみる
 delika上にアップロードされたデータに対してSQLを使ったクエリを作成し、GUI上で実行することでデータの探索・抽出ができます※6。delika SQLのドキュメントによると、基本的には広く使われているSQLと同様の書き方ができますが、独特な文法もあります。

 例えば、FROM句に各テーブルの名称を [account/dataset/table] と書きます。2-1でアップロードしたECサイトの購買データセットのSale.csvから先頭100行を抽出する場合、以下のようなクエリを実行します。

-- ECサイトの購買データセットのSale.csvから先頭100行を抽出するSQLクエリ

SELECT 
  s.*
FROM
  [ymattu/ec-log-sample/Sales.csv] s
LIMIT
  100


3. Exploratoryからdelika上のデータにアクセスする

 以前の記事で紹介したExploratoryはGUI上でローカルファイル、データベースなど様々なデータを扱うことができました。さらにシステム内部で使用されているR言語を活用することで、公式にサポートされていないデータソースの読み込みや加工も可能です。

 Exploratoryの直感的なデータ加工や分析機能と、delikaにアップロードされた様々なオープンデータやその共有機能を組み合わせることで、データの取得、加工、分析、共有といった一連の流れを素早く実行できます。

 delikaのデータをRで扱うためのパッケージとしてdelikaパッケージが提供されています。今回のようにExploratoryの標準パッケージに含まれていない特定のパッケージは後からインストールする必要があります。
 独自にインストールしたパッケージを使ってデータを読み込む場合は、次の手順でデータを読み込みます。

 ①パッケージをインストール
 ②スクリプトを記述してデータを読み込む

 本章ではこの順に従って説明をします。

3-1. パッケージをインストール
 まずはdelikaパッケージをExploratoryにインストールします。CRAN※7に登録されているRパッケージはExploratoryのGUI上からインストールできますが、delikaパッケージはCRANに登録されていないため簡単なスクリプトを書いてインストールします。このようなスクリプトを書く際は、Exploratoryでは[スクリプト→スクリプト]という順にクリックし、スクリプト名を入力すると表示される画面で入力を行います。

スクリーンショット 2021-03-29 17.31.38

 次に下記のようなRスクリプトを記入し、保存します。このとき、「プロジェクトを開く際にこのスクリプトを読み込む」のオプションにあるチェックボックスを外しておきます。こうすると、プロジェクトを開くたびに同じパッケージがインストールされることが防げます。

# delika パッケージをインストールするスクリプト

# delikaパッケージがあるレポジトリを追加
repos <- c("https://cloud.r-project.org", "https://docs.delika.io/R")

# パッケージのパッケージのインストール
install.packages("delika", repos = repos)

スクリーンショット 2021-03-29 17.32.22

パッケージインストールのスクリプト入力画面

3-2. スクリプトを記述してデータを読み込む
 3章冒頭で説明したとおり、delikaパッケージを使ってデータを読み込むにはスクリプトを書きます。スクリプトからAPIを操作する場合、アカウント認証のための情報を取得する必要があります。delikaでは、以下の方法で取得できます。

 https://api.delika.io/v1/auth にアクセスし、ログインすると認証情報のJSONを取得する画面に遷移します。

画像8

 このJSONをコピーすれば、読み込みのための準備は完了です。

 Exploratoryでデータ読み込みのスクリプトを書くにはサイドバーの[データフレーム→Rスクリプト]をクリックします。

スクリーンショット 2021-03-29 17.18.27

 記入するコードは以下の通りで、'コピーしたJSONを貼り付け'のクオーテーションの中に、先ほどコピーした認証情報のJSONを貼り付けます。また、# delika SQLを定義の部分で使用しているSQLクエリは1-3で紹介したクエリと同一です。

 なお、Exploratoryではなく読み込みから分析までスクリプトで行うツール(RStudioなど)で実行する場合は、スクリプトの前半部# パッケージの読み込み〜# クライアント情報を作成までをより簡略化できます※8※9。

# delika上のデータを読み込むためのスクリプト

# パッケージのパッケージの読み込み
library(delika)
# 取得したJSONを入力
raw_json <- 'コピーしたJSONを貼り付け'
j <- jsonlite::fromJSON(raw_json)
# トークンを作成
token <- delika::Jwt$new(token_type = j$TokenType,
                       access_token = j$AccessToken, 
                       access_token_expires_on = parse_time(j$AccessTokenExpiresOn), 
                       refresh_token = j$RefreshToken,
                       refresh_token_expires_on = parse_time(j$RefreshTokenExpiresOn))
# クライアント情報を作成
client <- delika::new_client(token)

# delika SQLを定義
sales_query <- "
SELECT 
s.*
FROM
[ymattu/ec-log-sample/Sales.csv] s
LIMIT
100
"

# データのデータの読み込み
df1 <- delika::read_delika_sql(sales_query, client)

 これを実行し、保存画面でデータフレーム名を入力するとデータが読み込まれます。

スクリーンショット 2021-03-29 17.21.25

スクリーンショット 2021-03-29 17.40.52

 次のようなサマリ画面でデータの分布が表示されれば、読み込みが成功したことが確認できます。

画像12

 ただし、取得したアカウント認証情報は45日間の有効期限があり、期限が切れた認証情報で実行するとエラーになるので、注意が必要です。


4. まとめ

 今回は「delikaを使ってみる」「Exploratoryからdelikaのデータを読み込む」という内容でお話をしました。
 企業・個人を問わずデータを共有しながら分析もコラボレーションできることは、多様な職種がデータと分析を活用して業務を進める流れを促進し、新たな価値創出につながる可能性があります。

 今後delikaが普及し、企業間のデータ共有や売買がこのプラットフォーム上で頻繁に行われるようになれば、Exploratoryと連携して社外・社内のデータを組み合わせたデータ分析を容易に実行できそうだと感じました。

 本noteでご紹介した機能以外にもチーム機能やデータの公開・非公開の制御など、興味深い機能が多いサービスですので要注目です。


※1: 政府が議論を進めるデータ戦略(「データ戦略タスクフォース第一次とりまとめ(案)」)には、「データ流通市場の活性化」も検討事項として含まれており、データの配布・販売はデータ人材の育成と並行して進んでいくと考えられます。

※2: 無料版と有料版の機能比較は、公式の比較ページをご覧ください。

※3: このデータは、実在するいかなるデータとも関係がありません。また、データ作成のコードをGitHubで公開しています。

※4: クリエイティブ・コモンズ・ライセンスの詳細はこちらをご覧ください。

※5: この慣習は、複数のメディアや論文にて言及されています。
5分で分かるオープンデータ
CC 4.0 時代のオープンデータとライセンスデザイン(中川隆太郎, 『情報の科学と技術』 65 巻 12 号(2015))

※6: データのプレビューはアカウントが無くても可能ですが、ダウンロードやSQLクエリによる探索といった機能を使うには、アカウントの作成が必要です。

※7: R本体や各種パッケージをダウンロードするためのWebサイトです。

※8: delika::new_token() 関数を実行すると自動的にブラウザが開き、ログインするとJSONが記載されたページに遷移します。RStudioのコンソールにコピーしたJSONを入力すると認証されます。詳細はdelikaパッケージのドキュメントをご覧ください。

※9: 今回記載したコードは、delika::new_token() 関数の中身を調べ、Exploratory上でデータを読み込めるように必要な箇所を抜き出したものです。

6
株式会社ネオキャリアでデータ分析に関わる人々が情報を発信していきます。 発表スライドなどは下記に掲載していきます。  https://speakerdeck.com/neo_analytics