web api入門

78
Web API入門 高久雅生 (筑波大学図書館情報メディア系) 2015年6月6日(土) 大図研オープンカレッジ 1

Upload: masao-takaku

Post on 08-Aug-2015

4.724 views

Category:

Education


1 download

TRANSCRIPT

Web API入門

高久雅生(筑波大学図書館情報メディア系)

2015年6月6日(土)大図研オープンカレッジ

1

本日のお品書き

bull (自己紹介)

bull Web APIとは何か

Web APIの事例

bull Web APIの応用マッシュアップ

マッシュアップ事例

bull Web APIの課題

2

はじめに自己紹介

bull 高久雅生(たかく まさお)筑波大学図書館情報メディア系

bull 前職物質材料研究機構エンジニアbull 前々職国立情報学研究所ポスドク研究員

bull 研究分野情報検索電子図書館情報探索行動学術情報

流通専門図書館

bull その他情報知識学会理事日本図書館情報学会研究委員

Code4Lib JAPANコアメンバーsaveMLAK技術チームなど

3

宣伝Code4Lib JAPAN

bull 北米を中心とするシステムライブラリアンたちのコミュニティCode4Libの日本版「Code4Lib JAPAN」

bull 年に一回カンファレンスを実施ndash 2013南三陸町

ndash 2014鯖江市

ndash 2015東京

bull 日時9月6日(土)~7日(日)

bull 会場リクルート本社

4

参考「Web APIの過去現在未来」

5

高久雅生 Web APIの過去現在未来(特集 Web API活用術)情報の科学と技術 2014 Vol 64 No 5 p162-169

WEB API とはWhat is Web API

6

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

bull 具体的には

ウェブを介して「要求(リクエスト)」を送ってサーバが要求された処理をして「結果(レスポンス)」を送り返す仕組み

リクエストはRESTレスポンスはXMLやJSONであることが多い

7

Web APIとは

Web APIとは(概念図)

8

Webサーバ

Internet

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Internet

bull どのような形式の「要求(リクエスト)」か

bull どのような形式の「結果(レスポンス)」かを公開すること

そうすることで利用方法がわかるようになる

9

Web APIの公開とは

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Webとは

10

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

本日のお品書き

bull (自己紹介)

bull Web APIとは何か

Web APIの事例

bull Web APIの応用マッシュアップ

マッシュアップ事例

bull Web APIの課題

2

はじめに自己紹介

bull 高久雅生(たかく まさお)筑波大学図書館情報メディア系

bull 前職物質材料研究機構エンジニアbull 前々職国立情報学研究所ポスドク研究員

bull 研究分野情報検索電子図書館情報探索行動学術情報

流通専門図書館

bull その他情報知識学会理事日本図書館情報学会研究委員

Code4Lib JAPANコアメンバーsaveMLAK技術チームなど

3

宣伝Code4Lib JAPAN

bull 北米を中心とするシステムライブラリアンたちのコミュニティCode4Libの日本版「Code4Lib JAPAN」

bull 年に一回カンファレンスを実施ndash 2013南三陸町

ndash 2014鯖江市

ndash 2015東京

bull 日時9月6日(土)~7日(日)

bull 会場リクルート本社

4

参考「Web APIの過去現在未来」

5

高久雅生 Web APIの過去現在未来(特集 Web API活用術)情報の科学と技術 2014 Vol 64 No 5 p162-169

WEB API とはWhat is Web API

6

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

bull 具体的には

ウェブを介して「要求(リクエスト)」を送ってサーバが要求された処理をして「結果(レスポンス)」を送り返す仕組み

リクエストはRESTレスポンスはXMLやJSONであることが多い

7

Web APIとは

Web APIとは(概念図)

8

Webサーバ

Internet

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Internet

bull どのような形式の「要求(リクエスト)」か

bull どのような形式の「結果(レスポンス)」かを公開すること

そうすることで利用方法がわかるようになる

9

Web APIの公開とは

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Webとは

10

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

はじめに自己紹介

