OData Roadshow 改め Web API Roadshow のまとめ

先日の OData Roadshow 、人数は少なかったものの超グレートな方々にご参加頂きました。有難うございます。Twitterでの呟きを見ていると、興味も持っていただけたように感じます。

 

当日のメモをアップしておきます。

 

スピーカー情報

・Douglas Purdy (Microsoft CTO)

@douglasp

https://www.douglaspurdy.com/about

  

・Jonathan Carter (Microsoft Technical Evangelist)

@LostInTangent

https://www.lostintangent.com/

 

・Drew Robbins (Evangelist Manager)

@DrewRobbins

https://drewby.spaces.live.com/default.aspx

 

 

資料

odata

 

 

ODataについて

OData (Open Data Protocol) は様々な環境でデータをやり取りするための規約です。実態は複雑な構造化データも扱えるように拡張した AtomPub プロトコルです。フォーマットにはAtom 以外にJSONもサポートしています。

マイクロソフトのサービスや製品、言語はもちろん、マイクロソフト以外でも対応がすすめられています。

次の図ように対応されています。すばらしい。

image

 

 

iPhone でも使えますよ。当日はiPad もデモってましたね。

image

※ ちなみに、こちらが本家本元のサイト。同サイトにプロトコルドキュメントも公開されています。

 

みててもあれなので、皆さんも実際に試してみましょう。まずは結果を分かりやすくするために、IEの設定で「フィードの読み取りビューを有効にする」のチェックははずしておきます。そしてこちらにアクセスしてください。

feed 

なんだか、ごちゃごちゃした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の最新機能も知りたい場合。

元MSエバンジェリスト小高さんのブログ

 

英語でもOKであれば、何と言ってもMIX10です。

https://live.visitmix.com/Sessions#/tags/OData