2012 Volume 55 Issue 2 Pages 97-105
図書館蔵書検索サイト「カーリル」は,無料で利用できるWebサービスである。全国の図書館が,Web-OPACにより提供する書籍の所蔵情報を,横断的に抽出し,整理・統合した上で,利便性の高いユーザーインターフェースにより利用者に提供している。カーリルは,楽しい本との出会いを提供し,図書館に足を運ぶきっかけをつくることをコンセプトに開発が進められた。サービス開始時は,主に公共図書館の利用者を対象としたサービスであったが,現在では,大学図書館や専門図書館への対応も進んでいる。本稿では,サービス立ち上げから開発に携わり,現在,エンジニアとしてカーリルの開発マネージャーを担当する筆者の立場から,カーリルの基本的な機能やコンセプト,サービス提供開始以降の進化と,今後の展開について紹介する。
図書館蔵書検索サイト「カーリル」は,Nota, Inc.が提供する無料のWebサービスである。カーリルは,全国の図書館がWeb-OPACにより提供する書籍の所蔵情報を,リアルタイムに統合することに成功した。2010年3月にWeb利用者をターゲットとしてサービスを開始したが,現在では相互貸借のための情報収集など,図書館業務の中でも多く利用されている。
カーリルは現時点で唯一,日本国内の5,900以上の公共,大学,専門図書館・図書室に対応した所蔵情報の横断的検索システムである(図1)。
利用者は,最初に地域を選ぶと,近くの図書館や相互貸借できる図書館など複数の図書館からわかりやすいデザインで蔵書を探すことができる。また蔵書がなければオンライン書店において購入が可能である。そのほか,既存の書籍や図書館に関するWebサービスと積極的に連携し,利用者にとって総合的に書籍を楽しむことができるような工夫を盛り込んでいる。本稿では,サービス立ち上げから開発に携わり,現在,エンジニアとしてカーリルの開発マネージャーを担当する筆者の立場から,カーリルの基本的な機能やコンセプト,サービス開始以降の進化と,今後の展開について紹介する。
筆者は,ある地方自治体のシステムコンサルティングの一貫として公共図書館のシステム検討に関わった経験がある。その自治体ですでに導入されていた蔵書検索や予約などのWebサービスは,多額の費用をかけているにも関わらず,ほとんど利用されていなかった。
システムの使い勝手が悪いというだけではなく,サービスを提供する図書館職員のWebサービスに対する知識が少なく,積極的に利用者にアピールされていないなど,運用上の課題も多かった。
このような経験を交えながら,開発メンバーとブレインストーミングによって話し合う中で「楽しい図書館蔵書検索」というアイデアが生まれた。図書館の蔵書検索は,本来,本を発見し出会う楽しみがあるはずであり,そのような蔵書検索システムが実現できれば,利用者は積極的に蔵書検索を利用し,結果として図書館に足を運ぶ機会も増えるのではないか。このような仮説をもとにシステムの設計を開始した。
カーリルは,「楽しい蔵書検索」と「図書館利用のきっかけとなること」を目標とした。目標を実現するため,具体的に,以下に述べる要件を設定した。
3.1 楽しいデザイン最初に図書館を訪れるのは,子どもの頃であることが多いと思うが,われわれはこの図書館の原体験を重視した。すなわち,カラフルな本が本棚にずらりと並んでおり,1つずつ手にとるときの喜びをサイト上でなるべく再現することを目指した。そのためには,書影が並んでおり,ボタンを押すことで次々と検索結果を眺めることができる必要がある。
また,図書館に行った経験が少ないユーザーにも先入観なくサービスを利用してもらえるよう,あえて「図書館らしさ」を感じさせない,明るく,楽しいデザインとする。
システムの制約上,検索に時間がかかる場合もあるが,その場合はアニメーションを活用することでユーザーを飽きさせない工夫を行う。
3.2 全国の図書館に対応日本国内でWeb-OPACを導入した公共図書館は80%を超えている(カーリル調べ)。カーリルはこれらすべてに対応することで,日本全国の公共図書館を網羅することを目指している。
普段使っている図書館や近くの図書館がカーリルに対応していないという状況が多ければ結果として利用は広がらない。全国規模のWebサービスとしては,ほぼすべての図書館に対応していると言えるだけの規模の対応が必要である。
公共図書館だけでも,居住地,通勤場所,通学場所や都道府県立図書館など,いくつかの図書館を組み合わせて使う場合も多い。そのため,利用できる図書館を選択し,まとめて検索できる必要がある。
3.3 図書館にない書籍も検索従来のWeb-OPACは,自館に所蔵のある書籍しか検索できないことが多い。図書館にない書籍を検索するとき,利用者は,結果がゼロ件と表示されても,他のキーワードの可能性などを考え,何度もキーワードを入力しなおす可能性がある。これは無駄な行為であり,検索システムへの信頼も落とすことになる。
また,われわれが司書に行ったヒアリングによれば,多くの司書が利用者から自館にない書籍に関する問い合わせを受けたときに,Amazonなどのオンライン書店を検索システムとして利用していた。
これらの問題は,図書館にない書籍も同時に検索結果に表示できるようにすれば解消できる。司書は手間を軽減でき,利用者は発見した書籍を図書館にリクエストしたり,書店で購入することができる。
3.4 図書館に行くきっかけカーリルでは,人々が図書館に行くきっかけをつくることを目指している。そのため,初めて図書館に行くユーザーでも図書館を探すことができるよう,地図や口コミなど図書館についてのさまざまな情報をあわせて提供する必要がある。図書館の口コミを投稿できる「全国図書館スタンプラリー」機能など,Web上のサービスとして完結するのではなく,利用者が図書館とWebを循環することを目指している。
3.5 外部サービスとの連携インターネット上のサービスは日進月歩で発展しており,利用者が本のレビュー(書評)を投稿できるサイトや,本棚を作成して共有できるサイトなどが多く存在する。利用者は,これらのサイトを通して書籍を発見し,書籍を通じて友人とのコミュニケーションを楽しむ。
図書館の検索システムは,これらのサービスと連携し,書籍に対する総合的な利便性を利用者に提供することが求められている。
カーリルの開発と,従来のベンダーによるシステム開発とは,その手法において異なる点がある。カーリルは,構想から公開までかかった期間が2か月と短かったことが特徴である。本章では,カーリルの開発手法について述べる。
4.1 開発チームの構成カーリルの開発チームが住んでいる地域は京都,中津川,東京などに分散しており,それぞれにオフィス(または作業場)がある。普段はSkypeなどを使ってコミュニケーションをとっている。担当業務は「ディレクション」「API開発」「インターフェース開発」「デザイン制作」「図書館データベース管理」「ユーザーサポート」などとなっている。現在,カーリルに関わっているメンバーは6名である。少人数で各地に分散しながら開発しているのが特徴である。
4.2 ラピッドプロトタイピングカーリルは,ラピッドプロトタイピングの手法を用いて開発を進めた。アイデアをまず動く状態にしてから,その成果を反映しながらシステムを設計する。特に使い捨て型プロトタイピングと言われる手法である。
約2日間の合宿による,プロトタイプの開発作業により,一部の都道府県の公共図書館を網羅する所蔵データの取得と,検索画面などのプロトタイプが完成した。これらの成果をもとに,本格的な設計・開発を開始した。
本章では,カーリルのシステムや実現のために用いた技術の詳細について述べる。
5.1 基本設計カーリルはすべてプログラミング言語のPythonによって実装されている。OSに依存しない標準ライブラリのみを利用することにより,サーバー環境に依存することなく,さまざまな環境に簡単に展開できるよう設計されている。
5.2 スクレイピングWeb-OPACを構成するHTMLから,所蔵情報などのメタデータを解析して取り出す「スクレイピング」をいかに効率的に開発するかが,重要な課題であった。
多くの都道府県図書館などが提供する横断検索システムも,基本的には,このスクレイピングにより実現されている。しかしながら,各図書館のWeb-OPACごとにプログラムの開発が必要であり,システム更新やカスタマイズ等にも追随してプログラムを修正する必要がある。そのため,仕様が変わり一度検索対象から外れてしまったWeb-OPACは長期間利用できなくなることも多い。
カーリルでは,Web-OPACに最適化したスクレイピングライブラリを開発し,すべての図書館をPythonクラスとして定義することにより,より少ないコードで柔軟に開発できるスクレイピングフレームワークを開発した。
各ベンダーの図書館パッケージシステムを,バージョンごとに中間クラスとして定義し,共通の処理はそれを継承することで,各図書館システムのプログラム記述はカスタマイズ部分のみに整理されるようになっている。また,図書館パッケージシステムごとに一般に行われるカスタマイズを自動的に検出し,追随するようにすることで,システム更新に伴うカーリル側の対応コストを抑えている。
5.3 負荷制御Web-OPACの中には同時アクセスに対して著しく性能が悪かったり,連続したアクセスに対してアクセス不能に陥るなどの不具合を抱えていたりするものも多い。このため,システムごとに負荷を適切に制御することによりトラブルを防いでいる。
これらの負荷制御は分散メモリ技術「memcache」を利用して,分散された複数のサーバーで処理している状況であっても情報を常に共有して特定のWeb-OPACに対して過負荷とならないように制御するものである。
サービス開始当初は,一部のパッケージシステムが,カーリルがアクセスしたことによる負荷により停止するなどのトラブルがあった。これらの問題はカーリル側の負荷制御とベンダー側の不具合修正により解決している。
同時に,カーリルでの利用者数が多く,また常識的なWebシステムの応答速度と比べて,著しく性能の低いシステムについては該当の図書館や開発元に性能の向上を要請するなど,ユーザーの満足度向上の取り組みを実施している。これらの性能の低いシステムは,データベースへのインデックス設定の不足など,導入時の作業漏れなどによるものも多いと考えられる。
5.4 管理技術カーリルが現在対応しているWeb-OPACのシステムは,2,000を超えている。一般的に図書館システムは5年程度で更新される上,随時のカスタマイズや新館オープンなどに伴い仕様が変更となる。それに追随するためのスクレイピングプログラムの変更は毎日発生している(図2)。
これらの管理コストを最小化することは,民間企業であるわれわれにとっては最大の課題である。前述の通り,パターン化されたカスタマイズを自動検出する機能に加え,スクレイピング時に発生したHTTPエラーや解析エラーを統計的に処理することにより,システムの変更を早期に検出することができるようになっている。
このような管理システムの整備により,Web-OPACの仕様が変更された場合も,短期間で対応できるようになった。
5.5 クラウドの活用前述の通り,OSに依存しないスクレイピングエンジンの活用により,カーリルで最もサーバー資源を消費するスクレイピング処理は,GoogleやAmazonが提供するクラウドサーバーや,国内のデータセンターに設置した自社サーバーなどさまざまな環境で分散して動作可能となった。このため,コストパフォーマンスと処理スピードのバランスをとりながら,常にその割り当ての調整を行っている。負荷対策だけではなく,障害時のバックアップとしてもクラウドを活用することで安定したサービスの提供が可能となった。
5.6 図書館APIの提供カーリルは,横断検索機能を外部の開発者も利用できるように「図書館API」として公開している。APIとはApplication Programming Interfaceの略で,共通の規格で他のシステムと連携するための仕組みのことである。これによって,外部開発者は,新たに図書館の横断検索システムを開発しなくてもカーリルの検索機能を利用した新しいサービスやアプリケーションが開発できる。
現在,次に挙げる2つのAPIを提供している。
なお,詳しい開発の方法は,Webサイトの図書館API仕様書を参照してほしい。活用例については次の章で述べることとする。
Webサービスにおいて外部との連携はユーザーの利便性だけではなく利用の広がりを考えたときに必要不可欠な要素である。これまで図書館がWeb-OPACにより提供してきたWebサービスはこの点が欠如していた。開発時に目標として定めた「図書館利用のきっかけとなること」を念頭に,カーリルは全国の図書館に代わってこれを解決し,図書館とWebの世界を境目なくつなぐことを目指している。
6.1 検索エンジン検索エンジンに登録され,検索結果に表示されるようにすることは外部からのアクセス機会をつくるために重要な要素である。検索エンジンに登録されるためには,最低限,書誌ごとにURLが永続的に維持されるパーマリンクが必要となるが,既存のほとんどのWeb-OPACにおいては未だパーマリンクが実現されていない。カーリルではパーマリンクを提供することにより検索エンジンから図書館につながる入り口となる。
6.2 Webサービス多くのWebサービスと相互連携を進めることで,新しい利用者が増えている。「ブクログ」,「メディアマーカー」など個人の読書記録の管理サービスや,「国立国会図書館サーチ」,「CiNii Books」などの書籍検索サービスと広く連携することで,カーリルの提供する機能をさまざまな場面で利用できるようになっている。
6.3 SNS「Twitter」や「Facebook」などに代表されるSNS(ソーシャルネットワーキングサービス)からの利用も多い。
これらのサービスで,知り合いに本を紹介する際には,書籍を「買う」という行為に対するリンクとして,Amazonへのリンクが広く一般的に利用されている。カーリルを用いることで,書籍を「図書館で借りる」という行為に対して共通のリンクを設定できるようになった。カーリルへのリンクが設定されていれば,数回のクリックで友人が感想を書いた書籍を近くの図書館に予約することが可能となった。
6.4 地図情報Yahoo! JAPANの運営する地域情報サイト「Yahoo!ロコ」をはじめ多数の地図情報サービスに図書館の施設情報を提供することで,地図情報として図書館を検索しやすくする取り組みを進めている。また,図書館に関する口コミなどの情報を充実して,検索エンジンや地図情報サービスにメタデータとして提供することで図書館に行くきっかけになると考えられる。
6.5 Web-OPACOpenURLによる標準的なシステム連携に対応しているため,Web-OPAC側からカーリルに連携することが容易となっている。カーリルとの連携機能がWeb-OPACの標準機能として提供されることも多くなっている。
カーリルと連携することにより,他館の所蔵に簡単にアクセスできるだけではなく,インターネット上のさまざまなWebサービスにも連携することができるようになる。
さらに,企業図書館など所蔵情報をWebに公開していない場合でも,限定された利用者のみがカーリル上で所蔵情報を検索できるようにする取り組み「カーリルスポット」の開発も進めている。
6.6 図書館APIの利用カーリルが図書館APIにより提供するデータを活用し,さまざまなWebサービスやアプリケーションが開発されている。
図書館に関するWebサービスやアプリケーションが増えることで図書館への注目が高まり,それらのサービスがカーリルともシームレスに連携する。結果としてカーリルの利用も増加している。
「Libron」1)はAmazonのサイト上で,図書館の蔵書の有無を調べることができるブラウザ拡張である。
「Libreq」2)は,Twitterを通して,図書館への蔵書のリクエストが行われたつぶやきを集計するシステムである。現時点では公式に図書館とは連携していないので,図書館へのリクエストを独自に集計しているサイトであるが,登録された書籍が図書館に所蔵されるとWebサイト上に表示され,利用者に通知する機能がある。
この他,スマートフォン(多機能携帯電話)のiPhoneやAndroid上で,GPS情報を利用して利用者の現在地点を取得し,近隣の図書館を地図上に表示したり,自動的に最寄りの図書館から蔵書を検索したりできるシステムもある。
これらはいずれもカーリルの図書館APIをシステムの一部に利用している。図書館APIは現在のところ,法人よりも個人のほうが開発者が多い。図書館の利用者の中で開発技術のある市民が,カーリルAPIを利用して便利なものを自主的に開発している。このような自主的な活動によって開発,公開されたシステムが,他の市民にも便利に利用されている。
また一部の開発者は,アプリケーションを少額で販売したり,サイトからアフィリエイト収入や広告収入を得たりしている。
ITを利用したサービスは,広範囲にわたり,1つの開発事業者のみですべての利用者のニーズを満たすことは難しくなっている。新しい携帯端末への対応や,図書館以外の地域行政サービスとの連携,高齢者や子供,障害者,外国人向けの特殊なシステムの開発などさまざまな用途へ柔軟に対応するためにも,図書館APIは有効に活用できる。
カーリルはサービス提供以来,Twitterなどのソーシャルメディアを通して常にユーザーとの対話を行いながらニーズを把握し,またチーム内での議論を重ねながら進化を続けている。この章では,カーリルのサービス提供開始後に追加された機能を中心に紹介する。
7.1 カーリルアカデミア前述の通り,当初,カーリルは主に公共図書館を対象として開発された。しかし,「検索対象として大学の図書館を設定したい」との要望が多く寄せられた。要望は主に大学の学生や教員などからであり,公共図書館と大学図書館を同時に検索したいという意見も多かった。
当初,大学図書館はNACSIS-CATなどの相互貸借に対応したシステムが整備されているため,カーリルでの対応は不要と考えていた。しかし,教員からカーリルに対応するよう要望されたなどの理由により,大学図書館からも直接問い合わせがあるなど,ニーズは高まっていった。
このため,2010年9月から大学図書館への対応プロジェクトを「カーリルアカデミア」と名づけ,大学図書館への対応を開始した。
現在では1,076館の大学図書館(分館を含む)に対応している。
7.2 カーリルローカルカーリルでは,ISBNをキーとして書誌と所蔵を紐付けている。そのため,特に公共図書館が扱う資料の中では地域資料にはISBNがついていないものが多いため,検索ができないという問題を抱えていた。
一方で都道府県図書館により提供される横断検索サービスは多額の費用をかけているにも関わらず,予算不足などの理由からプログラムの変更が間に合わないなどの問題が発生していた。
これらの問題を解決するため,キーワードをキーとした書誌検索をカーリルのスクレイピングや負荷制御の技術を用いて実現したのが「カーリルローカル」である。2011年2月から公開している。
カーリルローカルでは,ユーザーが自由な図書館の組み合わせを指定して横断検索サイトを立ち上げることができる。基本的な機能としては,一般的な横断検索システムと変わりはないが,シンプルなデザインと高速な処理速度が特徴である。
このサービスは特に図書館の業務の中で利用されるケースが増えている。
7.3 多様な書誌への対応カーリルのサービス開始当初は,Amazonの書誌情報に対して全国の図書館の所蔵情報を紐付けることによりサービスを実現した。しかしAmazonの書誌情報のみを利用した場合,図書館に所蔵があってもAmazonに登録のない書籍は検索結果に表示されない。この問題に対応するため,多様な書誌情報や検索先に対応している。
ISBNで検索した場合,「Amazon」の他,「国立国会図書館サーチ」,「版元ドットコム」,「CiNii Books」に該当するデータがある場合はカーリルでも表示できる。
また,検索先として標準のAmazon APIに加えて,国立国会図書館サーチAPIとOCLC Basic APIに対応している。現在は実験的な取り組みであるが,設定などを簡略化し,より手軽に利用できるようにする予定である。
7.4 データセットの提供図書館の施設に関する情報源としてはカーリル,Wikipedia,saveMLAKなどのWebサイトや,国立国会図書館が運用するISILや国立情報学研究所のNACSIS参加組織コードなどの各種コードに紐付いたデータがある。
また,カーリルでも図書館単位のコードを付番しており,APIによる所蔵情報の取得にはこのコードが必要となる。
日本国内にある図書館についての施設情報やコードを結合し,相互運用性を高めるために施設情報を横断的に結合するためデータセットを無償で提供している。
7.5 図書館システムとのAPI連携の取り組みカーリルのスクレイピングによる所蔵情報の提供は,Web-OPACの検索速度に影響されて,ユーザーへのデータ提供までに時間がかかるという問題がある。図書館システムの持つ所蔵情報に対して,効率的な検索インデックスを作成することにより,高速な所蔵情報の提供が可能となるが,これには図書館システムとのデータ連携を図る必要がある。
現在,カーリルと中津川市立図書館および図書館システムの開発会社で協力し,図書館自身がAPIを提供する試みを実験的に進めている。このAPIをカーリルでも利用することにより,ユーザーに高速に検索結果を提供できるようになる見込みである。
カーリルの主な収入源は,Amazonのアフィリエイトによる仲介手数料収入と,バナー広告,検索連動広告によるものである。サーバー費用などの運用にかかるコストはこれらの収入で賄われている。
図書館のインフラとして,長期的に安定したサービスを提供できるよう,複合的な収入源の確保と,コスト管理を徹底することはわれわれの重要な課題である。
今後,書店や出版社,図書館との提携を通じて新たなビジネスモデルを模索していく。
在住者だけではなく,広い範囲の利用者に貸出を行っている公共図書館も多い。また大学によっては,地域の住民や卒業生に図書館を開放している場合もある。ぜひ一度,図書館に足を運んでみてはどうだろうか。カーリルがそのきっかけになれば幸いである。