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.

マイニング探検会 #01

1,489 views

Published on

Web APIを知ろう

Published in: Education
  • Be the first to comment

マイニング探検会 #01

  1. 1. マイニング探検会 #1<br />東京大学情報基盤センター<br />学術情報研究部門 助教<br />清田 陽司<br />(兼 株式会社リッテル 上席研究員)<br />2010年4月9日<br />@東京大学アントレプレナープラザ会議室<br />
  2. 2. 素朴な疑問<br />そもそも、図書館の価値ってなに?<br />過去の情報の蓄積と提供<br />研究・調査・教育のための知的インフラ<br />情報リテラシーを育てる場<br />「知る権利」の保証=民主主義を支える柱<br />etc.<br />まわりの人たちに価値をどうやって伝えるか?<br />
  3. 3. Webが世界に与えたインパクト<br />最初は「ハッカーのおもちゃ」<br />まわりの人たちを巻き込んでいくことで爆発的に成長<br />世界に新たな「知的ゲーム」を提供した<br />究極の「暇つぶしツール」<br />参加者の数が価値を生み出している<br />多くの人々の人生に新たな意味を与えた<br />ゲームの意味を問うことには意味がない!<br />意味は後から生み出される<br />
  4. 4. 知的ゲームの提供者としての図書館<br />現在の図書館の基盤を築いたのは何か?<br />誰でも情報に触れられる場を提供したこと<br />膨大な情報を検索できるツールを提供したこと<br />価値あるゲームを社会に提供することで認められた<br />Webによってかなりの部分が代替されつつある<br />-> 新たな知的ゲームを創造すべき時期になっている!<br />
  5. 5. 新たな知的ゲームを創造するために<br />多くの人々を巻き込むしかけ<br />組織の壁を超えた交流<br />エンターテインメント精神が大事<br />Webがもつ価値を徹底的に利用<br />Webを支える「ルール」と「テクニック」を知っておく<br />プログラミングできなくても大丈夫<br />実際に手を動かして体験学習<br />図書館パラダイムの再構築<br />ライブラリアンシップを次の世代に受け継ぐために<br />ひとりひとりが新サービスのプロデューサーとしての役割を果たしていこう!<br />
  6. 6. トピック案<br />情報検索<br />Lucene, GETAssoc<br />データマイニング<br />相関ルール抽出、回帰分析、機械学習、クラスタリング<br />レコメンデーション<br />協調フィルタリング、プロファイル推定、…<br />テキスト処理<br />形態素解析、構文解析、固有表現抽出、…<br />大規模データ処理<br />Hadoop、Amazon EC2/S3、Google Apps Engine、Windows Azure<br />信頼性の向上<br />HDFS、ZooKeeper、…<br />Webインタフェース<br />AJAX、Flash、HTML5、…<br />
  7. 7. API (Application Programming Interface)<br />OS(Windows、MacOS、Linuxなど)やプログラミング言語(C言語、Java、C#など)によって提供<br />OSやライブラリ内部の機能を利用できる<br />APIの役割<br />アプリケーション開発においてプログラミングの手間を省く<br />システム間の連携<br />抽象化 (=人間のレベルに近づける)<br />簡潔さと柔軟性のトレードオフ<br />抽象化しすぎると細かな要望に手が回らない<br />
  8. 8. Web API<br />APIの概念をWebの世界に援用<br />単に「API」といえば「Web API」<br />Webサービス運営者によって提供<br />Webサービス内部の機能やデータを利用できる<br />Web APIの役割<br />新たなWebサービス開発の手間を省く<br />Webサービス間の連携 -> マッシュアップ<br />抽象化<br />トレードオフが存在<br />簡単にするほど細かな処理ができなくなる<br />
  9. 9. Web APIを支える技術<br />リソースの指定<br />IPアドレス<br />ドメイン名<br />URL<br />通信プロトコル<br />TCP/IP (インターネット)<br />HTTP / HTTPS<br /> (cf. Z39.50)<br />ファイルフォーマット<br />XML<br />JSON<br />APIへの情報送信<br />SOAP<br />REST<br />
  10. 10. URL (Uniform Resource Locater)<br />インターネット上のリソースの「住所」<br />プロトコル+ホスト名+パス名 で構成<br />http://ja.wikipedia.org/wiki/Wikipedia<br />https://mail.google.com/mail/<br />ftp://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/<br />ホスト名はドメイン名またはIPアドレス<br />http://124.83.167.215/hl<br />
  11. 11. HTTP(HyperText Transfer Protocol)<br />Webを支える基盤プロトコル(通信規約)<br />ほぼすべてのWebサービスはHTTPを利用<br />暗号化されたHTTP = HTTPS<br />クライアント=サーバモデル<br />クライアント(ブラウザとか)からのリクエストを受けて、サーバがコンテンツをクライアントに返す<br />いろんなコンテンツを送れる<br />テキスト、画像、動画、プログラム、XML、…<br />サーバがコンテンツをどう作るかは関知せず<br />ディスクにしまってあるコンテンツをそのまま書き出してもよい (静的コンテンツ)<br />プログラムでコンテンツをその場で作ってしまってもよい(動的コンテンツ)<br />
  12. 12. 静的コンテンツの場合<br />GET/ HTTP/1.1<br />Host: www.mi-tan.jp<br />User-Agent: Mozilla/5.0<br />…..<br />サーバ (www.mi-tan.jp)<br />クライアント (ブラウザソフト)<br />URLの入力<br />インターネット<br />HTTPサーバ<br />コンテンツの表示<br />HTTP/1.1 200 OK<br />Date: Tue, 06 Apr 2010 13:14:32 GMT <br />Server: Apache<br />Content-Type: text/html<br /><html><br /><head><title>マイニング探検会(マイタン) - 図書館の未来を探る勉強会 -</title> </head><br /><body class=“mainPage”><br />…<br /></body><br /><html><br /><head><title>マイニング探検会(マイタン) - 図書館の未来を探る勉強会 -</title> </head><br />…<br />
  13. 13. 動的コンテンツの場合<br />GET/search?p=マイニング探検会&ei=UTF-8 HTTP/1.1<br />Host: search.yahoo.co.jp<br />User-Agent: Mozilla/5.0<br />サーバ (search.yahoo.co.jp)<br />クライアント (ブラウザソフト)<br />検索クエリーの入力<br />インターネット<br />HTTPサーバ<br />コンテンツの表示<br />HTTP/1.1 200 OK<br />Date: Tue, 06 Apr 2010 13:14:32 GMT <br />Server: Apache<br />Content-Type: text/html<br /><html><br /><head><title>「マイニング探検会」の検索結果 - Yahoo!検索</title> </head><br /><body><br />…<br /></body><br />検索エンジンサーバ<br />検索インデックス<br />
  14. 14. HTTPリクエストのメソッド<br />GET<br />URL埋め込み形式で情報を送ることができる<br />http://search.yahoo.co.jp/search?p=マイニング探検会&ei=UTF-8<br />サイズ制限あり (Internet Explorerでは2083bytes)<br />ブラウザから簡単に試せる<br />POST<br />さまざまなコンテンツを送ることができる<br />ファイルをアップロードすることも可能<br />サイズ制限なし<br />利用が少し面倒<br />
  15. 15. XML (eXtensible Markup Language)<br /><?xml version="1.0" encoding="UTF-8"?><br /><レシピ 名前="パン" 準備時間="5分" 調理時間="3時間"><br /> <料理>基本的なパン</料理> <br /> <材料 量='3' 単位='カップ'>小麦粉</材料> <br /> <材料 量='0.25' 単位='オンス'>イースト</材料> <br /> <材料 量='1.5' 単位='カップ' 状態="温かい">水</材料><br /> <材料 量="1" 単位="ティースプーン">食塩</材料><br /> <要領> <br /> <手順>全ての材料を一緒にして混ぜます。</手順><br /> <手順>十分にこねます。</手順><br /> <手順>布で覆い、暖かい部屋で1時間そのままにして<br />おきます。<br /> </手順><br /> <手順>もう一度こねます。</手順><br /> <手順>パン焼きの容器に入れます</手順><br /> <手順>布で覆い、暖かい部屋で1時間そのままにして<br />おきます。<br /> </手順><br /> <手順>オーブンに入れて温度を180℃にして30分間<br />焼きます。<br /> </手順> <br /> </要領><br /></レシピ><br />マークアップ言語の規格<br />電子的文書を記述する規格SGMLの後継<br />「タグ」で構造を表現できる<br />応用例<br />ニュースリーダー (RSS)<br />電子書籍 (Open eBook)<br />オフィス文書<br />
  16. 16. SOAPとREST<br />SOAP<br />(Simple Object Access Protocol)<br />REST<br />(Representational State Transfer)<br />XMLで記述されたSOAPメッセージを送信<br />利点<br />HTTP以外も利用可能 (SMTP)<br />複雑な指示が送れる<br />欠点<br />利用が面倒<br />キャッシュ不可<br />URLを情報送信の手段として利用<br />利点<br />簡単に利用できる<br />キャッシュ可能<br />欠点<br />HTTPに依存<br />あまり複雑な指示は送れない<br />
  17. 17. 紹介するWeb API<br />Amazon<br />Twitter<br />CiNii (国立情報学研究所)<br />PORTA (国立国会図書館)<br />レファレンス共同データベース (国立国会図書館)<br />J-Global (科学技術振興機構)<br />
  18. 18. Amazon Product Advertising API <br />Amazonの商品情報を利用したサイト構築のための機能を提供<br />商品検索<br />検索条件による絞り込み<br />商品画像の表示<br />商品情報の取得<br />レビュー・ランキング・関連商品・販売状態などの取得<br />アフィリエイトとの連携 (Amazonアソシエイト)<br />サーバーサイド<br />SOAPまたはRESTが利用可能<br />APIキーの発行が必須<br />http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=19<br />
  19. 19. Twitter API<br />Twitterのアプリケーションを作るために必要な一通りの機能を提供<br />タイムラインの取得<br />ステータスの取得<br />アカウント情報の取得<br />発言の投稿<br />3種類のAPI<br />REST 2種類 (歴史的経緯)<br />Streaming<br />GETメソッド (メッセージ投稿など一部はPOST)<br />公開ユーザのタイムライン取得以外は認証が必要<br />ドキュメント<br />http://apiwiki.twitter.com/<br />利用例 (自分のタイムライン)<br />http://api.twitter.com/1/statuses/home_timeline.xml<br />
  20. 20. CiNii API<br />NII論文検索の基本的な機能を提供<br />ツールバーなどからの論文・著者検索<br />論文・著者詳細情報の取得<br />CiNii内のコンテンツへの直接リンク<br />GETメソッド<br />REST準拠<br />フォーマット<br />検索: RSS or Atom<br />詳細情報: RDF<br />認証不要<br />ドキュメント<br />http://ci.nii.ac.jp/info/ja/if_link_receive.html<br />利用例 (RSSフィード)<br />http://ci.nii.ac.jp/opensearch/search?q=長尾真&range=0&sortorder=1&start=1&count=20&format=atom<br />
  21. 21. PORTA API<br />NDL PORTAコンテンツの検索とハーベスティング機能を提供<br />GETメソッド/POSTメソッドが混在<br />REST/SOAP/Z39.50が混在<br />認証不要<br />
  22. 22. レファレンス協同データベースAPI<br />詳細検索画面と同等の検索機能を提供<br />キーワード検索 (boolean)<br />館ごとの検索指定<br />アクセス数ランキング<br />GETメソッド<br />REST準拠<br />フォーマット<br />XML (独自形式)<br />認証不要<br />
  23. 23. J-GLOBAL Web API<br />4つの基本情報を検索可能<br />「文献」「科学技術用語」「科学物質」「資料」<br />J-GLOBAL サイトの検索結果一覧と同等レベルの情報を取得可能<br />取得可能な検索結果<br />HTML形式<br />あらかじめレイアウトが決まっていて簡単に実装可。<br />JSON形式<br />項目ごとにデータを取得し、自由にレイアウトが可。<br />WebAPIキーの取得が必要<br />
  24. 24. APIの利用制限<br />APIキーの発行を受けないと利用できないものがある<br />呼び出し頻度に注意<br />過度の呼び出しはサーバに負荷をかける<br />アクセス制限を受けることも<br />利用規約<br />非営利利用に制限されているもの<br />リンクを張ることが義務づけられているもの(Amazonなど)<br />
  25. 25. Web API提供の考え方<br />なぜ公開するのか?<br />お互いハッピーになれるかも?<br />cf. カーリルのスクレイピング<br />何を公開し、何を公開しないか?<br />個人情報はNG<br />レコメンデーションは?<br />どうやって普及させるか?<br />APIコンテスト<br />アフィリエイト<br />開発者(ベンダー含む)との関係をどう築いていくか?<br />サービスとしてどう継続していくか?<br />標準をどう作っていくか?<br />営利と非営利の境界線<br />図書館とWeb書店はどこまで連携可能か?<br />

×