bull 高久雅生(たかく まさお)筑波大学図書館情報メディア系

bull 前職物質材料研究機構エンジニアbull 前々職国立情報学研究所ポスドク研究員

bull 研究分野情報検索電子図書館情報探索行動学術情報

流通専門図書館

bull その他情報知識学会理事日本図書館情報学会研究委員

Code4Lib JAPANコアメンバーsaveMLAK技術チームなど

3

宣伝Code4Lib JAPAN

bull 北米を中心とするシステムライブラリアンたちのコミュニティCode4Libの日本版「Code4Lib JAPAN」

bull 年に一回カンファレンスを実施ndash 2013南三陸町

ndash 2014鯖江市

ndash 2015東京

bull 日時9月6日(土)~7日(日)

bull 会場リクルート本社

4

参考「Web APIの過去現在未来」

5

高久雅生 Web APIの過去現在未来(特集 Web API活用術)情報の科学と技術 2014 Vol 64 No 5 p162-169

WEB API とはWhat is Web API

6

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

bull 具体的には

ウェブを介して「要求(リクエスト)」を送ってサーバが要求された処理をして「結果(レスポンス)」を送り返す仕組み

リクエストはRESTレスポンスはXMLやJSONであることが多い

7

Web APIとは

Web APIとは(概念図)

8

Webサーバ

Internet

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Internet

bull どのような形式の「要求(リクエスト)」か

bull どのような形式の「結果(レスポンス)」かを公開すること

そうすることで利用方法がわかるようになる

9

Web APIの公開とは

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Webとは

10

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

宣伝Code4Lib JAPAN

bull 北米を中心とするシステムライブラリアンたちのコミュニティCode4Libの日本版「Code4Lib JAPAN」

bull 年に一回カンファレンスを実施ndash 2013南三陸町

ndash 2014鯖江市

ndash 2015東京

bull 日時9月6日(土)~7日(日)

bull 会場リクルート本社

4

参考「Web APIの過去現在未来」

5

高久雅生 Web APIの過去現在未来(特集 Web API活用術)情報の科学と技術 2014 Vol 64 No 5 p162-169

WEB API とはWhat is Web API

6

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

bull 具体的には

ウェブを介して「要求(リクエスト)」を送ってサーバが要求された処理をして「結果(レスポンス)」を送り返す仕組み

リクエストはRESTレスポンスはXMLやJSONであることが多い

7

Web APIとは

Web APIとは(概念図)

8

Webサーバ

Internet

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Internet

bull どのような形式の「要求(リクエスト)」か

bull どのような形式の「結果(レスポンス)」かを公開すること

そうすることで利用方法がわかるようになる

9

Web APIの公開とは

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Webとは

10

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

参考「Web APIの過去現在未来」

5

高久雅生 Web APIの過去現在未来(特集 Web API活用術)情報の科学と技術 2014 Vol 64 No 5 p162-169

WEB API とはWhat is Web API

6

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

bull 具体的には

ウェブを介して「要求(リクエスト)」を送ってサーバが要求された処理をして「結果(レスポンス)」を送り返す仕組み

リクエストはRESTレスポンスはXMLやJSONであることが多い

7

Web APIとは

Web APIとは(概念図)

8

Webサーバ

Internet

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Internet

bull どのような形式の「要求(リクエスト)」か

bull どのような形式の「結果(レスポンス)」かを公開すること

そうすることで利用方法がわかるようになる

9

Web APIの公開とは

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Webとは

10

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

WEB API とはWhat is Web API

6

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

bull 具体的には

ウェブを介して「要求(リクエスト)」を送ってサーバが要求された処理をして「結果(レスポンス)」を送り返す仕組み

リクエストはRESTレスポンスはXMLやJSONであることが多い

7

Web APIとは

Web APIとは(概念図)

8

Webサーバ

Internet

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Internet

bull どのような形式の「要求(リクエスト)」か

bull どのような形式の「結果(レスポンス)」かを公開すること

そうすることで利用方法がわかるようになる

