Download - Code4 Libカーリルの技術と図書館Apiの使い方
図書館検索「カーリル」の技術と
図書館APIの使い方 Nota Inc 洛西+吉本 @Code4Lib
目次 • 会社紹介 • カーリルのコンセプト (5) • フロントエンド技術 (5) • バックエンド技術 (10) • APIの解説と使い方 (10) • APIの申し込み方法 (10)
Founded in Silicon Valley
Nota Inc 2007年12月、シリコンバレー・サンノゼに設立
インターネット上で、ユーザーに クリエイティブな体験を提供する
図書館システムの問題点 • 図書館システムがばらばら • OPAC/WebOPACが機能していない • 図書館にある本しか探せない • 書誌情報はだれでも手に届かない • 予算不足 • 利用者視点で作られていない
使われていない
カーリルのきっかけ • 吉本の中津川市における情熱 – 行政システムの開発に一人で関わる – 利用者が少ないことに対する懸念 – 現実的、かつ斬新な手法で問題を解決
• 「ライフログ」のブレインストーミング – 日常の情報を共有することでもっと世界は楽しく豊かになる
– 本は、コミュニケーションの起点になる
カーリルの発想 • 本を起点にネットでコミュニケーションを生むには?
– どこからでもアクセスできる書誌情報が必要 – OPACがそのはずだが時代遅れになっている
• 誰もがクリエイター・開発者になれる時代 – 開発できる人やツールは山ほどある – どこにいても、個人でもできる
• APIの発想は、新しい公共の発想 – 基盤を整備することでフラットなネットワークをつくる – 図書館を整備することは地方の若者流出につながる
そこで..
DEMO
開発ストーリー • 平均年齢は27歳。開発は主に4人。
– ディレクション、インターフェース開発 – 検索エンジン・API開発 – インターフェース開発 – アート・デザイン – 図書館データベース作成 – ユーザーサポート
サンノゼ
中津川
藤沢
京都
インターフェース • 迷いのない操作 • 待たせないアニ
メーション • 入力欄は一つ • 蔵書のありなしを
色分けして表示 • ベストセラー/作
家リスト/カテゴリー
• 読みたいリスト
• コンピュータが人間に合わせるという考え方=HCI
アートワーク • 目指したのは、住んでいる町をイメージできる「地域感」
• 「本」から連想する本棚や木目調を避けた • 図書館という「場」から地図を採用
雲、町の風景、山、海、乗り物、動物 = 日常
Mash Up! • カーリルは、他のサイトのMashupのカタマリ
• 利用しているAPI • Amazon API • Google Maps / Geocoding • WikiPedia • Yahoo Image Search • 日本発のサービスがないのが悲しい…
バックエンド 紹介
カーリルのインフラ 【サーバー環境】=クラウド・ハイブリッド • Google App Engine ・CPU時間単位の課金 • Linux Server@中津川 ・時間のかかる処理 • コストの最適化 ・GAEはCPU時間に課金される ・図書館システムは遅い・・
ソフトウェア環境 • 100% Pure Python • どこでも動く • Python2.5/2.6の標準ライブラリ+ オープンソースライブラリのみで構成 “インストールしたLinuxにファイルを入れて立ち上げるだけでタスク処理開始”
分散処理 • 共有メモリ(memcache)ベースのキュー • 司令塔(マネージャー)はGAEにある • キューの処理はGoogle App Engineでも 他のサーバーでも分散して処理できる ・時間のかかる処理はGoogle App Engineを なるべく使わない
・アクセスが増えたらGAEでスケール サーバー増設でコストダウン
Google App Engine
中津川サーバー 中津川サーバー 中津川サーバー
サーバー構成
負荷対策 • 同時接続数を制限 1接続~10接続 オーバーした場合は平等に待たされる
• セッションの再利用 • キャッシュ
図書館クラス ・基底クラス『LibrarySystem』 ↓継承 システムクラス『iLiswing21_We_V2』 ↓継承 図書館クラス『Gifu_Nakatsugawa』 図書館ごとの違いはシステムクラスの関数や パラメーターをオーバーライドするだけ。 図書館毎にフルカスタマイズ可能
OPACの管理 • Googleマッシュアップの探索ツール • システムエラーを検知して調査 • Twitterのつぶやきに対応 • 常に10カ所くらいはシステム更新中
API • XMLとJSON • GET
図書館情報 • 近くの図書館 • 県別の図書館 • システムの詳細情報
http://api.calil.jp/library? geocode=136.7163027,35.390516& format=xml
蔵書貸出状況の確認 • 複数のISBN/複数のシステムあわせて最大100冊の書籍の状況を一括確認できる
・初回のアクセスによりセッションIDが発行
・そのセッションIDを使ってポーリング →10秒以上ポーリングがないと一時停止
JavaScript ライブラリ var calil = new Calil({ 'appkey' : '1f797b98033661', 'render': new CalilRender('list'), 'isbn' : isbn_list, 'systemid' : $('#systemid').val() }); calil.search();
API DEMO
API制限 • IP単位で1000冊/時間まで • RESTFulのAPIも提供予定
APIの申し込み方法 • まずは、API仕様書へアクセス – http://blog.calil.jp/p/api.html
• アプリケーションキーを申請 – http://api.calil.jp/apply
図書館・本のサービスをもっと盛り上げよう
ということで、
APIコンテスト開催決定!!
API コンテスト
夜の図書館ダイアローグ
• Vol1. @中目黒カフェバー コンバイン • Vol2. @中津川市立図書館
• #toshokan
図書館ダイアローグの話題 – 地域と図書館 – デジタル化 – 著作者はどうなる? – 子供時代の本との出会い – ISBNのない郷土資料・行政資料 – 行政と民間の役割
今後の予定 • 書籍デジタル化時代を見据えて、本の魅力をもっとアピール (4月30日は図書館の日)
• 図書館だけでなく出版・書店とも提携 • さらに検索できる書籍を広げる • ユーザーの声をうけて機能開発を進める