Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
HYPERMEDIA:
THE MISSING ELEMENT
to Building Adaptable Web APIs in Rails
ハイパーメディア: RailsでWeb APIをつくるには、これが足りない
Toru Kawamura
@tkawa
!
RubyKaigi 2014
RESTful Web APIs 読書会 #19 2014.10.09
@tkawa
Toru Kawamura
• フリーランス Ruby/Rails プログラマ
• Technology Assistance Partner at
SonicGarden Inc.
• REST厨 (RESTafarian)
inspired by Yohei Yamamoto (@yohei)
• Sendagaya.rb 共同主催
• “RESTful Web APIs”
読書会主催
Microdata
<div itemscope itemtype="http://schema.org/Person">
My name is <span itemprop="name">Bob Smith</span>
but people call me <span itemprop="nickname">Smithy</span>.
Here is my home page:
<a href="http://www.example.com" itemprop="url">www.example.com</a>
I live in Albuquerque, NM and
work as an <span itemprop="title">engineer</span>
at <span itemprop="affiliation">ACME Corp</span>.
</div>
• 構造化データをHTMLドキュメントに埋め込むしくみ
• データを変えることなくドキュメントの構造を変えられる
• データをURLに結びつけることで、大まかな「データの意
味」も表す(これもリンクの一種)
Microdata
<div itemscope itemtype="http://schema.org/Person">
My name is <span itemprop="name">Bob Smith</span>
but people call me <span schema.itemprop="org
nickname">Smithy</span>.
Here is my home page:
<a href="http://www.example.com" itemprop="url">www.example.com</a>
I live in Albuquerque, 標準語彙NM (and
ボキャブラリー)
work as an <span itemprop="at <span itemprop="by Bing, affiliation">Google, title">Yahoo! engineer</ACME Corp</and span>
span>.
Yandex
</div>
• 構造化データをHTMLドキュメントに埋め込むしくみ
• データを変えることなくドキュメントの構造を変えられる
• データをURLに結びつけることで、大まかな「データの意
味」も表す(これもリンクの一種)
http://getschema.org/index.php/Main_Page
変化に適応するために必要なもの
data link form
HTML - ✓ ✓
HTML
+Microdata ✓✓ ✓ ✓
• APIには構造化データが必要
✓✓: 「データの意味」を含む
• 柔軟なワークフローにはリンクとフォームが必要
HTMLでWeb APIを作ることもできる
var user = document.getItems('http://schema.org/Person')[0];
var name = user.properties['name'][0].itemValue;
alert('Hello ' + name + '!');
• “Microdata DOM API” でHTMLからデータを抽出できる
http://www.w3.org/TR/microdata/#using-the-microdata-dom-api
• JavaScriptの実装: https://github.com/termi/Microdata-JS
• MicrodataからJSONに変換する仕様もいくつかある
• HTMLはリンクとフォームを持っているのが大きなアドバンテージ
でもきっとJSON Web APIが欲しいはず
data link form
HTML
+Microdata ✓✓ ✓ ✓
JSON ✓ - -
✓✓: 「データの意味」を含む
• リンクとフォームを埋めればいい
(できればデータの意味も)
よりよい、変化に適応できるWeb APIを作りましょう
Thank you for your attention.
References
• L. Richardson & M. Amundsen “RESTful Web APIs” (O’Reilly)
• 山本陽平 “Webを支える技術” (技術評論社)
• Designing for Reuse: Creating APIs for the Future
http://www.oscon.com/oscon2014/public/schedule/detail/34922
• API Design Workshop 配布資料
http://events.layer7tech.com/tokyo-wrk
• https://speakerdeck.com/zdne/robust-mobile-clients-v2
• http://www.slideshare.net/yohei/webapi-36871915
• http://smizell.com/weblog/2014/solving-fizzbuzz-with-hypermedia
• 山口 徹 “Web API デザインの鉄則” WEB+DB PRESS Vol.82