9

Web APIの公開とは

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Webとは

10

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

bull 具体的には

ウェブを介して「要求(リクエスト)」を送ってサーバが要求された処理をして「結果(レスポンス)」を送り返す仕組み

リクエストはRESTレスポンスはXMLやJSONであることが多い

7

Web APIとは

Web APIとは(概念図)

8

Webサーバ

Internet

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Internet

bull どのような形式の「要求(リクエスト)」か

bull どのような形式の「結果(レスポンス)」かを公開すること

そうすることで利用方法がわかるようになる

9

Web APIの公開とは

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Webとは

10

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIとは(概念図)

8

Webサーバ

Internet

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Internet

bull どのような形式の「要求(リクエスト)」か

bull どのような形式の「結果(レスポンス)」かを公開すること

そうすることで利用方法がわかるようになる

9

Web APIの公開とは

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Webとは

10

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Internet

bull どのような形式の「要求(リクエスト)」か

bull どのような形式の「結果(レスポンス)」かを公開すること

そうすることで利用方法がわかるようになる

9

Web APIの公開とは

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

例ある著者が書いた書籍の一覧が欲しい

例検索結果として書籍の詳細リストを

返す

Webとは

10

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Webとは

10

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

World Wide Web

bull WWW (World Wide Web)ワールドワイドウェブ

ダブリュダブリュダブリュ

bull または単に Web (ウェブ) と称する

bull 【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

11httpscommonswikimediaorgwikiFileSpider_web_Belgium_Luc_Viatourjpg

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

ティムバーナーズ=リー(Tim Berners-Lee)

12Knight Foundation (2008) httpwwwflickrcomphotosknightfoundation2467553359

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Webの3要素

bull HTTP URL HTMLの3つの枠組みを用いたWebの実現

bull HTTPレイヤでのデータ転送とドキュメントフォーマット指定

bull URI指定によるリンクを通じたハイパーメディアの実現

13

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Internet

HTTPとは

bull HyperText Transfer Protocol

基本的なWebサーバとのやり取りを行う方式

GET indexhtml HTTP10

14

Webサーバ

リクエストHTTP通信

レスポンスHTTP通信

トップページの情報が欲しい

トップページのHTMLファイルをデータとして返す

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

URLとは

bull URL (Universal Resource Locator)

bull Web上でのアドレスを指し示すアドレス(識別子)として機能する

httpciniiacjpsearchq=web+api

15

サーバのアドレス サーバ内での場所

ページの表示に必要なパラメータパラメータ名qパラメータ値web+api

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

APIとは

bull Application Programming Interface

bull アプリケーションソフトウェアの開発にあたって使われる標準的なモジュール群その利用法

API = 開発環境における標準

典型的には特定のOS環境のソフトウェアは共通する標準APIを用いて開発される

bull Windows

bull Apple iOS

16

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

APIとは (2)

17

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

APIとは (3)

18

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIとは何か

bull Web + API = Web API

bull ウェブ上で他のサービスを呼び出す方式取り決め

標準的なデータやサービスの提供を行う手法

19

クライアントプログラム

Web API提供サーバプログラム

インターネット

データ(XML JSON等)

リクエスト

レスポンス

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIの歴史

bull インターネット普及前にはhellipそもそも同一環境(計算機やOS)同士で通信

する仕組みはある程度必要遠隔のサービスを呼び出す仕掛け

bull ウェブ以前にはRPC(Remote Procedure Call)

オープン環境においても通信コマンドやデータ形式の標準化(分野ごとに)

bull これらの方式を受け継いでWeb上でも行うための手段 SOAP方式

hellip一般的にはさほど普及しなかったhellipはっきり言って面倒くさい

20

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIの歴史 (2)

bull Web API別名 Web Services とも呼ばれるbull 2002年頃から一般的に使われ始める

Amazon Googleなどが代表例

bull きっかけはWeb 20 20052006年頃に爆発的に流行 当時に流行っていて先進的なサービスをまとめた用

