Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Web API入門

21,204 views

Published on

2015年6月6日(土)
第23回大図研オープンカレッジ「大学図書館員のためのWeb API入門」
http://d.hatena.ne.jp/dtk-doc/20150408/1428464462

Published in: Education
  • Be the first to comment

Web API入門

  1. 1. Web API入門 高久雅生 (筑波大学図書館情報メディア系) 2015年6月6日(土) 大図研オープンカレッジ 1
  2. 2. 本日のお品書き • (自己紹介) • Web APIとは何か?  Web APIの事例 • Web APIの応用:マッシュアップ  マッシュアップ事例 • Web APIの課題 2
  3. 3. はじめに:自己紹介 • 高久雅生(たかく まさお)  筑波大学図書館情報メディア系 • 前職:物質・材料研究機構エンジニア • 前々職:国立情報学研究所ポスドク研究員 • 研究分野  情報検索、電子図書館、情報探索行動、学術情報 流通、専門図書館 • その他  情報知識学会理事、日本図書館情報学会研究委員、 Code4Lib JAPANコアメンバー、saveMLAK技術 チームなど 3
  4. 4. 宣伝:Code4Lib JAPAN • 北米を中心とするシステムライブラリア ンたちのコミュニティCode4Libの日本版 「Code4Lib JAPAN」 • 年に一回カンファレンスを実施 – 2013@南三陸町 – 2014@鯖江市 – 2015@東京 • 日時:9月6日(土)~7日(日) • 会場:リクルート本社 4
  5. 5. 参考:「Web APIの過去・現在・未来」 5 高久雅生. Web APIの過去・現在・未来(特集: Web API 活用術). 情報の科学と技術. 2014, Vol. 64, No. 5, p.162-169.
  6. 6. WEB API とは? What is Web API? 6
  7. 7. • ウェブ上で他のサービスを呼び出す方式、 取り決め  標準的なデータやサービスの提供を行う手法 • 具体的には:  ウェブを介して「要求(リクエスト)」を送って、 サーバが要求された処理をして「結果(レスポン ス)」を送り返す仕組み  リクエストはREST、レスポンスはXMLやJSONであ ることが多い 7 Web APIとは?
  8. 8. Web APIとは?(概念図) 8 Webサーバ Internet リクエスト HTTP通信 レスポンス HTTP通信 例:ある著者が書 いた書籍の一覧 が欲しい 例:検索結果として、 書籍の詳細リストを 返す
  9. 9. Internet • どのような形式の「要求(リクエスト)」か? • どのような形式の「結果(レスポンス)」か? を公開すること  そうすることで利用方法がわかるようになる 9 Web APIの公開とは? Webサーバ リクエスト HTTP通信 レスポンス HTTP通信 例:ある著者が書 いた書籍の一覧 が欲しい 例:検索結果として、 書籍の詳細リストを 返す
  10. 10. Webとは? 10
  11. 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
  12. 12. ティム・バーナーズ=リー (Tim Berners-Lee) 12Knight Foundation (2008) http://www.flickr.com/photos/knightfoundation/2467553359/
  13. 13. Webの3要素 • HTTP, URL, HTMLの3つの枠組みを用い たWebの実現! • HTTPレイヤでのデータ転送とドキュメン トフォーマット指定 • URI指定によるリンクを通じたハイパーメ ディアの実現 13
  14. 14. Internet HTTPとは? • HyperText Transfer Protocol  基本的なWebサーバとのやり取りを行う方式 GET /index.html HTTP/1.0 14 Webサーバ リクエスト HTTP通信 レスポンス HTTP通信 トップページの 情報が欲しい トップページのHTMLファイ ルをデータとして返す
  15. 15. URLとは? • URL (Universal Resource Locator) • Web上でのアドレスを指し示すアドレス(識 別子)として機能する http://ci.nii.ac.jp/search?q=web+api 15 サーバのアドレス サーバ内で の場所 ページの表示に必要なパラメータ パラメータ名:q パラメータ値:web+api
  16. 16. APIとは? • Application Programming Interface • アプリケーションソフトウェアの開発に あたって使われる、標準的なモジュール 群、その利用法  API = 開発環境における標準  典型的には、特定のOS環境のソフトウェアは 共通する標準APIを用いて開発される • Windows • Apple iOS 16
  17. 17. APIとは? (2) 17
  18. 18. APIとは? (3) 18
  19. 19. Web APIとは何か? • Web + API = Web API • ウェブ上で他のサービスを呼び出す方式、 取り決め  標準的なデータやサービスの提供を行う手法 19 クライアント プログラム Web API 提供サーバ プログラム インターネット データ (XML, JSON 等) リクエスト レスポンス
  20. 20. Web APIの歴史 • インターネット普及前には…  そもそも、同一環境(計算機やOS)同士で通信 する仕組みはある程度必要  遠隔のサービスを呼び出す仕掛け • ウェブ以前には:RPC(Remote Procedure Call)  オープン環境においても、通信コマンドやデータ 形式の標準化(分野ごとに) • これらの方式を受け継いで、Web上でも行う ための手段  SOAP方式 …一般的にはさほど普及しなかった …はっきり言って面倒くさい 20
  21. 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
  22. 22. 実際のWeb APIのやり取り 22
  23. 23. 23http://ci.nii.ac.jp/opensearch/search?q=%E5%9B%B3%E6%9B%B8%E9%A4%A8&format=atom
  24. 24. 2つのやり取りの方式 • SOAP方式  呼び出すパラメータ類をXML形式のデータにまと め、それを受け渡す方式  W3Cが規格化  企業による初期のWeb API提供形態 • REST方式  呼び出すパラメータ類はURL内のクエリとして発 行し、データ結果のみを受けとる方式  ブラウザからも簡単に呼び出したり、テストした りできるため、今ではこちらが主流に 24
  25. 25. RESTとは • Webの基本的なやりとり、コンテンツの取得(GET)、 更新(POST)といったやりとりをまとめたお約束 • ウェブAPIとの関連では:  コンテンツの取得はGETメソッドを使う  コンテンツの更新はPOSTメソッドを使う といった、ブラウザとウェブサーバのやり取りの仕方を指す。 • RESTの範囲を外れる例:  データの取得にPOSTを使ったり、クッキーを前提とした ページ遷移を必要とするサービス • 要は、GETリクエストとパラメータによって、必要な データを取得する仕組み • 詳細は以下の書籍を参考のこと:  山本陽平. 「Webを支える技術」. 技術評論社, 2010, 377p. (ISBN 978-4-7741-4204-3) 25
  26. 26. URLとWeb APIリクエストの関係 • Web APIにおいてはURLが基本的な単位 となって、それに対する「操作」(処 理)がやり取りを決める  URLに様々なパラメータを与える • 例: http://ci.nii.ac.jp/opensearch/search? q=図書館& format=atom& sort=7 26
  27. 27. URLとパラメータ • Web APIのサービス単位で異なる • CiNii Articlesの場合  q=クエリ  format=データ形式  sort=ソート方式 • 詳細はヘルプを参照… 27
  28. 28. 「CiNii Articles論文検索の OpenSearch」ヘルプより 28 http://support.nii.ac.jp/ja/cia/api/a_opensearch
  29. 29. WEB APIの事例 Examples of Web APIs 29
  30. 30. Web APIの種類 • 様々なサービスがWeb APIとして提供  たとえば、手元で使ったことがあるものだけ でも、書籍検索、論文検索、画像検索、地図 情報、音声認識、顔認識、などなど…  Web APIの紹介サイトProgrammable-Web には600近いカテゴリが用意され、13,000を 超えるWeb APIサービスが紹介されている • http://www.programmableweb.com/category 30
  31. 31. Web APIの事例紹介 • CiNii (Articles/Books) • NDLサーチ • カーリル • (Google Maps) • (Amazon) 31
  32. 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
  33. 33. CiNii Articles (2) 33 http://ci.nii.ac.jp/opensearch/search?q=web%20api &author=Takaku&format=atom
  34. 34. CiNii Articles (3) 34 http://ci.nii.ac.jp/naid/110009810692.rdf
  35. 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
  36. 36. NDLサーチ (2) 36 http://iss.ndl.go.jp/api/opensearch?title= web%20api&creator=%E9%AB%98%E4%B9 %85&format=atom
  37. 37. NDLサーチ (3) 37 http://iss.ndl.go.jp/api/sru?operation=searc hRetrieve&query=title=%22web%20api%22 &recordPacking=xml&recordSchema=dcndl
  38. 38. カーリル • カーリル社が提供する図書館横断検索 サービス  独自のWeb API • 検索・所蔵検索  http://api.calil.jp/check?isbn=978488951 0515&systemid=Tokyo_NDL • データ形式  JSON形式(独自) 38
  39. 39. カーリル (2) 39
  40. 40. そのほかのWeb API事例 • 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用 サービスにおけるWeb APIの展開例がある • これらでは、自身のサービスをWeb API経由 で取得、操作できる  Twitterクライアントの操作:ツイートの投稿、 編集、リプライなど(BOT)  Amazonにおけるインフラ系ツールをWeb APIか ら操作:サーバインフラの増強、ツールの追加 40
  41. 41. マッシュアップの事例 Examples of Mashups 41
  42. 42. Web APIの応用例 (マッシュアップ) • Web APIの典型的な応用例(アプリケー ション) • マッシュアップとは? (Mashup)  複数の機能を組み合わせて、可視化したり、 異なる機能同士を有機的につなげて利用する  Web APIの応用アプリケーションは、Web API機能をほかの何かと組み合わせて扱うこ とが多いことから「マッシュアップ」と呼ば れる 42
  43. 43. 最初期のマッシュアップ • HousingMaps (2005年)  Google Maps + Craigslist 43
  44. 44. マッシュアップの種類 • (付加価値サービス) • マッシュアップ(Mashup)  サーバサイド型マッシュアップ  Ajax型マッシュアップ • クライアントサイド  データ集約型マッシュアップ • ハーベスト型 44
  45. 45. サーバサイド型マッシュアップ • 最も古典的なタイプの応用例 • 様々な類型がある  ひとつだけでなく、複数のサービスを組み合 わせる  Ajax型との組み合わせも 45
  46. 46. サーバサイド型マッシュアップ (概要図) 46 マッシュアップ プログラム ①リクエスト ④レスポンス インターネット Web ページ (HTML) Web API 提供サーバ プログラム ②リクエスト ③レスポンス データ (XML, JSON等) ブラウザ
  47. 47. ふわっと関連検索 47 http://fuwat.to/cinii
  48. 48. ふわっと関連検索での処理の流れ 48 リクエスト 論文 Webページ ? テキスト ふわっと関連 検索 本文抽出 特徴語抽出 検索クエリ発行 論文データ ベース (CiNii)類似度計算 検索結果併合 レスポンス
  49. 49. 論文ったー 49 https://twitter.com/ronbuntter
  50. 50. 論文ったーの処理の流れ 50 青葉 11時 加古 並んで る 物販 今から 昨日の 完 売 朝から 久しぶりに 引 い あたり >RT 二度寝 運 動会 買いに いい天気 掃 除 待機 ゞ 改二 て良かっ た ありがとー だよー 来 週 暑い 方向 天気 到 着 晴れて 休日 行ってく る 昨日は 結局 相変わら ず地元 着いた た気がす る っぽい 羨ましい 今月 buzztter (RSS) 検索クエリ発行 論文データ ベース (CiNii)検索結果 集計 対象論文選定 ツイート投稿 Twitter
  51. 51. Ajax型マッシュアップ • ブラウザ上で実行されるJavaScriptを主体 としたアプリケーション  サーバ側でまとめて実行された結果がかえっ てくるのではなく、個別のWeb APIへのリク エストがひとつずつ実行された分ごとに帰っ てくるため、見た目の実行時間を早める利点 がある 51
  52. 52. Ajax型マッシュアップ(概要図) 52 マッシュアップ プログラム ①リクエスト ②レスポンス インターネット Web ページ HTML + JavaScript Web API 提供サーバ プログラム ④レスポンス データ (XML, JSON等) ブラウザ ③リクエスト
  53. 53. カーリル 53 https://calil.jp/search?q=%E6%83%85%E5%A0 %B1%E7%A7%91%E5%AD%A6%E6%8A%80%E 8%A1%93%E5%8D%94%E4%BC%9A
  54. 54. データ集約型マッシュアップ • Web APIを通じてデータ収集し活用でき るようにしたマッシュアップサービス • RSSリーダーなどはこの形態が多い • 機関リポジトリなどにおけるメタデータ ハーベスティング  複数のRSSサイト → RSSフィード閲覧サー ビス  複数の機関リポジトリ → 論文の横断検索 サービス 54
  55. 55. JAIRO機関リポジトリ横断検索 サービス 55 http://jairo.nii.ac.jp/
  56. 56. WEB APIとデータ形式 Data Formats and Web APIs 56
  57. 57. Web APIと標準化 • 様々な標準規格化への欲望 • 多様なサービス vs ニーズ vs 標準化 • 標準化の難しさ vs 標準の乱立 • 検索・データ取得用Web API標準の例  SRU, OpenSearch, OAI-PMH, OpenURL, Sparql, … 57
  58. 58. データ形式と標準化 • Web APIにおいては、基本的には、リク エストとレスポンスの2つの標準化がある • レスポンス:機械可読なデータ形式 • データ形式:  XML?  JSON?  TSV? 58
  59. 59. XMLとは? • タグ要素とその内容テキストを指定し、機械的に読み取り可能 とする形式  <親要素> <要素 属性=“値”></要素> </親要素> • なぜXMLか?  階層関係(木構造が入れ子になったデータ)を扱いやすい  多言語対応(Unicode):日本語はじめ、多くの言語に対応  ほとんどのプログラミング環境に対応するライブラリが完備され ていて、簡単に利用できる • XMLの欠点  データ量が増える(タグ要素を入れ込む分) • XMLの利点  メタ言語:様々な形式の新しい種類の言語を規定できる • XHTML, HTML5, SVG, RSS, Atom, … 59
  60. 60. JSONとは? • ブラウザ上で動作するJavaScript言語が標 準対応する形式  XMLの複雑でデータ量が多くなる欠点を、タ グを使わず、より簡易に書けるようにした データ形式 {“著者”: [ “高久雅生” ], “タイトル”: “Web APIの過去・現在・未来” } 60
  61. 61. RSSフィードとは? • RSS (Rich Site Summary, または RDF Site Summary)  サイトの更新情報がXML形式として、タイトル、作者、概要テキスト、 作成日時などを表すデータ形式 • RSSフィードとは  RSS形式で配信すること  最新のお知らせ記事などを配信するのに、有用 • 例:カレントアウェアネスポータル  その他、検索結果を配信するのに使われることも • 例:CiNii検索 • 機械的にアクセスし、更新ごとの差分を得るのに使うのが普通  RSSリーダー • たいていの場合、XML形式を自動で出力するツールが使われている  ブログしかり、図書館システムしかり、、、 • ユーザーの立場としては、どのURLにアクセスしたら、RSS形式の データが取得できるかだけ、意識していればよい 61
  62. 62. RSSフィードとは? • サイトの更新情報(各Webページのタイトル、 作者、概要テキスト、作成日時など)を表すデー タ形式のこと。XML形式で表現されている。 例: http://d.hatena.ne.jp/josei002-10/rss の一部 タイトル URL 概要 作者 日付 62
  63. 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
  64. 64. RSSフィードの例 • 最新のお知らせ記事、最近追加したブロ グ記事などを配信するのに、有用  例:朝日新聞、カレントアウェアネスポータ ル、はてなダイアリー  ブログシステムはRSSフィードに対応したシ ステムがほとんど • その他、検索結果を配信するのに使われ ることも  例:CiNii検索 64
  65. 65. カレントアウェアネス-R 65 http://current.ndl.go.jp/car
  66. 66. RSSの一例 66
  67. 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
  68. 68. RSSリーダの例 68 http://feedly.com/
  69. 69. RSS活用の例 • 自他サービスのRSSフィードを通常のウェブサ イトでも容易に利用可能。  普通のウェブページ内に数行のJavaScript指 定を入れるだけ(Google Feed API)  参考:牧野,川嶋「新着雑誌記事速報から始 めてみよう:RSS・APIを活用した図書館 サービス」日本図書館協会, 2012, 161p. 69
  70. 70. マッシュアップの例 「新着雑誌記事速報」 70 http://lib-yuki.city.yuki.lg.jp/room_ad/sokuhou/main.html
  71. 71. RSSのまとめ • サイトの更新情報を表すデータ形式のこと。 XML形式。 • サイトが更新→RSSも更新 • RSSリーダーは定期的にRSSをチェックして、 差分をみて更新を確かめるツール • 既存のRSSを加工して自館のサービスとして 提供可能  自他サービスのRSSフィードを通常のウェブサイ トでも容易に利用可能。 • RSSフィードを提供するには、URLの決定、 RSSの形式の選択、RSS更新の仕掛け 71
  72. 72. WEB APIの課題 Issues in Web APIs 72
  73. 73. Web APIのご利益 • サービスの「プラットフォーム化」  第3者にサービス提供する方式を標準化し、 利用を促進できる ※近年の多デバイス環境下(PC, タブレット,ス マートフォン)では、自サービスのプラットフォー ム化が必然になってしまうという側面も…。 • サービスの多様化  Web APIにより、通常の利用形態を超えた利 用を作り出すことができる 73
  74. 74. APIコンテスト • サービスの多様化のための具体策 • APIコンテスト  Mashup Award  CiNii APIコンテスト • ハッカソン • 「ブレインストーミングのアウトソーシ ング」 74
  75. 75. Web APIの寿命 • Web APIの永続性はそれほど長くないことに注意が必 要  GoogleサーチAPI(2010年に終了)  Yahoo! Web検索API(2013年に終了)  Twitter(2013年に大幅な更新) • 必然的に、マッシュアップ側の寿命に影響を与える! • 利用する場合には  ある程度、代替サービスを念頭におく必要がある • Youtube vs ニコニコ動画 • 提供する場合には  たとえば、検索サービスを単純に更新するだけであっても、 Web APIにおいては大きな影響を与えることとなる  最初に公開する際のリクエスト形式、データモデルの設計 75
  76. 76. Web APIの制限,認証 • Web API利用は機械可読(プログラムによる やり取り)が前提であるため、過負荷状態に なる危険もある  人手アクセスの数倍~数十倍 • 同時利用に制限をかけることが一般的  1時間に1000アクセスまで(カーリル)  1時間に3000アクセスまで(CiNii)  1日に100000アクセスまで(Google Maps) • くわえて、アクセス元のユーザを識別するた めに認証を付けることも  Twitterなど 76
  77. 77. Web APIの提供にあたって • URLとデータモデルの決定が非常に重要  どのURLにリクエストを送ると、どんなデータが戻っ てくるのか?  「クールなURIは変わらない」 cf. http://www.kanzaki.com/docs/Style/URI • Web API vs データファイルの提供  数万件くらいの単純なデータなら、データファイル全 件をダウンロードできるようにしておくだけでも十分 • 逆に、データ量が膨大だったり、複雑な条件指定を行う必要が あるものではWeb API化する恩恵も – 「CSV最強…」by 吉本龍司 – 「Excelで扱えない規模からがビッグデータ…」by 喜連川勝 77
  78. 78. まとめに代えて ~参考文献を紹介~ 78

×