1 - 中川研究室

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