語 その技術要素のひとつがAJAXという手法

bull 前提として必要なデータのやり取りの方式=Web API

bull Google Mapsがその代表格ndash つまりGoogle Maps APIが前提となってAJAXを実現させた

21

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

実際のWeb APIのやり取り

22

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

23httpciniiacjpopensearchsearchq=E59BB3E69BB8E9A4A8ampformat=atom

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

2つのやり取りの方式

bull SOAP方式呼び出すパラメータ類をXML形式のデータにまと

めそれを受け渡す方式

W3Cが規格化

企業による初期のWeb API提供形態

bull REST方式呼び出すパラメータ類はURL内のクエリとして発

行しデータ結果のみを受けとる方式

ブラウザからも簡単に呼び出したりテストしたりできるため今ではこちらが主流に

24

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

RESTとはbull Webの基本的なやりとりコンテンツの取得(GET)

更新(POST)といったやりとりをまとめたお約束bull ウェブAPIとの関連では

コンテンツの取得はGETメソッドを使う コンテンツの更新はPOSTメソッドを使うといったブラウザとウェブサーバのやり取りの仕方を指す

bull RESTの範囲を外れる例 データの取得にPOSTを使ったりクッキーを前提とした

ページ遷移を必要とするサービス

bull 要はGETリクエストとパラメータによって必要なデータを取得する仕組み

bull 詳細は以下の書籍を参考のこと 山本陽平 「Webを支える技術」 技術評論社 2010

377p (ISBN 978-4-7741-4204-3)25

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

URLとWeb APIリクエストの関係

bull Web APIにおいてはURLが基本的な単位となってそれに対する「操作」(処理)がやり取りを決める

URLに様々なパラメータを与える

bull 例

httpciniiacjpopensearchsearchq=図書館ampformat=atomampsort=7

26

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

URLとパラメータ

bull Web APIのサービス単位で異なる

bull CiNii Articlesの場合

q=クエリ

format=データ形式

sort=ソート方式

bull 詳細はヘルプを参照hellip

27

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

「CiNii Articles論文検索のOpenSearch」ヘルプより

28httpsupportniiacjpjaciaapia_opensearch

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

WEB APIの事例Examples of Web APIs

29

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIの種類

bull 様々なサービスがWeb APIとして提供

たとえば手元で使ったことがあるものだけでも書籍検索論文検索画像検索地図情報音声認識顔認識などなどhellip

Web APIの紹介サイトProgrammable-Webには600近いカテゴリが用意され13000を超えるWeb APIサービスが紹介されている

bull httpwwwprogrammablewebcomcategory

30

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIの事例紹介

bull CiNii (ArticlesBooks)

bull NDLサーチ

bull カーリル

bull (Google Maps)

bull (Amazon)

31

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

CiNii Articles

bull 国立情報学研究所が提供する日本の論文検索サービス httpciniiacjp

bull 検索OpenSearch httpciniiacjpopensearchsearchq=web

20apiampauthor=Takakuampformat=atom検索条件をパラメータとしてやり取りする検索結果はAtom形式(XML)やJSON形式等を

選択可能

bull 詳細レコードRDF httpciniiacjpnaid110009810692rdf詳細レコードのデータをRDF形式として返す

32

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

CiNii Articles (2)

33

httpciniiacjpopensearchsearchq=web20apiampauthor=Takakuampformat=atom

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

CiNii Articles (3)

34httpciniiacjpnaid110009810692rdf

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

NDLサーチ

bull 国立国会図書館が提供する検索サービス httpissndlgojp

bull 検索OpenSearch SRUSRW httpissndlgojpapiopensearchtitle=we

b20apiampcreator=E9AB98E4B985ampformat=atom

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

bull データ取得系OAI-PMH SRUSRWDCNDL (NDL版Dublin Core (XML))

35

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

NDLサーチ (2)

36

httpissndlgojpapiopensearchtitle=web20apiampcreator=E9AB98E4B985ampformat=atom

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

NDLサーチ (3)

