Más contenido relacionado La actualidad más candente (20) Web API入門3. はじめに:自己紹介
• 高久雅生(たかく まさお)
筑波大学図書館情報メディア系
• 前職:物質・材料研究機構エンジニア
• 前々職:国立情報学研究所ポスドク研究員
• 研究分野
情報検索、電子図書館、情報探索行動、学術情報
流通、専門図書館
• その他
情報知識学会理事、日本図書館情報学会研究委員、
Code4Lib JAPANコアメンバー、saveMLAK技術
チームなど
3
11. World Wide Web
• WWW (World Wide Web)
ワールド・ワイド・ウェブ
ダブリュ・ダブリュ・ダブリュ
• または単に Web (ウェブ) と称する
• 【web】 (noun)
A network of silken thread spun
especially by the larvae of various insects
(as a tent caterpillar) and usually serving
as a nest or shelter.
11https://commons.wikimedia.org/wiki/File:
Spider_web_Belgium_Luc_Viatour.jpg
13. Webの3要素
• HTTP, URL, HTMLの3つの枠組みを用い
たWebの実現!
• HTTPレイヤでのデータ転送とドキュメン
トフォーマット指定
• URI指定によるリンクを通じたハイパーメ
ディアの実現
13
15. URLとは?
• URL (Universal Resource Locator)
• Web上でのアドレスを指し示すアドレス(識
別子)として機能する
http://ci.nii.ac.jp/search?q=web+api
15
サーバのアドレス サーバ内で
の場所
ページの表示に必要なパラメータ
パラメータ名:q
パラメータ値:web+api
16. APIとは?
• Application Programming Interface
• アプリケーションソフトウェアの開発に
あたって使われる、標準的なモジュール
群、その利用法
API = 開発環境における標準
典型的には、特定のOS環境のソフトウェアは
共通する標準APIを用いて開発される
• Windows
• Apple iOS
16
19. Web APIとは何か?
• Web + API = Web API
• ウェブ上で他のサービスを呼び出す方式、
取り決め
標準的なデータやサービスの提供を行う手法
19
クライアント
プログラム
Web API
提供サーバ
プログラム
インターネット
データ
(XML,
JSON
等)
リクエスト
レスポンス
20. Web APIの歴史
• インターネット普及前には…
そもそも、同一環境(計算機やOS)同士で通信
する仕組みはある程度必要
遠隔のサービスを呼び出す仕掛け
• ウェブ以前には:RPC(Remote Procedure Call)
オープン環境においても、通信コマンドやデータ
形式の標準化(分野ごとに)
• これらの方式を受け継いで、Web上でも行う
ための手段
SOAP方式
…一般的にはさほど普及しなかった
…はっきり言って面倒くさい
20
21. Web APIの歴史 (2)
• Web API:別名 Web Services とも呼ばれる
• 2002年頃から一般的に使われ始める
Amazon, Googleなどが代表例
• きっかけはWeb 2.0
2005/2006年頃に爆発的に流行
当時に流行っていて先進的なサービスをまとめた用
語
その技術要素のひとつがAJAXという手法
• 前提として必要なデータのやり取りの方式
=Web API
• Google Mapsがその代表格
– つまり、Google Maps APIが前提となって、AJAXを実現させた
21
26. URLとWeb APIリクエストの関係
• Web APIにおいてはURLが基本的な単位
となって、それに対する「操作」(処
理)がやり取りを決める
URLに様々なパラメータを与える
• 例:
http://ci.nii.ac.jp/opensearch/search?
q=図書館&
format=atom&
sort=7
26
30. Web APIの種類
• 様々なサービスがWeb APIとして提供
たとえば、手元で使ったことがあるものだけ
でも、書籍検索、論文検索、画像検索、地図
情報、音声認識、顔認識、などなど…
Web APIの紹介サイトProgrammable-Web
には600近いカテゴリが用意され、13,000を
超えるWeb APIサービスが紹介されている
• http://www.programmableweb.com/category
30
32. CiNii Articles
• 国立情報学研究所が提供する日本の論文検索
サービス: http://ci.nii.ac.jp
• 検索:OpenSearch
http://ci.nii.ac.jp/opensearch/search?q=web
%20api&author=Takaku&format=atom
検索条件をパラメータとしてやり取りする
検索結果はAtom形式(XML)やJSON形式等を
選択可能
• 詳細レコード:RDF
http://ci.nii.ac.jp/naid/110009810692.rdf
詳細レコードのデータをRDF形式として返す
32
35. NDLサーチ
• 国立国会図書館が提供する検索サービス:
http://iss.ndl.go.jp
• 検索:OpenSearch, SRU/SRW
http://iss.ndl.go.jp/api/opensearch?title=we
b%20api&creator=%E9%AB%98%E4%B9%
85&format=atom
http://iss.ndl.go.jp/api/sru?operation=searc
hRetrieve&query=title=%22web%20api%22
&recordPacking=xml&recordSchema=dcndl
• データ取得系:OAI-PMH, SRU/SRW
DCNDL (NDL版Dublin Core (XML))
35
40. そのほかのWeb API事例
• 興味深い事例としてはAmazon Web
ServicesやTwitterなどのように主要な商用
サービスにおけるWeb APIの展開例がある
• これらでは、自身のサービスをWeb API経由
で取得、操作できる
Twitterクライアントの操作:ツイートの投稿、
編集、リプライなど(BOT)
Amazonにおけるインフラ系ツールをWeb APIか
ら操作:サーバインフラの増強、ツールの追加
40
42. Web APIの応用例
(マッシュアップ)
• Web APIの典型的な応用例(アプリケー
ション)
• マッシュアップとは? (Mashup)
複数の機能を組み合わせて、可視化したり、
異なる機能同士を有機的につなげて利用する
Web APIの応用アプリケーションは、Web
API機能をほかの何かと組み合わせて扱うこ
とが多いことから「マッシュアップ」と呼ば
れる
42
50. 論文ったーの処理の流れ
50
青葉 11時 加古 並んで
る 物販 今から 昨日の 完
売 朝から 久しぶりに 引
い あたり >RT 二度寝 運
動会 買いに いい天気 掃
除 待機 ゞ 改二 て良かっ
た ありがとー だよー 来
週 暑い 方向 天気 到
着 晴れて 休日 行ってく
る 昨日は 結局 相変わら
ず地元 着いた た気がす
る っぽい 羨ましい 今月
buzztter (RSS)
検索クエリ発行
論文データ
ベース
(CiNii)検索結果
集計
対象論文選定
ツイート投稿
Twitter
57. Web APIと標準化
• 様々な標準規格化への欲望
• 多様なサービス vs ニーズ vs 標準化
• 標準化の難しさ vs 標準の乱立
• 検索・データ取得用Web API標準の例
SRU, OpenSearch, OAI-PMH, OpenURL,
Sparql, …
57
59. XMLとは?
• タグ要素とその内容テキストを指定し、機械的に読み取り可能
とする形式
<親要素>
<要素 属性=“値”></要素>
</親要素>
• なぜXMLか?
階層関係(木構造が入れ子になったデータ)を扱いやすい
多言語対応(Unicode):日本語はじめ、多くの言語に対応
ほとんどのプログラミング環境に対応するライブラリが完備され
ていて、簡単に利用できる
• XMLの欠点
データ量が増える(タグ要素を入れ込む分)
• XMLの利点
メタ言語:様々な形式の新しい種類の言語を規定できる
• XHTML, HTML5, SVG, RSS, Atom, …
59
61. RSSフィードとは?
• RSS (Rich Site Summary, または RDF Site Summary)
サイトの更新情報がXML形式として、タイトル、作者、概要テキスト、
作成日時などを表すデータ形式
• RSSフィードとは
RSS形式で配信すること
最新のお知らせ記事などを配信するのに、有用
• 例:カレントアウェアネスポータル
その他、検索結果を配信するのに使われることも
• 例:CiNii検索
• 機械的にアクセスし、更新ごとの差分を得るのに使うのが普通
RSSリーダー
• たいていの場合、XML形式を自動で出力するツールが使われている
ブログしかり、図書館システムしかり、、、
• ユーザーの立場としては、どのURLにアクセスしたら、RSS形式の
データが取得できるかだけ、意識していればよい
61
63. RSSフィード(RSS feed)とは
• Webサイトの更新
情報をRSS形式で配
信すること、(また
はRSS形式で配信し
たデータのこと)
• 当該Webサイトの
内容が更新されるた
びに、RSSも更新さ
れるようにする
RSSを定期的に見れ
ば、更新状況がわか
る状況を作る
63
あるWebサイト
http://example.jp/
お知らせA
作成日:2010/12/1
お知らせB
作成日:2010/12/3
このサイトのRSS
http://example.jp/rss
お知らせA, 作成日:2010/12/1
お知らせB, 作成日:2010/12/3
お知らせC, 作成日:2010/12/5
お知らせD, 作成日:2010/12/7
お知らせC
作成日:2010/12/5
お知らせD
作成日:2010/12/7
67. RSSリーダー
• 定期的にRSSをチェック
して、差分をみて更新
を確かめるツール
あるWebサイト
http://example.jp/
お知らせA
作成日:2010/12/1
お知らせB
作成日:2010/12/2
このサイトのRSS
http://example.jp/rss
お知らせA, 作成日:2010/12/1
お知らせB, 作成日:2010/12/2
お知らせC, 作成日:2010/12/5
お知らせD, 作成日:2010/12/7
お知らせC
作成日:2010/12/5
お知らせD
作成日:2010/12/7
http://example.jp/rss
お知らせA, 作成日:2010/12/1
お知らせB, 作成日:2010/12/2
http://example.jp/rss
お知らせA, 作成日:2010/12/1
お知らせB, 作成日:2010/12/3
お知らせC, 作成日:2010/12/5
お知らせD, 作成日:2010/12/7
http://example.jp/rss
お知らせA, 作成日:2010/12/1
お知らせB, 作成日:2010/12/2
お知らせC, 作成日:2010/12/5
http://example.jp/rss
お知らせA, 作成日:2010/12/1
お知らせB, 作成日:2010/12/2
http://example.jp/rss
お知らせA, 作成日:2010/12/1
お知らせB, 作成日:2010/12/2
お知らせC, 作成日:2010/12/5
12/1と12/2に作成さ
れたお知らせA,お知
らせBがあるんだな
前とってきたのと
同じなので更新され
てないな
新しくお知らせCが
増えたな
前とってきたのと
同じなので更新され
てないな
新しくお知らせDが
増えたな
RSSリーダー
67
73. Web APIのご利益
• サービスの「プラットフォーム化」
第3者にサービス提供する方式を標準化し、
利用を促進できる
※近年の多デバイス環境下(PC, タブレット,ス
マートフォン)では、自サービスのプラットフォー
ム化が必然になってしまうという側面も…。
• サービスの多様化
Web APIにより、通常の利用形態を超えた利
用を作り出すことができる
73
75. Web APIの寿命
• Web APIの永続性はそれほど長くないことに注意が必
要
GoogleサーチAPI(2010年に終了)
Yahoo! Web検索API(2013年に終了)
Twitter(2013年に大幅な更新)
• 必然的に、マッシュアップ側の寿命に影響を与える!
• 利用する場合には
ある程度、代替サービスを念頭におく必要がある
• Youtube vs ニコニコ動画
• 提供する場合には
たとえば、検索サービスを単純に更新するだけであっても、
Web APIにおいては大きな影響を与えることとなる
最初に公開する際のリクエスト形式、データモデルの設計
75
76. Web APIの制限,認証
• Web API利用は機械可読(プログラムによる
やり取り)が前提であるため、過負荷状態に
なる危険もある
人手アクセスの数倍~数十倍
• 同時利用に制限をかけることが一般的
1時間に1000アクセスまで(カーリル)
1時間に3000アクセスまで(CiNii)
1日に100000アクセスまで(Google Maps)
• くわえて、アクセス元のユーザを識別するた
めに認証を付けることも
Twitterなど
76
77. Web APIの提供にあたって
• URLとデータモデルの決定が非常に重要
どのURLにリクエストを送ると、どんなデータが戻っ
てくるのか?
「クールなURIは変わらない」
cf. http://www.kanzaki.com/docs/Style/URI
• Web API vs データファイルの提供
数万件くらいの単純なデータなら、データファイル全
件をダウンロードできるようにしておくだけでも十分
• 逆に、データ量が膨大だったり、複雑な条件指定を行う必要が
あるものではWeb API化する恩恵も
– 「CSV最強…」by 吉本龍司
– 「Excelで扱えない規模からがビッグデータ…」by 喜連川勝
77