平成 19 年度情報工学科卒業研究発表会 2008.1.31
REST 型 Web サービスによる楽曲検索システムの開発
研究者:青戸可那子, 指導教員:越田高志
1.はじめに
近年,企業や組織に限らず個人レベルでも,インタ
ーネットを介して情報の発信・受信・検索・共有の高度
な機能を容易に利用できるようになった.このような時
代の変化に伴い,インターネットは,従来のサーバか
ら情報を受け取るだけの受身のサービスから,自ら情
報やサービスを発信する能動的なサービスへと変わり
つつある.このような,新しい発想と技術による次世代
型の Web を総称して Web2.0 という[1].その新たなイ
ンターネット時代に入り,Web サービスも従来の SOAP
ベースから,より簡略化された REST 型に移行しつつ
あり,現在,様々な企業が REST 型 Web サービスを提
供してきている.そのため,今後はいかに最適に効率
よく,それらの Web サービス API を組み合わせ,シス
テムとして構築するか,という利用技術が重要となる.
それに対応するために,本卒研では,PHP と Amazon
REST 型 Web サービスを使用したシステム開発を通し
て,Web2.0 時代のシステム開発技術を習得することを
目的とする.
2.REST 型 Web サービスについ
サービスについて
について[2]
REST は,REpresentational State Transfer の略であ
り,URI で指定されたリソースに HTTP メソッドの GET
や POST などを適用して処理を行う形態である.その
REST スタイルを利用した Web サービスを REST 型
Web サービスという.これまでの SOAP 型 Web サービ
スとは異なり,利用形態が URI と HTTP という同じイン
ターフェースで統一されるため,手軽で使いやすいこ
とが特徴である.
クライアント
REST 型
Web サービス
xml
HTTP プロトコル
Yahoo
Amazon
など
xml
実行結果
図1 REST 型 Web サービス
(2) 演奏に関して,「人数構成」と「演奏の場」を選択
指定可能にした.以上を検索キーワードとともに
検索する.
(3) 検索結果のタイトル,価格,著者などと画像を出
力し,更に詳細情報と拡大画像も表示する.
図2 システム入力画面
3.2 Amazon
AmazonWeb
サービスについて
について[3][4]
[3][4][5]
Web サービス
について
[3][4]
[5]
Amazon は自社の商品情報の検索,購入などの
Web サービスを SOAP 型と REST 型両方で提供してい
る.今回使用した REST 型 Web サービスへの入力パラ
メータについて簡単に説明する.まず,Operation パラ
メータで問い合わせの種類を指定する.本システムで
は ItemSerch と ItemLookup を利用した.ItemSrech は
商品名や曲名などのキーワード検索の際に指定する.
ItemLookup は特定商品を検索する.次に,検索結果
の設定を ResponseGroup パラメータで行う.コンマで
区切って複数のパラメータ値を指定できる.本システ
ムでは中程度の情報,製品状態,楽曲情報,ユーザ
レビュなどを取得するために次のように指定した.
ResponseGroup=Medium,Offers, Tracks,Reviews
検索したい商品の種類を SearchIndex パラメータで指
定した.今回は音楽関連の商品であるので,表 1 に示
す5種類に限定した.
表1 商品の種類
SearchIndex=
Books(和書)
MusicTracks(曲名から調べる)
3.楽曲検索システム
楽曲検索システムの
システムの開発
Classical(クラシック音楽)
ブラスバンドの演奏曲検索(楽譜や CD,DVD)に利
用したく Amazon の Web サービスと PHP を用いて本シ
ステムを開発した.
Music(音楽)
3.1 システムの
システムの概要
開発する楽曲検索システムの概要を以下に示す.
(1) 検索分野として,Amazon の音楽関係の分類に合
わせて「楽譜,楽曲名,クラシック,Music, DVD」
の 5 分野に設定した.「Music」指定の場合のみ更
に詳細に分野を選択可能にした.
DVD(DVD)
ま た , 楽 譜 を 検 索 す る た め に Amazon 固 有 の
BrowseNode パラメータを利用して,楽譜に対する
BrowseNode 番号 746102 を PHP プログラム中で図 3
のように自動設定している.
Operation=ItemSearch&SearchIndex=Books&
BrowseNode=746102
図3 楽譜検索のためのパラメータ指定例
REST 型 Web サービスによる楽曲検索システムの開発(7-1)
平成 19 年度情報工学科卒業研究発表会 2008.1.31
3.3 PHP プログラムに
プログラムによる処理
よる処理に
ついて[6]
処理について[6]
AmazonWeb サービス実行時には,図2に入力画面
で指定されたパラメータ値を読取り,3.1 節で説明した
パラメータに組み込んでいる.また AmazonWeb サー
ビスへの入力データと出力データは UTF-8 コードを
使用しているので,検索キーワードは urlencode(非
ASCII 文字列)関数を使って
$keywords = urlencode($_GET['Keywords']);
UTF-8 コ ー ド に 変 換 し て 設 定 し て い る . そ の
$keywords 変数を含む ECS 実行 URL を図 4 に示す.
http://webservices.amazon.co.jp/onca/xml?Service=AWSE
CommerceService&AWSAccessKeyId=ID1&AssociateTag
=ID2&Version=2006-09-11&Operation=ItemSearch&Res
ponseGroup=Medium,Offers,Tracks,Reviews&SearchInd
ex=Books &Keywords=$Keywords &.
.
.
.
.
図6 システム出力画面例
「詳細を見る」の表示画面が,図7である.
図4 AmzazonWeb サービス実行の REST 形式
Amazon サーバとの通信には curl 関数を利用し,
XML 出力データの解析には PEAR ライブラリ関数を利
用してタグ解析を行い,必要情報を HTML 形式で
Web ブラウザに出力する PHP プログラムを開発した.
その出力処理部分を図5に示す.
$parsed_xml = simplexml_load_string($response);
printSearchResults($parsed_xml, $SearchIndex);
function printSearchResults($parsed_xml, $SearchIndex)
{
$numOfItems = $parsed_xml->Items->TotalResults;
$totalPages = $parsed_xml->Items->TotalPages;
print("<table>");
if($numOfItems>0){
foreach($parsed_xml->Items->Item as $current){
if(isset($current->Offers->Offer->OfferListing->
OfferListingId)){
print("<tr><td><img
src='".$current->MediumImage->URL."'></td>");
print("<td><font
size='-1'><b>".$current->ItemAttributes->Title."</b>");
if(isset($current->ItemAttributes->Director)){
print("<br>ディレクタ: "
.$current->ItemAttributes->Director);
}elseif(isset($current->ItemAttributes->Author)) {
print("<br>著者: ".$current->ItemAttributes->Author);
}elseif(isset($current->ItemAttributes->Artist)) {
print("<br>演奏者: ".$current->ItemAttributes->Artist);
}
print("<br>価格:"
.$current->Offers->Offer->OfferListing->Price->
FormattedPrice);
図5 PHP による Web サービス出力解析部分
3.4 システムの
システムの実行結果
入力パラメータ値として「楽譜で検索」,「大編成」,
「コンクール」を,検索キーワードとして「A.リード 吹奏
楽」を指定した時の検索結果を,図6と図7に示す.
図7 詳細情報の画面表示例
4.おわりに
Amazon の REST 型 Web サービスに対して,PHP を
用いて,Web ブラウザからの入力パラメータ指定と取り
込み,そして Web サービス実行結果の解析と出力表
示を行うプログラムを開発した.PHP プログラムの開発
は文法の理解と平行してライブラリ関数なども調べた
のでかなり大変だったが何とか開発できた.今後は
Web サービスの XML 出力データを更に解析して,
色々な情報を自由自在に加工できるようにすることと,
音楽サイトの Web サービスをマッシュアップして実際
に検索した曲を聞けるようにしたい.
参考文献
[1]大向一輝,橋本大也:Web2.0 について,情報処
理,Vol.47 No.11(2006).
[2]山本陽平:REST アーキ テクチャ入門,WEB+DB
PRESS vol.32,pp101-107(2007).
[3]水野貴明:俺流 Amazon の作り方,株式会社 アスキ
ー(2006).
[4]ITmedia:Amazon ECS 4.0 解説
http://itmedia.co.jp/
[5]Amazon:http://www.amazon.co.jp/
[6]高島優作:PHP5 逆引き大全 500 の極意,株式会社
秀和システム(2004).
REST 型 Web サービスによる楽曲検索システムの開発(7-2)
© Copyright 2026 Paperzz