XooNIps

LibraryFindと戦ってみた

 2月は会議シーズン。中間評価や担当者会議やその他諸々で資料作成が続く。

 各地の図書担当者が参集する会議で機関リポジトリ構築計画の説明があるため、XooNIpsのLibrary Module用一括登録ツールを使ってデモデータのリポジトリ登録など、とりあえず見せられる形を整える。(報告するのは別の担当者。)

 で、「各所のXooNIpsから公開可能なデータをOAI-PMHで吸い上げる」計画であるため、メタデータの吸い上げと交換のフロントエンドになるシステムを検討。とりあえずEprints3.0をインストールしたものの、スキーマの変換で悩む。oai_dcでそのまま入れられないものかと。もうちょっと情報を集める必要がありそうだ。先行事例をご存知の方はご教示ください。

 そんな困ったときにカレントアウェアネス-Rから「オレゴン州立大学のLibraryFindプロジェクト進む」の報が。渡りに船か。敵か味方か。
 z39.50 target、OAI-PMHでハーベストしたメタデータ、オンラインジャーナルタイトル(serials solutions piped formatで書いてPHPでOpenURLを生成、DBに入れる)の横断検索が可能なようだ。OpenURLのリゾルバも登録できるので便利そう。

 ということでインストールだ。え、これRubyで書いてある。しかもRuby on the Ralisだ。gemって何ですか。cpanみたいなものですか。混乱しつつINSTALL.txtに従いセットアップ。動くかどうか不安に駆られてFedoraCore4→5にアップデート。データベースは手動でMySQLに作るのね。自動生成じゃないんだ。
 railsのバージョンが違う(1.6.6を使うそうだ)といっては怒られ、oai_dc.rbが見つからないと嘆かれ、Perlとは異なる世界に迷い込んだ自分に後悔。

 OAI-PMHのハーベスタは