37

httpissndlgojpapisruoperation=searchRetrieveampquery=title=22web20api22amprecordPacking=xmlamprecordSchema=dcndl

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

カーリル

bull カーリル社が提供する図書館横断検索サービス

独自のWeb API

bull 検索所蔵検索

httpapicaliljpcheckisbn=9784889510515ampsystemid=Tokyo_NDL

bull データ形式

JSON形式(独自)

38

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

カーリル (2)

39

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

そのほかのWeb API事例

bull 興味深い事例としてはAmazon Web ServicesやTwitterなどのように主要な商用サービスにおけるWeb APIの展開例がある

bull これらでは自身のサービスをWeb API経由で取得操作できる

Twitterクライアントの操作ツイートの投稿編集リプライなど(BOT)

Amazonにおけるインフラ系ツールをWeb APIから操作サーバインフラの増強ツールの追加

40

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

マッシュアップの事例Examples of Mashups

41

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIの応用例(マッシュアップ)

bull Web APIの典型的な応用例(アプリケーション)

bull マッシュアップとは (Mashup)

複数の機能を組み合わせて可視化したり異なる機能同士を有機的につなげて利用する

Web APIの応用アプリケーションはWebAPI機能をほかの何かと組み合わせて扱うことが多いことから「マッシュアップ」と呼ばれる

42

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

最初期のマッシュアップ

bull HousingMaps (2005年)

Google Maps + Craigslist

43

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

マッシュアップの種類

bull (付加価値サービス)

bull マッシュアップ(Mashup)

サーバサイド型マッシュアップ

Ajax型マッシュアップ

bull クライアントサイド

データ集約型マッシュアップ

bull ハーベスト型

44

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

サーバサイド型マッシュアップ

bull 最も古典的なタイプの応用例

bull 様々な類型がある

ひとつだけでなく複数のサービスを組み合わせる

Ajax型との組み合わせも

45

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

サーバサイド型マッシュアップ(概要図)

46

マッシュアッププログラム

①リクエスト

④レスポンス

インターネット

Webページ(HTML)

Web API提供サーバプログラム

②リクエスト

③レスポンス

データ(XML

JSON等)

ブラウザ

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

ふわっと関連検索

47

httpfuwattocinii

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

ふわっと関連検索での処理の流れ

48

リクエスト

論文

Webページ

テキスト

ふわっと関連検索

本文抽出

特徴語抽出

検索クエリ発行論文データベース(CiNii)類似度計算

検索結果併合

レスポンス

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

論文ったー

49httpstwittercomronbuntter

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

論文ったーの処理の流れ

50

青葉 11時 加古 並んでる 物販 今から 昨日の 完売 朝から 久しぶりに 引い あたり >RT 二度寝 運動会 買いに いい天気 掃除 待機 ゞ 改二 て良かった ありがとー だよー 来週 暑い 方向 天気 到着 晴れて 休日 行ってくる 昨日は 結局 相変わらず地元 着いた た気がする っぽい 羨ましい 今月

buzztter (RSS)

検索クエリ発行論文データベース(CiNii)検索結果

集計

対象論文選定

ツイート投稿

Twitter

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Ajax型マッシュアップ

bull ブラウザ上で実行されるJavaScriptを主体としたアプリケーション

サーバ側でまとめて実行された結果がかえってくるのではなく個別のWeb APIへのリクエストがひとつずつ実行された分ごとに帰ってくるため見た目の実行時間を早める利点がある

51

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Ajax型マッシュアップ(概要図)

52

マッシュアッププログラム

①リクエスト

②レスポンス

インターネット

WebページHTML

+JavaScript

Web API提供サーバプログラム

④レスポンス

データ(XML

JSON等)

ブラウザ

③リクエスト

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

カーリル

53

httpscaliljpsearchq=E68385E5A0B1E7A791E5ADA6E68A80E8A193E58D94E4BC9A

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

データ集約型マッシュアップ

bull Web APIを通じてデータ収集し活用できるようにしたマッシュアップサービス

