データの価値を解き放て
先日のDataclipバージョン2.0のローンチによって,Herokuはかねてからのテーマにおける新たなステップを踏み出した。
"データの価値を解き放て。" GitHubのGistは,コードスニペットの共有とコラボレーションをサポートします。Dataclipはそれと同じことを,データに対して行うのです。
アプリケーションそのものより,アプリケーションによって使用され,生成されるデータの方により高い価値があるというのは,今日ではごく普通の認識となっている。データを公開するということの意義は,オープン性という観点に限ったものではない。既存のデータソースをマッシュアップして,単なる部品の寄せ集め以上の価値を創造するサービスに対して,その拡大を促進する面からも,非常に大きな意味を持つのだ。
Heroku Postgresチームはこの1年の大半を,Dataclipのアーキテクチャと実装をオーバーホールする作業に費やしてきた。InfoQでは,Herokuのパーシステンスグループでプロダクトマネージャを務めるCraig Kerstiens氏に,その話を聞く機会を得た。今回の記事ではDataclipの備える多彩な機能について,その概要を説明する。Dataclipは開発者にだけでなく,企業や意思決定者にこそ価値あるものなのだ。
Craig は言う。
組織の持つデータは,その組織にとって重要な資産です。しかし残念なことに,ほとんどのデータはデータベースに閉じ込められたままです。特別な権限を持った一部の人々が,ごく限られた方法でアクセスを許されているに過ぎません。それを使ったレポートの作成も,そのほとんどは手作業で行われています。作成したレポートは電子メールに添付したり,あるいはダッシュボードに組み込まれたりしていますが,すぐに陳腐化してしまうため,情報をタイムリーに得ることができないのです。
このような思いからHerokuは,既存のDataclips機能を再設計する決断をした。Dataclipは簡単なセットアップで利用可能な,将来的に多くの用途に対応できる機能に生まれ変わったのだ。
実例 - 保健衛生調査スコア SFO
Dataclipがどのようなものか示す例として,Code for America が開発した,サンフランシスコにあるレストランや食品施設の保健衛生調査スコアを示すClipを紹介しよう。Code for Americaでは,収集した情報を集約し,公的に利用可能な形で提供している。その公開方法のひとつにDataclipが使用されているのだ。
"企業向けの最新スコア" はその一例だ。
Dataclipは dataclips.heroku.com のアカウントから直接,またはPostgres管理ページで適切なSQLコマンドを使用して作成することができる。唯一の制限はDataclipの返す行数に関するもので,30,000行を越えた部分は切り捨てられる。
dataclipは上記のような組み込みiframe以外に,独立したHTMLページとしての利用にも対応する。ページ内ではSQL,バージョン,Dataclipリビジョンヒストリを確認することができる。電子メールやTwitter,Google docsを通じての共有も可能だ。CSV,XLS(Excel),JSONなどの拡張子をURLに付け加えれば,Dataclipをそれぞれのフォーマットでダウンロードすることもできる。
JSON
https://dataclips.heroku.com/aniexnddtuqpmtjhmuvdgrqprjns.json {"fields":["name","address","city","score"], "values":[ ["MINI BAR SF, LLC","837 DIVISADERO ST ","San Francisco","100"], ["AT&T - MAIN KITCHEN/SUITE LEVEL [145084]","24 WILLIE MAYS PLAZA 4.10.03 ","San Francisco","100"], ["CYBELLE'S PIZZA","719 14TH ST ","San Francisco","100"], ... ]}
CSV - カンマ区切りのデータ
https://dataclips.heroku.com/aniexnddtuqpmtjhmuvdgrqprjns.csv name,address,city,score "MINI BAR SF, LLC",837 DIVISADERO ST ,San Francisco,100 AT&T - MAIN KITCHEN/SUITE LEVEL [145084],24 WILLIE MAYS PLAZA 4.10.03 ,San Francisco,100 CYBELLE'S PIZZA,719 14TH ST ,San Francisco,100 PACIFIC UNION CLUB,1000 CALIFORNIA ST ,San Francisco,100 ...
xmlやyamlなど他のフォーマットについても,今後のロードマップへの追加が検討されている。google-data-tableフォーマットなどが追加されて,Googleのチャートやダイアグラムが統合できるようになれば,さらに素晴らしいだろう。現時点では,毎時更新されている ImportData(URL)
を使うことで,Google CalcスプレッドシートにCSV形式でインポートすることができる。
リビジョンとバージョン
Gistと同じように,Dataclipにもバージョン管理とリビジョン管理の機能がある。クエリが変更されるとDataclipの新たなリビジョンが生成され,(Dataclipページにも記載される),結果が変わる(データの変更によって)毎に新しいバージョンが発行される仕組みだ。 ?revision=1&version=5
のようなクエリパラメータをURLに付加すれば,リビジョンやバージョンを指定することもできる。Gistと同様に,フォークして別のものとして動作させることも可能だ。
実装
Dataclipの実装は極めて単純だ。Dataclipを処理するのは,herokuインフラストラクチャ上で動作するrubyアプリケーションである。このアプリケーションが,あらかじめ設定されたクエリを読み取り専用トランザクション内で定期的(現状ではおよそ1分単位)に実行し,その結果を取得する。クエリの実行と影響はスクリプトによって監視されていて,周期が動的に調整される。もとのデータベースとは独立した形でアクセスできるように,クエリ結果はバージョン付けされたテーブルに保存される。追加的なフォーマットはS3が生成してキャッシュに保存するが,HTMLビューはキャッシュ対象ではなく,要求時にレンダリングされている。
使用法とフィードバック
Dataclipにどのような使用方法を想定しているか,という質問に対して,Craigはいくつかのユースケースを挙げた。Dataclipは,意思決定者には自己更新型でバージョン管理を備えた情報ラジエータであり,開発者にとってはデータを容易に共有できる手段である。安定的なAPIとして,プロトタイプはもちろん,完全なアプリケーションからも使用可能だ。一般向けの用途としてはマッシュアップや,その他の想定外な利用も可能な,自由データとしての機能を提供する。既存のDataclipをフォークして違う結果が得られるようにSQLを編集するという,SQLの学習への利用もユースケースとして面白いだろう。
Dataclipのロードマップにはさまざまな規模の機能が掲載されている。明確な機能追加としては,サポート対象フォーマットの拡張やHTMLビュー用のスタイル提供などがある。他のリレーショナルデータベースを使用可能にするのも簡単だろう。その一方で,NoSQLアドオンプロバイダにDataclipを統合しようという,当然ながら困難だが興味深い動きもある。コメントやレーティングなどのソーシャル機能の追加も,Dataclipマーケットの創造 (有償および無償の両面で) につながるという意味で興味深い。カスタムURLの計画はないが,Dataclipの利用頻度が高まれば,プログラムから生成するためのAPIも必要になってくるだろう。
これまでのユーザの反応は,総じて肯定的なものだ。ユースケースとして興味深いものとしては,ユーザサインアップの不正検出を可視化するDataclipや,ダッシュボードのデータソースとして使用するというものなどがあった。
Heroku Postgresの商用バージョンでは,HerokuユーザアカウントによるDataclipのセキュリティ確保などが追加機能として提供される。無償版では,推測困難(unguessable)なURIなどを使用したセキュリティの確保が必要だ。