SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows Azure MarketPlace DataMarket入門

Windows Azure MarketPlace DataMarketを使用した開発事始め

Windows Azure MarketPlace DataMarket入門(後編)

PHPを使用してDataMarketのデータを呼び出す

 DataMarketのAPIはODataに対応しています。ODataはHTTP層の上でATOMPubやJSONやXMLの技術を使用してデータを交換していて、C#以外の言語でも使用可能です。本稿では参考としてDataMarketのAPIをPHPから呼び出すサンプルを紹介します。なお、筆者はXAMPP1.7.3を使用して動作確認を行っています。

準備

 OData用のSDKは各種用意されています。ダウンロードページへのリンクを参考のため紹介します。

 今回はPHP用のため、ダウンロードページからOData SDK for PHPをダウンロードしてください。

 OData SDK for PHPを解凍したらframeworkフォルダ内のすべてのファイルを任意のフォルダにコピーしてください。そして、この任意のフォルダをPHP.iniのinclude_pathディレクティブに追加してください。また、PHP.iniファイルにODataSDKのライブラリ類を参照するためのODataphp_pathディレクティブを新規に追加して、include_pathディレクティブ同様にframeworkフォルダ内のすべてのファイルをコピーした任意のフォルダを指定してください。

 また、OData SDK dor PHPはCURLエクステンションとXSLエクステンションが必要となるので有効化してください。

 phpt.iniの設定例を以下に示します。なお、frameworkフォルダ内のファイルはC:\PHPLib\odataphpフォルダ以下に解凍しています。また、XSLエクステンションはPHPのバージョンにより設定方法が異なります。筆者の環境のようにXAMPP1.7.3の場合はデフォルトで有効化されているため、設定例に記載していません。

[リスト5]php.iniの設定例
extension=php_curl.dll

include_path = ".;C:\PHPLib\odataphp"
;OData SDK for PHP Library Path
ODataphp_path = "C:\PHPLib\odataphp"

プロキシクラスの作成

 PHPの場合はコマンドラインからプロキシクラスのファイルを生成します。なお、PHPDataSvcUtil.phpファイルはframeworkフォルダ以下に存在します。/uriには[Service root URI]を使用します。/outにファイルの出力先フォルダを指定します。今回は「2006 - 2008 Crime in the United States (Data.gov)」のデータを使用しますが、その際のコマンドラインは以下のようになります。

php PHPDataSvcUtil.php /uri=https://api.datamarket.azure.com/Data.ashx/data.gov/Crimes/ /out=C:\PHPLib\odataphp

 実行すると「datagovCrimesContainer.php」というファイルが作成されます。これをプロクシクラスのファイルとして使用します。

コードの作成

 プロキシクラスのファイルを使用して以下のコードを実装します。

[リスト6]DataMarket.phpの実装
<?php

require_once 'datagovCrimesContainer.php';

$svc = new datagovCrimesContainer();
$svc->Credential = new WindowsCredential
(YOURLIVEID, YOURACCOUNTKEY);

$qry = $svc->CityCrime();
$qry->OrderBy("Year");
$qry->Filter("State eq 'Texas' and City eq 'Dallas'");
     
$response = $qry->Execute();
    
echo "<table border=3>";
echo "<tr>";
echo "<th>Year</th>";
echo "<th>State</th>";
echo "<th>City</th>";
echo "<th>Population</th>";
echo "<th>ViolentCrime</th>";
echo "</tr>";
foreach ($response->Result as $row)
{                   
    echo "<td>" . htmlspecialchars($row->Year) . "</td>";
    echo "<td>" . htmlspecialchars($row->State) . "</td>";
    echo "<td>" . htmlspecialchars($row->City) . "</td>";
	echo "<td>" . htmlspecialchars($row->Population) . "</td>";
    echo "<td>" . htmlspecialchars($row->ViolentCrime) . "</td>";
    echo "</tr>";
}
echo "</table>";

?>

 認証情報を定義するWindowsCredentialクラスでは、それぞれの環境に合わせて、第1引数にDataMarketに登録しているLiveIDに、第2引数にアカウントキーを設定してください。

 このコードをそのままサーバ上で実行すると以下のような表示になると思います。

サンプルアプリケーションの表示結果
サンプルアプリケーションの表示結果

 サンプルコードではフィルタリングを行ってテキサス州のダラスのデータのみを取得していますが、フィルタリング以外のクエリオプションをサポートしているので、自由に改変して呼び出してください。

 主なクエリオプションは以下のとおりです。

主なクエリオプション
オプション 内容
$top 結果から取得するデータの最大数を指定します
$skip 結果から指定分のデータをスキップして取得します
$filter フィルタリングを行います
$orderby 特定の列でソートを行います
$select 特定のデータのみを取得します
$count 取得するデータの数を指定します

 なお、DataMarketがサポートしているクエリオプションの詳細はmsdnのサイトを参照してください。

 その他の言語からもOData SDKを使用することで容易にDataMarketを使用できるので、皆様も得意な言語を使用してみてはいかがでしょうか。

まとめ

 さて、実際に使用してみましたが、いかがだったでしょうか。思った以上に簡単に使用できることに驚かれたのではないかと思います。DataMarketでは統一された使い方でさまざまなデータに容易にアクセスできます。また、無償のデータもかなりの数が揃えられているので、無償のデータだけでも使用することで面白い結果がでてくるのではと期待しています。まずは触ってみないと感触がつかめません。幸いなことにDataMarketはインターネットに接続する環境さえあれば無償で使用でき、言語もかなり対応しているため、後は我々開発者の発想の勝負です。

 最後に、データを所有している事業者の方は、ぜひ登録してみてください。筆者の聞いた限りでは日本のマイクロソフト社でもデータ登録に協力していて、既に自社データを登録した企業もあります。自社のサイトでマッシュアップ基盤として提供しているデータを「市場」に出すことで多くの人の目に触れることができるようになります。もちろん課金することで収入にすることもできますが、想像した以上の使い方をしてもらうことで、自社で眠っていたデータが世の中に広くアピールできるとともに社会貢献になる点も見逃さないでください。しかも、DataMarketという場所を使用することで英語圏という新しい市場に対して簡単に自社及び自社のデータをアピールすることが可能です。ぜひ、日本からも登録する企業が増えることを期待しています。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Windows Azure MarketPlace DataMarket入門連載記事一覧
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト bird982000(bird982000)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5763 2011/03/07 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー