「斬新さ」より「柔軟さ」でみるWeb API

52
斬斬斬斬斬斬斬斬斬斬斬斬斬斬 「」「」 Web API 2015 斬 6 斬 6 斬 斬 23 斬斬斬斬斬斬斬斬斬斬斬斬 斬斬斬斬斬斬斬斬斬斬 Web API 斬斬斬斬斬斬 (Twitter: @kunimiya ) 1 ※ 斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬斬 斬斬斬斬斬斬斬斬斬斬 斬斬斬斬斬斬斬

Transcript of 「斬新さ」より「柔軟さ」でみるWeb API

1

「斬新さ」より「柔軟さ」でみる Web API

2015 年 6 月 6 日

第 23 回大図研オープンカレッジ「大学図書館員のための Web API 入門」

常川真央 (Twitter: @kunimiya )

※ このスライドにおける主張は常川真央個人の主張であり、所属先を代表するものではありません。

2

自己紹介:常川真央

所属:日本貿易振興機構

  アジア経済研究所図書館 システムライブラリアン 2012 年 10 月〜 2013 年 3 月:

国立国会図書館に非常勤調査員として勤務 趣味

ビブリオバトル

4

今日お話すること

API がなぜ大事かを感覚的に理解する 「なにか新しいもの」という Web API のイメー

ジを取り払う より身近で、より現実的な Web API のイメージ

へ プラス、 NDL LabSearch Client の宣伝

5

Web API はなぜ重要か?

6

WebAPI とは何か?

7

API とは何か?

photo by Biswarup Gangulyhttp://commons.wikimedia.org/wiki/File:Car_Wheel_-_Kolkata_2006-03-22_04017.JPG

8

API とは何か?

乗用車で考える タイヤ カーナビ 部品が消耗または故障したら、その部品だ

け交換する

9

API とは何か?

タイヤやカーナビはなぜ交換できるのか? 形状や接続部分が規格化されているから 世の中の交換可能な部品のほとんどは規格

がとりきめられている

10

API とは何か?

API とはシステム構築のための「規格(取り決め)」である あるシステムの部品が交換可能かは API

があるかどうかにかかっている

11

Web API とはなにか

Web の流儀に沿った API

Web サービスを1つの「部品」として活用 より複雑なサービスを構築することができる

12

まとめ: WebAPI はなぜ重要か

API はシステムの部品を交換可能にするための決まりごと

WebAPI は Web の流儀にしたがって決められた API

WebAPI があることで、 Web サービスが「部品」になり、より大きなウェブサービスを作ることができるようになる

13

Web API の標準化

14

Web API の標準化

良い API は、皆がよく馴染んでいるルールに沿って決められている

CiNii も国立国会図書館サーチも、検索用のAPI として取り決めている「ルール」には、OpenSearch や SRU/SRW などの国際的な標準規格を採用している

15

喩え話:スターバックスのトッピング

スターバックスではコーヒーを注文するとき、様々なトッピングを追加可能

組み合わせは無数 ときには呪文のような複雑な組み合わせの

トッピングを注文するヘビーユーザーも

16

スターバックスの注文方式のメリット

自分の好みの組み合わせのトッピング注文方法を覚えてしまえば、全国のスタバで自分の好きなものを飲むことができる

もしスターバックスが店舗ごとにトッピングの種類も注文方法も全く違っていたら?

17

API が標準規格を採用するメリット

多くのシステムが共通の規格に基づいた APIを提供することで、様々なサービスから同じ方法で情報を引き出すことができる。

18

Web API の標準規格 (1) : OpenSearch

Amazon の子会社 A9.comが中心となって策定している API 規格

異なる検索サービスの検索結果を共有・活用するための共通フォーマットを提供

検索クエリ、表示件数など最小限の命令 XML か HTML のいずれかで検索結果を受け取り

可能

19

OpenSearch の使用例

ウェブブラウザの検索窓から検索サービスを利用するときに活用されている

20

Web API の標準規格 (2) : SRU

OpenSearch に先行して策定された情報検索のための Web API 標準規格

XMLベースの検索レスポンス CQL(Contextual Query Language) という言語

によって検索クエリを記述 検索システムにできるだけ依存せずにクエリが

書ける 国立国会図書館サーチの API で採用されている

21

SRU の使用例

2008 年 1 月 1 日以降に出版されていて、タイトルに「桜」を含むものを検索する http://iss.ndl.go.jp/api/sru?

operation=searchRetrieve&query=title%3d%22%e6%a1%9c%22%20AND%20from=%222008%22

22

NDC9 Fetcher: SRU を使って ISBN から NDC だけを取得

23

活用例:読書傾向診断

24

読書傾向診断:やりたいこと 「図書館員は第2次区分を埋めるよう

に本を読むべし」( by M 先生 ) という言葉に従うための独自のメソッド

読書履歴を NDC 第 2次区分で分類

どの区分の本を何冊読んだかを集計

3冊以上読んだ区分を「クリア」とする

トータルのクリア率、第 1次区分ごとのクリア率を算出した「読書傾向診断書」を出力する

これまでの読書の「振り返り」をする

25

読書傾向診断:実現のための課題 読書履歴の取得

ブクログのエクスポートデータを使用 (本当はここも API 化したいが ......)

NDC の取得 ブクログのエクスポートデータには ISBN は含まれているが、 NDC番号

はふられていない ISBN に基いて NDL サーチから書誌情報を取得し、 NDL が付与した

NDC番号を活用する

診断票の出力 Google Drive を使用 Google Drive には特定の URL に対するレスポンスをセルに代入する関

数がある Google Drive と NDC9 Fetcher を組み合わせれば実現可能 ......!

26

読書傾向診断:実現のための API 活用

NDL サーチ

Google Drive

NDC9 Fetcher

ブクログ① CSV 形式の読書履歴を 入力 (手動 )

② 本の ISBN に対応する

NDC のリクエスト

③ SRU で ISBN をクエリとして検索

④書誌情報を返す ⑥ 取得した NDC に

基いて読書履歴を集計・分析し、診断票を出力(PDF 形式 )⑤書誌

情報から NDC

を抽出し、返

(赤字が API利用部分 )

27

Web API の標準規格 (3) : OAI-PMH

情報資源のメタデータを収集(ハーベスティング)するための API

主に学術情報資源の統合検索サイトを構築するために利用されている

NII や NDL との連携では OAI-PMH の導入が推奨されている

28

ハーベスティングとは? (NDL の事例 )

リポジトリ A

リポジトリ B

リポジトリ C

メタデータデータベース

ハーベスタ

① 各リポジトリへのリクエスト

29

ハーベスタ

ハーベスティングとは? (NDL の事例 )

リポジトリ A

リポジトリ B

リポジトリ C

メタデータデータベース

② メタデータの収集

30

ハーベスタ

ハーベスティングとは? (NDL の事例 )

リポジトリ A

リポジトリ B

リポジトリ C

メタデータデータベース

③ メタデータの統合

31

ユーザ

利用

ハーベスタ

ハーベスティングとは? (NDL の事例 )

リポジトリ A

リポジトリ B

リポジトリ C

メタデータデータベース

④収集したメタデータの利用

NDL サーチ

32

明治大学の機関リポジトリ

33

明治大学の機関リポジトリからメタデータをハーベスト

メタデータの一覧をリクエスト http://m-repo.lib.meiji.ac.jp/dspace-oai/

request?verb=ListRecords&metadataPrefix=oai_dc

34

アジア経済研究所の機関リポジトリ

35

アジア経済研究所の機関リポジトリからメタデータをハーベスト

メタデータの一覧をリクエスト https://ir.ide.go.jp/dspace-oai/request?