/usr/lib/ruby/site_ruby/1.8/rubygems.rb:246:in `activate': can't activate activesupport (= 1.3.1), already activated activesupport-1.4.1] (Gem::Exception)

 と言われて動作しない。上位互換アリとかそういう親切設計ではないようだ。

 ハーベスタは華麗にスルーしてセットアップを切り上げる。そして ruby script/server。 起動。おお、動いた。リモートでオレゴン州立大のデータを検索に行っている。オレゴンから愛。

 日本語を入力してみた。スペルチェッカーが自動的に作動するのだが、当然エラーを吐く。その他マルチバイトには厳しいような予感がする。多言語化ってどうすれば。
 オンラインジャーナル検索ぐらいならできそうだ。SFXから出力できればだけど。日を改めて試そう。

 とはいえ、メタサーチの実装としてはいい感じだと思う。参考にしよう。


 IBM OmniFind Yahoo! Edition. もうちょっとマシなマシンを、ということで半分寝ていたExpress5800(Windows2000server, Xeon 1.5GHz x2)を叩き起こして実行。50万件のデータから「農業」で検索させて3000msぐらい。遅。数年前のワークステーションじゃこのくらいなのか。テストに使えるそこそこ速いマシンを確保したいなあ。

 Next-Lの方もコミットしないと。有志Welcomeです。


XooNIps library module v.1.0成果報告会

 XooNIps library module v.1.0がリリース、ということで成果報告会に出席。

 バージョンアップされた点は、

  • MODS対応スキーマを前提としてCiNiiへの対応を考慮
    JuNii、JuNii2にほぼ対応
  • EXCELファイルからのデータ一括登録に対応
  • 幅広いコンテンツに対応できるよう、アイテムタイプを変更、新設
    同時に入力項目も見直し
    アイテムタイプは以下の通り
    • Article (旧 Bulltin)
    • Book (旧 Rarebook)
    • Photo
    • Website(新設)
    • Video(新設)
    • Sound(新設)
    • Data(新設)
  • MODS形式での出力をサポート

 など。スキーマをMODSにしたのは、通常の目録入力作業の一環としてメタデータの入力も考えており、元々はMARC21で入力しているため作業者の理解が容易、またタグも英語で分かりやすい、DCより表現力がある、目録との互換性の確保、などが理由。実運用を考えたら、確かに慣れているデータの入力手法のほうがよいのかも。
 ただし、最初からMODSでデータ入力をするのではなく、アイテムタイプごとに必要な情報を入力し、出力時にMODSを使用するとのこと。

 帰ったら早速XooNIps XSAS版をインストールして試してわくわく…と思ってよく話を聞いたら、まだJuNii2対応の部分がfixされていないので、テストは待って欲しいとのこと。なので試験はちょっとお預け。

 そのほか、独自の試みとして、検索エンジンをMySQLではなくGoogle MiniやGoogle Custom Search(Google Co-op)を利用した事例が紹介された。XooNIpsでもPDFファイルの全文検索はサポートしているが、機関リポジトリのように大量のファイルとページ数が相手となると検索速度が低下するため、Google Mini等を試用しているという。管理画面も見せていただいたが、検索インターフェースはかなりカスタマイズ可能。検索結果は基本的にはXMLで出力され、これをXSLTで変換して表示しているため、Googleライクにもそうでない結果表示にもできる。カスタマイズの自由度はGoogle Miniの方が高いとのこと。

 また、今後の展開としては、SFX/Metalibとの連携の計画が上げられた。
 まずは、SFXのナレッジベースに慶應のリポジトリKoaraの掲載誌名等を一括でアップロード、Metalibの検索結果からこのSFX経由でKoaraの誘導させる(フェーズ1)、またMetalibはOAI-PMHを話せるので、Koaraからメタデータをハーベストした上で、Koara側でOpenURL対応を行い、SFX/MetalibのFull Textターゲットとして誘導させる(フェーズ2)、などが計画されている。

 弊社でもSFXを導入しているので、このあたりも興味深い。
 この界隈の動向は、「機関リポジトリをどうやって構築するか」から「どこからアクセスしてもらうか」「どうやって収載論文の可視性を上げるか」にシフトしているようだ。弊社としては、「周回遅れ」にならないよう、先端の動向を収集しつつ最適解にトライ、というところか。

 説明会の後は例によって懇親会。夏に顔見知りになった方々を含め情報交換。
 うちでも早くリポジトリのプロトタイプぐらいは作りたいのですが。


 帰宅の途上、時間があったのでヨドバシAKIBA店へ。いつもより店外に人が多い。そういえば入り口付近に「何かを待っている」風情の人が着々と増えていた。ぼーっと電光掲示板を見る人、携帯をいじる人、何かしらPDAで入力している人。一様に「俺は待ってるぜ」なオーラが見える。

 そうだ、11日はPS3の発売日だ! 某ニュースサイトの記事は、ネタではなく本当だったんだ! 外は冷えるし炊き出しとかあったらどうしようといらぬ心配をしてしまったが、とりあえずは地下駐車場に収容されて並んでいる模様。そうか、それなら冷えないね。並んでいたら買えたかも。(←無理)

 その後、ニュースで「購入希望者数千人、アキバに集結」の報道も。数千、というのはサバ読みとの情報もあったが、新宿では、午後11時に「完売」の報も。恐るべしPS3。


XooNIpsを動かしてみた

 某大の方から、メールで「うちの機関リポジトリに登録した雑誌のメタデータをハーベストしませんか?」というお申し出を頂いた。ありがたいお話。

 ということで、OAI-PMHなハーベスタと検索インターフェースぐらいは用意しないとまずいなあ、でも今あるプロトタイプだと検索がいまいちだし。仕様を書いたのは自分なので文句も言えず。

 で、先日慶應大のシンポジウムで発表があったXooNIpsに目をつけた。参加しておいてよかった。
XooNIpsはXoopsのモジュールとして構成され、

  • MySQL
  • PHP
  • Apache

で動作する。当然であるがXOOPSのその他のモジュールも利用できる。開発は理化学研究所脳科学総合研究センターニューロインフォマティックス技術開発チーム

 リポジトリに登録するデータの投稿→(査読→編集)Xn→掲載の流れをサポートするDspace等と違い、ラボや研究所単位での「従来のように論文などの紙を媒体とした書誌による情報だけでなく,実験データ,数理モデル,シミュレーションプログラム,結果のデータやグラフ,URLなど電子情報を含めた様々な研究資源をインターネットによって共有する」(https://xoonips.sourceforge.jp/modules/bwiki/index.php?intro-aboutより引用)システムで、論文、グラフ、URL等のアイテムタイプごとに入力項目を変えて対応できる。研究室や研究チーム内などで情報共有を図るにはよさそうなツール。

 データの公開レベルは

  • Public(一般に公開。OAI-PMHでのハーベスト対象)
  • Group(特定のグループ内でデータを共有)
  • Private(個人用のフォルダ)

となっており、Publicにデータを上げるためにはmoderatorによる査読を通すこともできる。OAI-PMH対応リポジトリからのデータハーベストも可能。これだけあれば十分だ。

 やはり大きいのは検索も元々の使用言語が日本語であること。これだけでも大分敷居が低く安心だ。

 詳細は、

 を参照されたい。ダウンロードにはユーザ登録が必要。

 ということでインストール。当方ではFerodaCore4上で構築してみた。早速MySQLのダウングレード(4.1系から4.0.26へ)。あとはODBC系のドライバ、XOOPSのインストールと続く。
 ここまで終わるとXooNIps本体の導入になる。XooNIps構築の際に必要となるPHP拡張ライブラリ、Abstract Layerの構築でmake installすると

[root@cl3 AL]# make install
make[1]: Entering directory `/usr/local/src/xoonips/AL'
test -z "/usr/lib/php/modules" || mkdir -p -- "/usr/lib/php/modules"
/bin/sh ./libtool --mode=install /usr/bin/install -c 'XNPAL.la' '/usr/lib/php/modules/XNPAL.la'
/usr/bin/install -c .libs/XNPAL.so /usr/lib/php/modules/XNPAL.so
/usr/bin/install -c .libs/XNPAL.lai /usr/lib/php/modules/XNPAL.la
PATH="$PATH:/sbin" ldconfig -n /usr/lib/php/modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/lib/php/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[1]: `install-data-am' に対して行うべき事はありません。
make[1]: Leaving directory `/usr/local/src/xoonips/AL'

とwarning。XNPAL.soは生成されているが、何が悪いのか。ライブラリのパスを変更したりするなど試行錯誤したがここではまり、窮して公式Webサイトのフォーラムで質問。「それでOK。インストールを続けてください。」との返事があり、安堵。ありがたい。
続いて、XOOPSのSYSTEM ADMIN->ModulesからXooNIpsや各種アイテムタイプをインストール。あとはFAQに従いphp.iniのmemory_limitを適当に増やしてapacheを再起動。おお動いたよ。PMIDから論文のメタデータを引いて登録できたりするよ。すばらしい。

 そのほか、ついでと思ってyum install perl-*とかしたらいつの間にかMySQLのバージョンが元に戻っていたりなど手戻りもあったが、安定して運用できそう。

 と、そんなこんなで休暇のうち1.5日程度費やされる。新しいソフトのインストールって楽しいよね。でもそれでいいのか。まあいいや。