bull RSSリーダーなどはこの形態が多い

bull 機関リポジトリなどにおけるメタデータハーベスティング複数のRSSサイト rarr RSSフィード閲覧サー

ビス

複数の機関リポジトリ rarr 論文の横断検索サービス

54

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

JAIRO機関リポジトリ横断検索サービス

55

httpjaironiiacjp

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

WEB APIとデータ形式Data Formats and Web APIs

56

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIと標準化

bull 様々な標準規格化への欲望

bull 多様なサービス vs ニーズ vs 標準化

bull 標準化の難しさ vs 標準の乱立

bull 検索データ取得用Web API標準の例

SRU OpenSearch OAI-PMH OpenURL Sparql hellip

57

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

データ形式と標準化

bull Web APIにおいては基本的にはリクエストとレスポンスの2つの標準化がある

bull レスポンス機械可読なデータ形式

bull データ形式

XML

JSON

TSV

58

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

XMLとはbull タグ要素とその内容テキストを指定し機械的に読み取り可能

とする形式 lt親要素gt

lt要素 属性=ldquo値rdquogtlt要素gtlt親要素gt

bull なぜXMLか 階層関係(木構造が入れ子になったデータ)を扱いやすい 多言語対応(Unicode)日本語はじめ多くの言語に対応 ほとんどのプログラミング環境に対応するライブラリが完備され

ていて簡単に利用できる

bull XMLの欠点 データ量が増える(タグ要素を入れ込む分)

bull XMLの利点 メタ言語様々な形式の新しい種類の言語を規定できる

bull XHTML HTML5 SVG RSS Atom hellip

59

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

JSONとは

bull ブラウザ上で動作するJavaScript言語が標準対応する形式

XMLの複雑でデータ量が多くなる欠点をタグを使わずより簡易に書けるようにしたデータ形式

ldquo著者rdquo [ ldquo高久雅生rdquo ]ldquoタイトルrdquo ldquoWeb APIの過去現在未来rdquo

60

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

RSSフィードとは

bull RSS (Rich Site Summary または RDF Site Summary) サイトの更新情報がXML形式としてタイトル作者概要テキスト

作成日時などを表すデータ形式

bull RSSフィードとは RSS形式で配信すること 最新のお知らせ記事などを配信するのに有用

bull 例カレントアウェアネスポータル

その他検索結果を配信するのに使われることもbull 例CiNii検索

bull 機械的にアクセスし更新ごとの差分を得るのに使うのが普通 RSSリーダー

bull たいていの場合XML形式を自動で出力するツールが使われている ブログしかり図書館システムしかり

bull ユーザーの立場としてはどのURLにアクセスしたらRSS形式のデータが取得できるかだけ意識していればよい

61

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

RSSフィードとは

bull サイトの更新情報(各Webページのタイトル作者概要テキスト作成日時など)を表すデータ形式のことXML形式で表現されている

例 httpdhatenanejpjosei002-10rssの一部

タイトル

URL

概要

作者

日付 62

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

RSSフィード(RSS feed)とは

bull Webサイトの更新情報をRSS形式で配信すること(またはRSS形式で配信したデータのこと)

bull 当該Webサイトの内容が更新されるたびにRSSも更新されるようにするRSSを定期的に見れ

ば更新状況がわかる状況を作る

63

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010123

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

RSSフィードの例

bull 最新のお知らせ記事最近追加したブログ記事などを配信するのに有用例朝日新聞カレントアウェアネスポータ

ルはてなダイアリー

ブログシステムはRSSフィードに対応したシステムがほとんど

bull その他検索結果を配信するのに使われることも例CiNii検索

64

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

カレントアウェアネス-R

65httpcurrentndlgojpcar

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

RSSの一例

66

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

RSSリーダーbull 定期的にRSSをチェック

して差分をみて更新を確かめるツール

あるWebサイトhttpexamplejp

お知らせA作成日2010121

お知らせB作成日2010122

このサイトのRSShttpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125お知らせD 作成日2010127

