Web

図書館タグクラウド

 mixiの司書コミュでのOPACについての議論の中であった、「自分では選ばないような本との出会いができるOPAC」というご意見を参考に、また「はてラボ」(http://hatelabo.jp/)のプロジェクトの一つ、「はてなWordLin」(http://wordlink.hatelabo.jp/)にインスパイアされて、図書館の新着図書・雑誌情報のタグクラウドのようなものを作ってみました。
お試しはこちらから:

新着図書の海へ

 細かいところでは謎の単語があったり解析しきれていなかったりとβ版な状態ですが、頻出単語のフォントサイズを大きく見せるなど、それらしいものに仕上がりました。リンクは弊社OPACへの検索へと繋がります。

 プログラム言語にはPerlを使用していますが、リファクタリング必死な素人コーディングです。なのでコードは内緒。

以下、処理の概要です。

  1. LWP::Simple::getで各拠点図書室56個所の新着図書/雑誌受入情報RSSフィード112を取得、XML::RSSでitem要素のうちtitle(書誌名)だけを抽出。
  2. 抽出したtitleを形態素解析器 MeCab ( http://chasen.org/~taku/software/mecab/ )を使用して単語と品詞を解析。
    解析の例は上記のURLをご参照ください。
    出力パターンをカスタマイズして、このうち表層形(単語)と品詞のみを出力させています。
  3. 解析した品詞のうち名詞だけを抽出し、重複している単語の数をカウント。
  4. 使用している単語でこちらのOPACへの検索式が投げられるようURLを生成、単語からリンク。
    getメソッドでqueryを投げられるのはこういう時楽です。URLに埋め込む検索語はURLエンコードしています。
  5. 単語の使用回数に応じて、スタイルシートで <span style="font-size : 3em">単語</span> のようにして各単語のフォントサイズを決定。
    いろいろ試行錯誤して調整してみましたが、見やすさを考え、4回以下、5~9回、10~20回、21回以上でそれぞれ1~4emにしています。
  6. 単語とリンク部分をJavaScriptで書き出し、ocean.htmlから呼び出す方法を採用。
    この方法ですと、他のサーバのページからも自由に呼び出すことができます。(今回の場合はニーズは少なそうですが) JavaScript自体は毎朝cronで更新します。

 件名なりその他利用できそうなデータが入っていれば、もっと使い出があるとかもしれませんが、今回は新着図書/雑誌中の単語からOPAC全体を検索させることで、「意外な資料との出会い」の場のような感覚を持ってもらえるかもしれません。

 あとは、解析の基礎になる辞書の精度向上などの部分がまだ未完成ですかねえ。明らかに分かち書きしていない単語もありますし。英単語が「感動詞」扱いで拾えていなかったり。もうちょっと工夫する余地はありそうです。

 このデータのRSSフィードによる再配信も考えましたが、頻出単語ばかり送るのも飽きられそうですし、ここはやはりlongtail狙いであえて出現頻度の少ないキーワードを配信するのがGoodでしょうか。

 以前のエントリのOPAC2.0についても再考中ですが、今日はこんなところで。


OPAC2.0を想う

 気がつくと、「原稿書きました」とか「発表終わりました」とかそういうエントリが多い自己顕示なこのblog。

 今日もつまりはそういう話なのですが、風呂敷を広げてみたので事前に世間様の反応を見てみるテスト。

 で、本題。OPAC2.0というものを考えてみました。次世代のOPAC。だから2.0。

 似たような名前で、次世代のネットワークの方向性を示す言葉として「Web2.0」というのもありますが、これはTim O’Reillyさんの論文「Web 2.0:次世代ソフトウェアのデザインパターンとビジネスモデル(前編)」(CNET JAPAN掲載の和訳版)や上原さんのblog近江商人 JINBLOGのエントリWeb2.0 とは -7つの分類と要素MAPなどを見ていただくとして、このような考え方を図書館サービス、特にOPACに応用して考えてみました。

 まず現状のOPAC。従来のOPACは、自館の利用者に所蔵資料の機械検索サービスを館内で提供するところから、インターネット上にまでそのサービスを広げています。気の利いたところであれば、文献複写の依頼や貸し出し予約までできちゃいます。便利ですよね。

 しかし、キーワードを入力し検索結果として書誌データの一部が返ってくるというシステムそのものについてはOPACの導入当初からなんら変わっていません。新着図書の一覧や雑誌の到着状況を知るにも、お知らせの紙やOPAC経由でした。

 なぜいちいちOPACを経由して、あるいは検索して表示させる必要があるのでしょう? 利用者の時間は節約すべきです。そこで我々はRSSによる配信を始めました。これで利用者に直接新着情報を届けるのです。特に雑誌の新着号の受入状況といった情報は、大学図書館など学術雑誌を扱う図書館では重要な情報となるでしょう。
 電子メールというアイディアもありました。しかし、それでは文献複写の依頼や貸し出し予約といった複合的なサービスには不適でしょう。仮に100冊の新着図書案内がメールで届いても、検索機能なしに通読することはありえません。RSSであれば、RSSリーダでフィルタリングして必要な情報のみをピックアップすることも容易です。

 他の情報との連携についても試行を行っています。例えば雑誌の目次情報です。今まででしたら「OPACで検索あるいはリンク集から雑誌を特定→(目的の号があれば)→目次情報へのリンクをたどり出版社のサイトで目次またはオンラインジャーナル閲覧」という流れになるでしょう。これをRSSを使うことで「RSSで雑誌新着号の情報を配信→ここから目次情報などを閲覧」という流れに変えることができます。たとえその雑誌のWebサイトをブックマークしていても、変更があった=新着号が発行されたという情報をウォッチするには、毎日でもアクセスする必要があるでしょう。これをRSSによる通知に代えることで、大幅な時間の節約になります。
 さらに、「雑誌新規発行号(図書室で受け入れたかどうかは不明)の情報」に「その号の目次情報へのリンク」さらに「複数機関の図書室での受入状況」をプラスしてRSSにより利用者に届けてはどうでしょう。Current Contentsなどのサービスでは、発行前の雑誌目次情報も検索することができますが、その論文を実際に読むには、その号が自分の研究所の図書館に届くかオンラインジャーナルの契約があればそれが読めるようになるまで待つ必要があります。その号が届いているかいないか。あるいは読みに行ける範囲にある他の研究所では届いているのか。それが分かるだけでもストレスを貯めずに済むのではないでしょうか。
 「図書室での受入状況」と「雑誌新規発行号の情報」については別々のRSSで提供していますが、XMLで連携させることによりこんなサービスも実際に行っています。データはOPACから出力させていますが、利用者はそれを意識していません。見ることができるのはRSSで配信されるこれらを組み合わせた情報です。

 こうして、今までのOPACというインターフェースにこだわらず、自由に他の情報を組み合わせて提供ができる、これも一つのあり方ではないでしょうか。

 もう一つ考えてみました。OPACで出力されるのは、大抵の場合データベースに収められている書誌情報の一部です。実はさまざまなコードやデータが出力されず隠れています。また、検索結果のダウンロードができても、構造化されていない場合が多いため、再利用するにはあまり適切ではありません。

 amazonを見てみましょう。通常のインターフェースの他にWebサービスが公開され,図書であれば書名,著者名,ISBN,表紙画像などの商品情報を取得し自分のblog等で自由に利用することができます。どうして図書館のOPAC上の書誌情報ではそれができないのでしょう?
 FireFox+Greasemonkeyの組み合わせで、インストールしたPCに限ってですがamazonの検索結果から自分の近くの図書館にその本があるかどうかを検索して結果をamazonの表示内に埋め込むスクリプトが公開されています。
 それなら、amazonとOPACを同時に検索させて結果を出すようにすればよいですよね。これはXMLで連携させることで、うまくいくかもしれません。しかし、現状のRSSの要素では、本の情報-書名、著者名、発行年など-をXMLで記述するには力不足です。今使われている書誌情報を詳細にXMLで記述する必要がありますが、MODSなどのメタデータ標準を使うことで解決できるでしょう。
 こうして詳細な書誌情報をインターネット上で流通可能な状態にすることは、図書館による公共サービスの提供の一つと考えられないでしょうか。

 共通した、あるいは近い構造を持つメタデータをXMLで流通させ、お互いに連携する。これにより、図書館間の横断検索や図書館以外のデータベースとの連携も容易になるかもしれません。また、構造化された書誌データを利用者が自由にダウンロード可能になれば、図書館屋が思いつかない新しいサービスが利用者の側から作られるかもしれません。GoogleMapsがよい例です。Googleが提供する地図情報をベースに、利用者が様々なサービスを自由に構築しています。

 図書館が持つ書誌情報を、今までのOPACから開放して利用者が自由に利用可能な環境を用意する。そして幅広く利用される。このような環境、考え方をOPAC2.0と呼びたいです。

 そんなことを考え、別の文章にまとめました。どうでしょう? OPAC2.0。

 私の考えの甘さや、至らない点がありましたらご指摘ください。
 ご意見をお待ちしています。


googleパーソナライズドホーム用OPAC検索モジュール

原稿書きがとりあえず2本上がりそうなのでちょっと現実逃避。

Bulkfeeds Search module for Google HomePage

Google Homepage のモジュール (Widget) を定義できる API が公開 というわけで、さっそく Bulkfeeds のサーチボックスをつくってみました。

という記事がblog.bulknews.netに掲載されていたのを見て、早速Developer Guideを見ながら自分でもモジュールを作ってみました。例によって動作結果は保証しません。ご意見ご感想バグ報告等は歓迎しますが、自己責任でご利用ください。

google パーソナライズドホームの左上、[コンテンツを追加]を開いて[セクションの作成]の[トピックまたはフィード URL で検索]のところに

http://toshokan.cybozublog.net/public/files/opac.xml

と入力して[実行]を押してください。

「今追加しようとしているモジュールはgoogleの製品ではありません。......」と警告が出ますが、自己責任で先に進んでください。

成功すると、Search ALIS/NACSIS/NDL OPAC というモジュールが追加され、

が書誌名あるいは著者名で検索できます。NACSIS Webcatは多言語対応の英語版のインターフェースを経由しているので、所蔵館名などはローマ字表記になっています。ご注意ください。

作り方は簡単でした。先のXMLファイルのうち、CDATA要素の中にformタグ相当分を書き込めばOKです。詳しくはDeveloper Guideをご参照ください。
(NDL-OPACは正しくデータが送信できない現象を確認したので、とりあえず削除しています。WebcatはUTF-8が通る英語版へqueryを投げて正しく通ったのですが、そのあたりの問題かもしれません。)

JavaScriptなどでもうちょっと高度なものも作ってみたいのですが、現実逃避なのでこのくらいで許してください。


INFOPRO2005終わりました

ああ、一ヶ月ぶりのエントリです。読者の方、お待たせしました。

長いこと予稿書きやスライド作成で苦しめられてきた、INFOPRO2005での弊社におけるRSS関連の取り組みについての発表が無事終わりました。参加された方がこのblogに気づいてもらえれば幸いです。

「自館OPACのRSS化なんてネタ、聞いてもらえるのかなあ」という不安は見事にはずれ、70人ぐらい収容の会議室に立ち見まで出るという盛況で、またいくつか質問や協同のお申し出も頂き感謝しております。スライドは追って予稿と併せJ-STAGEに載るらしいですが、事務局と交渉し弊社公式Webサイトへの掲載を考えております。その時はまたお知らせをします。

予稿を書いてから発表まで時間があったので、その間の情勢や発想の変化、新サービスの試行などができ、スライドにはそのあたりを反映できました。

2003年初頭のMovableTypeでRSS生成、XOOPSで閲覧というテストから、同年からの本格的なサービスのためのシステム仕様策定と構築、そして2004年にサービスのカットオーバ。2005年3月には雑誌個別の受入情報のRSS化など、RSSによるOPAC上の情報配信については、「使い物になるのか」「誰が使うのか」「どう使えばいいのか」など手探りの中で進めてきました。そして、色々考えたあげくにINFOPRO2005での発表に踏み切りました。業界内など周囲の反応も知りたいところでした。

結局、このサービスで実現したかったことは「OPACの外部向けAPI提供によるWebサービス化」に至るプロセスの一つだったのかなあ、と今になって考えています。国内では学術的な情報のRSS配信は、お知らせやサイトの更新情報的な物を除けば、国立国会図書館のCurrent Awarenessが提供されている「図書館に関する調査・研究」更新情報や、の一橋大学附属図書館の附属図書館新着図書RSS提供ぐらいで(書き手の情報不足なので他にありましたらお知らせ下さい)、まだまだ数が少ないのが現状ではないでしょうか。その中で小規模な図書室の集まりではありますが、関連研究所66拠点図書室の新着図書・雑誌受入情報の配信は事例として参考としていたければ幸いです。

将来は、弊社のデータベースだけでなく、他からも有用なリソースがAPIがオープンになったWebサービスで提供され、大きな情報プロバイダによる一極集中のポータルではなく、利用者自身が使いやすい情報を選択して自分のポータルサイトを提供できる環境構築が可能になれば、と考えています。このサービスも、ポータル構築のためのパーツを構成するための第一歩です。APIの提供とオープンなサービス。こういうサービスが、今ならWeb2.0的だとかいうのでしょうか。

小規模経営の弊社としては、競合他社に飲み込まれないよう地道にサービスを続けるしかありませんが、ユーザにちょっとでも近いところに有用な情報を送り続ける、そんなサービスを構築していきたいものです。


広報開始

兼ねてから触れておりました、弊社の某展示会用blogの公開を開始しました。spamライクな宣伝の成果もあり、今日一日で100件を超すアクセスを頂きました。ありがたいことです。ご興味ある方はこちらからどうぞ。

次のネタ用に、こんなページも試作中です。例によってスタイルシートと格闘した結果なのですが、ちょっとウインドウのサイズを変えると表示が崩れるという間抜けっぷりです。運がよければきれいに表になって表示されるはずです。

あと、次の次のネタはOpensearch。perl使いの後輩にスクリプトを書いてもらっています。その出来たるや、「なんちゅう、なんちゅうものを書いてくれたんや・・・」と喜びの涙状態です。もうちょっとしたら公開できる見込みです。


なお、ちょっとしたリサーチのため、上の二つのリンク先のURLには ?cyb と入っています。リンク等される際はこの文字列を削除してください。2つ目のURLは近々変更の予定ですので、ご注意ください。


Movable Type サブカテゴリとのたたかい

今日はMovable Typeのサブカテゴリの表示で大ハマリした話。

11月末の展示会用広報blogで使用するMovable Typeの設定作業。今日は主にスタイルシートとテンプレートの調整。
CSSの研修を受けてきてエキスパートな(はずの)後輩にスタイルシートは任せ、こちらは各テンプレートを調整。ロジックとデザインの分離。これこそが21世紀のWeb。すばらしい。

で、こちらも手を入れつつスタイルシートはほぼ完成。しかし、テンプレートが一個所だけ期待通りの動作をしないのです。

Movable Typeのアーカイブ用テンプレートには幾つかあり、

  • カテゴリ毎に記事の一覧を表示するカテゴリ・アーカイブ用テンプレート
  • 各記事を一つずつ表示する個別エントリーアーカイブ用テンプレート
  • 登録日毎に記事の一覧を表示する日付アーカイブ用テンプレート

の3つがデフォルトで用意されています。

今使用している Movable Type 3.171 にはサブカテゴリを作る機能があり、階層的にカテゴリを作成できます。
現在作成中のblogは2カラム(カテゴリ表示などインデックスが左、記事が右)ですが、デフォルトのテンプレートではメインインデックス以外は1カラムで記事のみの表示です。そこで各テンプレートを2ペインにしてみましたが、カテゴリ・アーカイブ用テンプレートだけカテゴリーリストとリンクが表示されません。付属のマニュアルなどで調べてみたが、条件式に従って下位のカテゴリを順次表示していること程度しか読み取れません。他のテンプレートではきちんと表示されているのに。何故。

時間ばかりが過ぎていきます。とりあえず使っているタグをキーにして検索検索。

そして見つけたのがこの記事。小粋空間さんの「カテゴリーアーカイブで全サブカテゴリーリストを表示」というエントリです。この情報をまとめると、

デフォルトで使用されている、カテゴリーの階層構造を作るための MTSubCategories タグは、このタグがある記事から下位のカテゴリーしか表示しない

とのこと。これを回避して、常に最上位からの下位までのカテゴリーを表示するには、MTSubCategories の代わりに MTTopLevelCategories タグを使用すれば実現できると書かれておりました。マニュアルには、

MTTopLevelCategories
MTSubCategoriesのクローン。ただし、カテゴリー階層の最上位で常に開始します。

と書かれています。そうか、これを使えばいいのか。
ということで、早速書き直し。おお、動きました! 感謝です。これで安心して週末が迎えられます。感謝の気持ちを込めてトラックバックを贈らせて頂きます。ありがとうございました。

なお、記述例は以下のような形です。MTTopLevelCategories を使うのがポイントです。

	<div class="menu">
<div id="categories">
<h2>メニュー</h2>
<MTTopLevelCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
    <MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>"
       title="<$MTCategoryDescription$>">
    <MTCategoryLabel>
    </a>
    <MTElse>
<li><MTCategoryLabel>
    </MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTTopLevelCategories>
</div>
</div>

あとは、Movable Type 3.2 にいつアップデートするかが悩み所です。あと1週間早くリリースしてくれればアップデートして設定したのに。うむ。


図書館OPAC対google

いつもお世話になっているcybozu.netプロジェクトチーム公式Blogの9/26付けエントリ「Googleの脅威」によれば、google内部では

「われわれのミッションは、世の中にあるすべての情報を、Google通じて得られるようにすること」
この言葉は、創業者である、ラリー・ページ、サーゲイ・ブリンはもちろん、Googleの社員が必ず発する言葉らしいです。この言葉が現実になる日は近いのでしょうか。

と言われているとか。

そういえば、ここ数ヶ月、うちの図書館の目録検索システム(OPAC)にgooglebotから書誌詳細情報(通常は検索I/Fからアクセスしないと参照できません。)にむやみにアクセスがあり、しかもISSNや内部で書誌一件毎に割り振っているコードでgoogleを検索するとヒットするのです。他の図書館でも同様です。

どこから、どのようにアクセスしているかは解析中ですが、googleが図書館の膨大な目録情報すら飲み込んでしまうような、そんな危惧さえ覚えます。


Firefox検索プラグイン

引用のその又引用でなんなのですが、obaさんの「読書日記」の記事、「Firefox用WebcatPlus検索Plugin」で知ったのですが、WebcatPlus連想検索Plugin for Firefoxというのが公開されているそうです。

 ぱーどれ野村さんのブログ、Under the Hazymoonのエントリー、WebcatPlus連想検索Plugin for Firefoxで、Firefoxのウィンドウの右上にある検索窓で、WebcatPlusの検索ができるようにするPluginが紹介されている。

インストール方法は、

東洋学文献類目 & 全國漢籍データベース Plugin for Firefoxの後半にある手動インストール方法を参照

とのことです。

早速Pluginのソースを拝見させていただいたのですが、テキストファイルで記述されているので作成は簡単そうです。

mozdev.orgのドキュメントをみながらてこてこ数分。自機関のOPAC用のPluginができました。うまく動作して安心です。

インストールページとマニュアルをきちんと明日にでも作って、公開しようかと思います。ご希望の方はコメントなどお寄せいただけるとうれしいです。


2005/09/27追記:

できました。ここで公開中です。(しばらくしたらこの欄は削除します。)


CSSとのたたかい

11月末に予定している展示会へ向け、我が職場でもblogによる情報発信をすることが決定。(ほぼ)一年間寝かせておいたMovableTypeのライセンスが生きるときがやってきました。

いそいそと設定開始。インストールは30分弱で終了。

だがしかし。立ちはだかるのはスタイルシートの壁。Webで検索したよさげなテンプレートは、商用利用はみな有償。もちろん公的機関も。道理でMovableTypeのデザインカスタマイズ本が多くなってきたわけだ。
試行錯誤して自宅に帰ってまで作業していたらもうこんな時間だよ。でもそれなりにシンプル(でも地味)なページができたので、これでよしとします。

職場で問題点とされているのは技術よりもむしろ運用面。spamだったり趣旨に合わないコメントをどうするか、発信内容を誰が決裁するのか、などです。

明日(というか今日)の11時までには案を出さねばならないのですが・・・もう寝ます。


我が社の広報活動は10月から本格開始予定。刮目して待たれよ。