BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

AmazonがAppStream APIにHALメディアタイプを選択

| 作者: Steve Klabnik フォローする 0 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2014年3月25日. 推定読書時間: 3 分 |

原文(投稿日:2014/03/03)へのリンク

Amazonは,Amazon AppStreamプラットフォームにホストされたアプリケーションをプログラムから管理可能な新API,"ApStream API"をリリースした。このAPIの開発で同社が選択したのはHALメディアタイプだ。HALは,マシン・ツー・マシンAPIを構築するメディアタイプのための,最小限のハイパーメディアである。Amazonは,一般公開されている製品の技術としてハイパーメディアを選択した最大の組織のひとつ,ということになる。

ハイパーメディアAPIはAPIの世界ではホットな話題だが,その支持者に対しては,現実での適用性に関する疑問が投げられることも多い。技術的な研究や議論が激増する一方で,ハイパーメディアAPIは現在のAPIエコシステムのごく一部を構成するに過ぎないのだ。SOA形式の製品開発をAmazonの開発チームに求めたのが,同社CEOのJeff Bezos氏であるというのはよく知られた話だ。その結果,数多くの内部APIと外部APIが作り出されることになった。最大ハイテク企業のひとつがHALを使ったハイパーメディアに賛成票を投じたことは,ハイパーメディア支持派を勇気づけるに違いない。

ハイパーメディアコミュニティが現在取り組む課題のひとつがドキュメント化だ。ハイパーメディアサービスのドキュメントとはメディアタイプの定義であって,それ以上のものはない,というのが従来の答だ。しかしこのアプローチは,既存のアーキテクチャスタイルとは大きく異なっている。このギャップを埋めるために,コミュニティは新たな戦略に取り組んでいる。

AppStream APIチームはAPIを,ヘッダ値,エラーコード,トップレベルリソース,リンク関係という,4つの大きなセクションの文書化を決定した。HTTPステータスコードとURLとパラメータの組み合わせに注目する,これまでのRESTfulサービスとは大きく異なる,従来のハイパーメディアのアプローチに極めて近い方法だ。HALユーザが仕様と用途について議論する場であるHAL-discussメーリングリストで,Andrés Freyría Cedeño氏は次のように発言している。

ドキュメントに対する私の直感的な感想は,"ハイパーメディアAPIが一般的なものならば,これで十分な資料だろう"という線に沿ったものでした。しかし現在の状況を考えれば,開発者の作業の補助として十分なリソースであるとは言えません。

この傾向がどのように続いて,ハイパーメディアがAPIパターンとして確立されていくかは,今後明らかになるだろう。

HALは現在,メディアタイプとしてIETFで標準化作業が続けられている。Mike Kelly氏によって生み出されたHALは,XMLとJSONに対して一連の規則を提供することによって,リソースの相互リンクをシンプルかつ分かりやすく表現することを目標にしている。

次のHALレスポンスのサンプルはドラフトから抜粋したものだ。

{
     "_links": {
       "self": { "href": "/orders/523" },
       "warehouse": { "href": "/warehouse/56" },
       "invoice": { "href": "/invoices/873" }
     },
     "currency": "USD",
     "status": "shipped",
     "total": 10.20
   }

HALでは_links_embeddedというトップレベルの予約プロパティが2つ定義されているが,ここでは_linksを使用している。このオブジェクト中のリンク方法が,HALで標準化されたものだ。この例では架空の"orders"リソースへのリンクがあり,orderの格納されているwarehouseと,現在このorderに関連付けられている invoiceの両方にリンクしている。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT