25
ママママママママ #1 ママママママママママママ ママママママママ ママ ママ ママ ( マ ママママママママ マママママ ) 2010 マ 4 マ 9 マ ママママママママママママママママママ

マイニング探検会 #01

Embed Size (px)

DESCRIPTION

Web APIを知ろう

Citation preview

Page 1: マイニング探検会 #01

マイニング探検会 #1

東京大学情報基盤センター学術情報研究部門 助教

清田 陽司( 兼 株式会社リッテル 上席研究

員 )

2010 年 4 月 9 日@東京大学アントレプレナープラザ会議室

Page 2: マイニング探検会 #01

素朴な疑問• そもそも、図書館の価値ってなに?– 過去の情報の蓄積と提供– 研究・調査・教育のための知的インフラ– 情報リテラシーを育てる場– 「知る権利」の保証=民主主義を支える柱– etc.

• まわりの人たちに価値をどうやって伝えるか?

Page 3: マイニング探検会 #01

Web が世界に与えたインパクト• 最初は「ハッカーのおもちゃ」• まわりの人たちを巻き込んでいくことで爆

発的に成長– 世界に新たな「知的ゲーム」を提供した– 究極の「暇つぶしツール」– 参加者の数が価値を生み出している

• 多くの人々の人生に新たな意味を与えた– ゲームの意味を問うことには意味がない!– 意味は後から生み出される

Page 4: マイニング探検会 #01

知的ゲームの提供者としての図書館

• 現在の図書館の基盤を築いたのは何か?– 誰でも情報に触れられる場を提供したこと– 膨大な情報を検索できるツールを提供したこと

価値あるゲームを社会に提供することで認められた

• Web によってかなりの部分が代替されつつある

→ 新たな知的ゲームを創造すべき時期になっている!

Page 5: マイニング探検会 #01

新たな知的ゲームを創造するために• 多くの人々を巻き込むしかけ– 組織の壁を超えた交流– エンターテインメント精神が大事

• Web がもつ価値を徹底的に利用– Web を支える「ルール」と「テクニック」を知ってお

く– プログラミングできなくても大丈夫– 実際に手を動かして体験学習

• 図書館パラダイムの再構築– ライブラリアンシップを次の世代に受け継ぐために

• ひとりひとりが新サービスのプロデューサーとしての役割を果たしていこう!

Page 6: マイニング探検会 #01

トピック案• 情報検索– Lucene, GETAssoc

• データマイニング– 相関ルール抽出、回帰

分析、機械学習、クラスタリング

• レコメンデーション– 協調フィルタリング、

プロファイル推定、…• テキスト処理– 形態素解析、構文解析、固有表現抽出、…

• 大規模データ処理– Hadoop 、 Amazon

EC2/S3 、 Google Apps Engine 、 Windows Azure

• 信頼性の向上– HDFS 、 ZooKeeper 、

…• Web インタフェース– AJAX 、 Flash 、 HTML5

、…

Page 7: マイニング探検会 #01

API (Application Programming Interface)

• OS(Windows 、 MacOS 、 Linux など ) やプログラミング言語 (C言語、 Java 、 C# など ) によって提供– OS やライブラリ内部の機能を利用できる

• API の役割– アプリケーション開発においてプログラミングの手間を省く

– システム間の連携– 抽象化 (= 人間のレベルに近づける )

• 簡潔さと柔軟性のトレードオフ– 抽象化しすぎると細かな要望に手が回らない

Page 8: マイニング探検会 #01

Web API

• API の概念を Web の世界に援用– 単に「 API 」といえば「 Web API 」

• Web サービス運営者によって提供– Web サービス内部の機能やデータを利用できる

• Web API の役割– 新たな Web サービス開発の手間を省く– Web サービス間の連携 → マッシュアップ– 抽象化

• トレードオフが存在– 簡単にするほど細かな処理ができなくなる

Page 9: マイニング探検会 #01

Web API を支える技術リソースの指定• IP アドレス• ドメイン名• URL通信プロトコル• TCP/IP ( インターネッ

ト )• HTTP / HTTPS

(cf. Z39.50)

ファイルフォーマット• XML• JSONAPIへの情報送信• SOAP• REST

Page 10: マイニング探検会 #01

URL (Uniform Resource Locater)

• インターネット上のリソースの「住所」• プロトコル+ホスト名+パス名 で構成– http://ja.wikipedia.org/wiki/Wikipedia– https://mail.google.com/mail/– ftp://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/

• ホスト名はドメイン名または IP アドレス– http://124.83.167.215/hl

Page 11: マイニング探検会 #01

HTTP (HyperText Transfer Protocol)• Web を支える基盤プロトコル (通信規約 )– ほぼすべての Web サービスは HTTP を利用– 暗号化された HTTP = HTTPS

• クライアント=サーバモデル– クライアント ( ブラウザとか ) からのリクエストを受け

て、サーバがコンテンツをクライアントに返す• いろんなコンテンツを送れる– テキスト、画像、動画、プログラム、 XML 、…

• サーバがコンテンツをどう作るかは関知せず– ディスクにしまってあるコンテンツをそのまま書き出し

てもよい (静的コンテンツ )– プログラムでコンテンツをその場で作ってしまってもよ

い ( 動的コンテンツ )

Page 12: マイニング探検会 #01

静的コンテンツの場合

URL の入力

HTTP サーバ

<html><head> <title> マイニング探検会(マイタン) - 図書館の未来を探る勉強会 -</title> </head>…

インターネット

サーバ (www.mi-tan.jp)

コンテンツの表示

GET / HTTP/1.1Host: www.mi-tan.jpUser-Agent: Mozilla/5.0…..

HTTP/1.1 200 OKDate: Tue, 06 Apr 2010 13:14:32 GMT Server: ApacheContent-Type: text/html

<html><head> <title> マイニング探検会(マイタン) - 図書館の未来を探る勉強会 -</title> </head><body class=“mainPage”>…</body>

クライアント ( ブラウザソフト )

Page 13: マイニング探検会 #01

動的コンテンツの場合

検索インデックス

検索クエリーの入力

HTTP サーバインターネット

サーバ (search.yahoo.co.jp)

コンテンツの表示

GET /search?p= マイニング探検会 &ei=UTF-8 HTTP/1.1Host: search.yahoo.co.jpUser-Agent: Mozilla/5.0

HTTP/1.1 200 OKDate: Tue, 06 Apr 2010 13:14:32 GMT Server: ApacheContent-Type: text/html

<html><head> <title> 「マイニング探検会」の検索結果 - Yahoo! 検索 </title> </head><body>…</body>

クライアント ( ブラウザソフト )

検索エンジンサーバ

Page 14: マイニング探検会 #01

HTTP リクエストのメソッド• GET– URL埋め込み形式で情報を送ることができる• http://search.yahoo.co.jp/search?p= マイニング探検

会 &ei=UTF-8

– サイズ制限あり (Internet Explorer では2083bytes)

– ブラウザから簡単に試せる• POST– さまざまなコンテンツを送ることができる• ファイルをアップロードすることも可能

– サイズ制限なし– 利用が少し面倒

Page 15: マイニング探検会 #01

XML (eXtensible Markup Language)

• マークアップ言語の規格– 電子的文書を記述する規格 SGML の後継

– 「タグ」で構造を表現できる

• 応用例– ニュースリーダー

(RSS)– 電子書籍 (Open eBook)– オフィス文書

<?xml version="1.0" encoding="UTF-8"?>< レシピ 名前 =" パン " 準備時間 ="5 分 " 調理時間 ="3時間 "> <料理 > 基本的なパン </料理 > <材料 量 ='3' 単位 =' カップ '>小麦粉 </材料 > <材料 量 ='0.25' 単位 ='オンス '> イースト </材料 > <材料 量 ='1.5' 単位 =' カップ ' 状態 ="温かい ">水</材料 > <材料 量 ="1" 単位 =" ティースプーン ">食塩 </材料> <要領 > < 手順 >全ての材料を一緒にして混ぜます。 </ 手順> < 手順 >十分にこねます。 </ 手順 > < 手順 >布で覆い、暖かい部屋で 1 時間そのままにして おきます。 </ 手順 > < 手順 > もう一度こねます。 </ 手順 > < 手順 > パン焼きの容器に入れます </ 手順 > < 手順 >布で覆い、暖かい部屋で 1 時間そのままにして おきます。 </ 手順 > < 手順 >オーブンに入れて温度を 180℃ にして 30分間 焼きます。 </ 手順 > </要領 ></ レシピ >

Page 16: マイニング探検会 #01

SOAP と RESTSOAP(Simple Object Access Protocol)• XML で記述された SOAP

メッセージを送信• 利点

– HTTP以外も利用可能 (SMTP)

– 複雑な指示が送れる• 欠点

– 利用が面倒– キャッシュ不可

REST(Representational State Transfer)• URL を情報送信の手段とし

て利用• 利点

– 簡単に利用できる– キャッシュ可能

• 欠点– HTTP に依存– あまり複雑な指示は送れな

Page 17: マイニング探検会 #01

紹介する Web API

• Amazon• Twitter• CiNii (国立情報学研究所 )• PORTA (国立国会図書館 )• レファレンス共同データベース (国立国

会図書館 )• J-Global (科学技術振興機構 )

Page 18: マイニング探検会 #01

Amazon Product Advertising API

• Amazon の商品情報を利用したサイト構築のための機能を提供– 商品検索– 検索条件による絞り込み– 商品画像の表示– 商品情報の取得– レビュー・ランキング・関連商品・販売状態などの取得

• アフィリエイトとの連携 (Amazon アソシエイト )

• サーバーサイド• SOAP または REST が

利用可能• API キーの発行が必須

http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=19

Page 19: マイニング探検会 #01

Twitter API

• Twitter のアプリケーションを作るために必要な一通りの機能を提供– タイムラインの取得– ステータスの取得– アカウント情報の取得– 発言の投稿

• 3種類の API– REST 2種類 (歴史的経緯 )

– Streaming

• GET メソッド ( メッセージ投稿など一部は POST)

• 公開ユーザのタイムライン取得以外は認証が必要

ドキュメントhttp://apiwiki.twitter.com/

利用例 (自分のタイムライン )

http://api.twitter.com/1/statuses/home_timeline.xml

Page 20: マイニング探検会 #01

CiNii API• NII論文検索の基本的な機能

を提供– ツールバーなどからの論文・著者検索

– 論文・著者詳細情報の取得– CiNii内のコンテンツへの直接リンク

• GET メソッド• REST準拠• フォーマット

– 検索 : RSS or Atom– 詳細情報 : RDF

• 認証不要

ドキュメントhttp://ci.nii.ac.jp/info/ja/if_link_receive.html

利用例 (RSS フィード )http://ci.nii.ac.jp/opensearch/search?q=

長尾真&range=0&sortorder=1&start=1&count=20&format=atom

Page 21: マイニング探検会 #01

PORTA API

• NDL PORTA コンテンツの検索とハーベスティング機能を提供

• GET メソッド /POST メソッドが混在

• REST/SOAP/Z39.50 が混在

• 認証不要

用途 プロトコル 返却形式

検索 OpenSearch XML(RSS2.0)

検索 OpenURL HTML画面

検索 SRU XML

検索 SRW XML(SOAP)

検索 Z39.50 SUTRS

データのダウンロード(ハーベスト)

OAI-PMH XML

Page 22: マイニング探検会 #01

レファレンス協同データベース API

• 詳細検索画面と同等の検索機能を提供– キーワード検索 (boolean)– 館ごとの検索指定– アクセス数ランキング

• GET メソッド• REST準拠• フォーマット– XML (独自形式 )

• 認証不要

Page 23: マイニング探検会 #01

J-GLOBAL Web API

• 4 つの基本情報を検索可能– 「文献」「科学技術用語」「科学物質」「資料」– J-GLOBAL サイトの検索結果一覧と同等レベルの情

報を取得可能• 取得可能な検索結果– HTML 形式

• あらかじめレイアウトが決まっていて簡単に実装可。– JSON 形式

• 項目ごとにデータを取得し、自由にレイアウトが可。• WebAPI キーの取得が必要

Page 24: マイニング探検会 #01

API の利用制限• API キーの発行を受けないと利用できない

ものがある• 呼び出し頻度に注意– 過度の呼び出しはサーバに負荷をかける– アクセス制限を受けることも

• 利用規約–非営利利用に制限されているもの– リンクを張ることが義務づけられているもの

(Amazon など )

Page 25: マイニング探検会 #01

Web API 提供の考え方• なぜ公開するのか?

– お互いハッピーになれるかも?

– cf. カーリルのスクレイピング

• 何を公開し、何を公開しないか?– 個人情報は NG– レコメンデーションは?

• どうやって普及させるか?– API コンテスト– アフィリエイト

• 開発者 (ベンダー含む ) との関係をどう築いていくか?

• サービスとしてどう継続していくか?

• 標準をどう作っていくか?

• 営利と非営利の境界線– 図書館と Web 書店は

どこまで連携可能か?