OData Roadshow 改め Web API Roadshow のまとめ
先日の OData Roadshow 、人数は少なかったものの超グレートな方々にご参加頂きました。有難うございます。Twitterでの呟きを見ていると、興味も持っていただけたように感じます。
当日のメモをアップしておきます。
スピーカー情報
・Douglas Purdy (Microsoft CTO)
https://www.douglaspurdy.com/about
・Jonathan Carter (Microsoft Technical Evangelist)
https://www.lostintangent.com/
・Drew Robbins (Evangelist Manager)
https://drewby.spaces.live.com/default.aspx
資料
ODataについて
OData (Open Data Protocol) は様々な環境でデータをやり取りするための規約です。実態は複雑な構造化データも扱えるように拡張した AtomPub プロトコルです。フォーマットにはAtom 以外にJSONもサポートしています。
マイクロソフトのサービスや製品、言語はもちろん、マイクロソフト以外でも対応がすすめられています。
次の図ように対応されています。すばらしい。
iPhone でも使えますよ。当日はiPad もデモってましたね。
※ ちなみに、こちらが本家本元のサイト。同サイトにプロトコルドキュメントも公開されています。
みててもあれなので、皆さんも実際に試してみましょう。まずは結果を分かりやすくするために、IEの設定で「フィードの読み取りビューを有効にする」のチェックははずしておきます。そしてこちらにアクセスしてください。
なんだか、ごちゃごちゃしたXMLが表示されましたね。URLを見ると分かりますが、レンタルDVD会社であるNetflixさんのサイトになります。ここではDVDの情報をなんとODataに対応したサービスとして公開しているんですね。尚、Entryタグの中にデータが一件はいります。ここでは レンタルDVDの会社なのでDVDの情報が入っていることになります。
尚、OData での拡張部分は<m:properties> タグ配下になります。こんな感じのところです。
<m:properties xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"> <d:Id>13fnN</d:Id> |
それではURLでいろいろとデータ操作してみましょう。
まずはキー値でフィルタリングしてみましょう。次のようにURLに「(‘13aly’)」を追加します。データが一件になりましたね。(フィルタリング)
https://odata.netflix.com/Catalog/Titles('13aly')
次のように記述するとReleaseYearが1997のデータだけを表示します。(フィルタリング)
https://odata.netflix.com/Catalog/Titles?$filter=ReleaseYear eq 1997
ちなみに、次のようにすると言語が日本語のDVDだけ表示します。(ジョイン+フィルタリング)
https://odata.netflix.com/Catalog/Languages('Japanese')/Titles
こうするとソートです。ReleaseYearでソートしています。(ソート)
https://odata.netflix.com/Catalog/Titles?$orderby=ReleaseYear
ちなみに、次のようにやるとメタデータ(データ構造)が参照できます。(メタデータ)
https://odata.netflix.com/Catalog/$metadata
そうそう、次のように記述すると JSON フォーマットでデータを取得できます。(JSONフォーマット)
https://odata.netflix.com/Catalog/Titles?$format=json
このようにURLで様々なリソースがを表現することが可能です。
他にもいろいろあるので本家本元のサイトをご確認ください。
そしてクライアント側です。iPhoneやiPadを使ってみるのも面白いですが、ここでは皆さんが簡単に動作確認できる(と思われる)JQueryを使ってみましょう。次のコードをコピーしてHTMLファイルを作ってください。(ただし、jquery-1.4.2.min.js、jquery.tmpl.js の2ファイルは必要なのでダウンロードの必要あり)
<!DOCTYPE html> <html> <head> <title>NetFlix JQuery samples</title> </head> <body> <h1>Netflix JQuery Samples</h1> <ul id="movie-list"></ul> <script src="jquery-1.4.2.min.js" type="text/javascript"></script> <script src="jquery.tmpl.js" type="text/javascript"></script> <script id="movie-template" type="text/x-jquery-template"> <li>{%= Name %} ({%= ReleaseYear %})</li> </script> <script type="text/javascript"> $(document).ready(function() { $.getJSON("https://odata.netflix.com/Catalog/Titles?$format=json&$callback=?", function(response) { $("#movie-template").render(response.d.results).appendTo("#movie-list"); }); }); </script> </body> </html> |
クロスドメインアクセスになるためJSONPでデータを取得することになります。
他にも PHP、Java、.NET、Silverlight など様々なクライアントライブラリが提供されています。いろいろな言語が利用できるのは魅力ですね。クライアントライブラリについても本家サイトをご確認ください。
そういえば、当日は Power Pivot for Excel を使ったデモもやってましたね。Power Pivot については PowerPivot for Excel 2010 によるセルフ サービス分析をご覧ください。
それからVisual Studio 2010 のアドインとしてOData Visualizerなんてのも紹介していました。これはODataのメタデータをビジュアルで参照するためのツールです。
あ~、きりがない・・・次回につづく。。。。
リソース情報
最後に.NET で開発するためのリソース情報です。
まず、英語がイヤな方向けにはこのセッションですね。
T2-306 WCF Data Services 新機能と Open Data Protocol
ちゃんとしたドキュメントが欲しい方はこちらです。
SQL Server データアクセス手法(4)~ ADO.NET Data Services 編 ~
VS2010の最新機能も知りたい場合。
英語でもOKであれば、何と言ってもMIX10です。