Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Web API入門

21.422 visualizaciones

Publicado el

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

Publicado en: Educación
  • Sé el primero en comentar

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

×