お知らせC作成日2010125

お知らせD作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010123お知らせC 作成日2010125お知らせD 作成日2010127

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122

httpexamplejprss

お知らせA 作成日2010121お知らせB 作成日2010122お知らせC 作成日2010125

121と122に作成されたお知らせAお知らせBがあるんだな

前とってきたのと

同じなので更新されてないな

新しくお知らせCが増えたな

前とってきたのと

同じなので更新されてないな

新しくお知らせDが増えたな

RSSリーダー

67

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

RSSリーダの例

68

httpfeedlycom

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

RSS活用の例

bull 自他サービスのRSSフィードを通常のウェブサイトでも容易に利用可能

普通のウェブページ内に数行のJavaScript指定を入れるだけ(Google Feed API)

参考牧野川嶋「新着雑誌記事速報から始めてみようRSSAPIを活用した図書館サービス」日本図書館協会 2012 161p

69

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

マッシュアップの例「新着雑誌記事速報」

70

httplib-yukicityyukilgjproom_adsokuhoumainhtml

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

RSSのまとめ

bull サイトの更新情報を表すデータ形式のことXML形式

bull サイトが更新rarrRSSも更新bull RSSリーダーは定期的にRSSをチェックして

差分をみて更新を確かめるツールbull 既存のRSSを加工して自館のサービスとして

提供可能自他サービスのRSSフィードを通常のウェブサイ

トでも容易に利用可能

bull RSSフィードを提供するにはURLの決定RSSの形式の選択RSS更新の仕掛け

71

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

WEB APIの課題Issues in Web APIs

72

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIのご利益

bull サービスの「プラットフォーム化」

第3者にサービス提供する方式を標準化し利用を促進できる

近年の多デバイス環境下(PC タブレットスマートフォン)では自サービスのプラットフォーム化が必然になってしまうという側面もhellip

bull サービスの多様化

Web APIにより通常の利用形態を超えた利用を作り出すことができる

73

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

APIコンテスト

bull サービスの多様化のための具体策

bull APIコンテスト

Mashup Award

CiNii APIコンテスト

bull ハッカソン

bull 「ブレインストーミングのアウトソーシング」

74

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIの寿命

bull Web APIの永続性はそれほど長くないことに注意が必要 GoogleサーチAPI(2010年に終了) Yahoo Web検索API(2013年に終了) Twitter(2013年に大幅な更新)

bull 必然的にマッシュアップ側の寿命に影響を与えるbull 利用する場合には

ある程度代替サービスを念頭におく必要があるbull Youtube vs ニコニコ動画

bull 提供する場合には たとえば検索サービスを単純に更新するだけであっても

Web APIにおいては大きな影響を与えることとなる 最初に公開する際のリクエスト形式データモデルの設計

75

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIの制限認証

bull Web API利用は機械可読(プログラムによるやり取り)が前提であるため過負荷状態になる危険もある人手アクセスの数倍~数十倍

bull 同時利用に制限をかけることが一般的 1時間に1000アクセスまで(カーリル) 1時間に3000アクセスまで(CiNii) 1日に100000アクセスまで(Google Maps)

bull くわえてアクセス元のユーザを識別するために認証を付けることも Twitterなど

76

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

Web APIの提供にあたって

bull URLとデータモデルの決定が非常に重要 どのURLにリクエストを送るとどんなデータが戻っ

てくるのか 「クールなURIは変わらない」

cf httpwwwkanzakicomdocsStyleURI

bull Web API vs データファイルの提供 数万件くらいの単純なデータならデータファイル全

件をダウンロードできるようにしておくだけでも十分bull 逆にデータ量が膨大だったり複雑な条件指定を行う必要が

あるものではWeb API化する恩恵もndash 「CSV最強hellip」by 吉本龍司ndash 「Excelで扱えない規模からがビッグデータhellip」by 喜連川勝

77

まとめに代えて~参考文献を紹介~

78

まとめに代えて~参考文献を紹介~

78