verb=ListRecords&metadataPrefix=oai_dc

36

アクセス先以外はほぼ同じ書き方→ OAI-PMH に準拠しているため

明治大学の場合 http://m-repo.lib.meiji.ac.jp/dspace-oai/request?verb=ListRecords&metadataPrefix=oai_dc

アジア経済研究所の場合 https://ir.ide.go.jp/dspace-oai/request?verb=ListRecords&metadataPrefix=oai_dc

37

NDL LabSearch Client のご紹介

38

NDL LabSearch Client

ユーザに検索画面を提供する検索インターフェースの一種

国立国会図書館が試験的に開発・提供している「 NDL ラボサーチ」(http://lab.kn.ndl.go.jp/ndls/)の一部

39

デモ(標準版)

40

NLC と NDL ラボサーチの関係

タイヤと乗用車の関係

雪道を乗用車で移動するとき

チェーンかスタッドレスタイヤに交換

手を入れる場所はタイヤだけ

車そのものはそのまま

タイヤを交換するかのように、検索画面をカスタマイズ可能

検索サーバ

画面 A(NLC製 )

画面 B(NLC製 )

NDL ラボサーチ

41

使用している API 規格:Apache Solr の QuerySyntax

42

現在の NDL ラボサーチ

43

NLC を開発した背景

図書館情報システムをめぐる問題を簡単に解決できるような仕組みを浸透させたいから

問題の分割 大きな問題も小さな問題へ分割していけば、

やがて解決に至る

44

「問題の切り分け」ができないと ......

図書館システムがリプレースされると、決まって OPAC上の検索画面のデザインが変更され、こうした変更にユーザは大いに戸惑う

図書館で当たり前のように起こる現象

しかし、果たして検索画面のデザイン変更は本当に必要なのだろうか

もし既存のデザインを残して、検索エンジンを入れ替えたり、業務システムを入れ替えたりできるような仕組みに OPAC がなっていれば、ユーザは戸惑うことなく図書館をより円滑に利用することができるのではないだろうか

45

NDL ラボサーチでの「問題の切り分け」

データ処理の問題とデザインの問題を切り分けて運用

検索画面を維持したまま検索サーバを改修可能

逆に検索サーバを変更せずに新たな検索画面を、今までの検索画面を残したまま提供することが可能

46

新聞を検索したいという要求

新聞検索専用サービスをOPAC上で提供したい

ある図書館員

47

問題の切り分け OPAC にまつわる問題は大別して2種類

データ処理の問題 検索インデックスの方法 登録するデータの項目

デザインの問題 検索ボックスのデザイン 検索結果の表示方法

48

新聞検索専用サービスを提供するのに必要な要件

専用の検索窓 新聞の検索結果だけを表示する検索画面 この課題を解決するには、 OPAC 全体を改修する必要がない

49

「新聞を検索したい」という要求の本質 純粋に「デザインの問題」

検索サーバーと検索インターフェースが独立している場合 検索インターフェースの改修だけで済む

対象の OPAC がデザイン部分だけをカスタマイズできるような機構を用意していない場合 OPAC 全体を改修するようベンダーに依頼するほ

かなくなる

システムの仕様が「問題の切り分け」を阻害している可能性

50

デモ 新聞検索専用 UI

51

さらなる応用例 NDL ラボサーチ以外の検索システムの検索イン

ターフェースとして移植することも可能 NLC が想定している WebAPI を実装しさえすれ

ば、 NDL ラボサーチと同じ使用感の検索体験を実現できる

今後 Web API の整備によって応用範囲を広げていく

52

まとめ

WebAPI は、図書館サービスを構成するための様々なパーツをつなぐためのルール

WebAPI ありきで設計されたシステムは強い柔軟性と運用性を発揮することができる

新たなことに挑戦することに意欲を燃やす図書館員だけではなく、今ある図書館サービスを堅実に運用しようとする図書館員の助けにもなる