日本の図書館はどのように Ruby を使っているか How libraries in Japan use Ruby? 〜 Next-L Enju と国立国会図書館サーチ〜 Next-L Enju and NDL Search 田辺浩介  Kos...
“Library”? <ul><li>“a collection of sources, resources, and services, and the structure in which it is housed” (Cited from...
In this presentation, “collection of sources” does not mean “software”
It is about “books”!  </li></ul>
自己紹介 Self introduction <ul><li>Project Next-L  参加者の一人   one of a member of Project Next-L </li><ul><li>大学の図書館で働いていました I am...
合同会社次世代図書館システム 代表社員 </li></ul></ul>
「図書館システム」 “Library system”
図書館システムとは What is “library system”? <ul><li>図書館の業務管理システム business management system for libraries </li><ul><li>受入管理・目録製作 a...
蔵書検索( OPAC ) search (including Online Public Access Catalog)
貸出・返却・予約管理 circulation and reservation
上記に関わるメール送信や帳票印刷 sending email and printing reciepts </li></ul></ul>
いろいろな図書館システム There are a lot of library systems <ul><li>いろいろな会社がいろいろな言語で作っている a lot of system vendors has been developed  ...
Java, C, COBOL, Visual Basic, PHP,  … </li></ul><li>Ruby はどうか? How about ruby? </li></ul>
Ruby で作った図書館システム Library system written in Ruby <ul><li>まちづくり三鷹さんの 「 Ruby 図書館システム」 “Ruby Toshokan System” produced by Mach...
Next-L Enju </li><ul><li>Our system! </li></ul><li>すべて Rails 製  All of them are Rails apps </li></ul>
What is Project Next-L? <ul><li>図書館関係者で新しい図書館システムを作ろうとするプロジェクト a  project to create a new library system by librarians, re...
http://next-l.slis.keio.ac.jp/wiki/wiki.cgi </li></ul></ul>
What is Project Next-L? <ul><li>2006 年 11 月に慶應義塾大学(当時)の 原田隆史准教授によって開始 started in Novenber, 2006 by Takashi Harada, associa...
Next-L Enju <ul><li>Project Next-L の成果物 the result of Project Next-L </li><ul><li>http://enju.slis.keio.ac.jp/ http://enju...
MIT ライセンスで公開 released under MIT license </li><ul><li>https://github.com/nabeta/next-l </li></ul><li>私が実際の開発作業を行っている </li><...
なぜ作ろうと思ったか? Why did I started developing Next-L Enju?
2007 年 ... In 2007... <ul><li>自分の職場に図書館システムが設置されていなかった There was no library system in my library </li><ul><li>小規模で、既存のシステム...
じゃあ 自分で作りたい! I want to develop my own system!
Rails の本を見つける found a book about Ruby on Rails <ul><li>ライド・オン・ Rails 吉田和弘・馬場道明 , ソフトバンク クリエイティブ (2006) </li></ul>
 
 
全文検索の例が! Fulltext search example! <ul><li>acts_as_searchable </li><ul><li>HyperEstraier と組み合わせて全文検索を実現するプラグイン a fulltext s...
図書館システムと検索 library system and search <ul><li>利用者向けの簡易な検索インターフェース simple user interface for patrons </li><ul><li>単純な検索式、特定の...
図書館員の検索式 librarian's query <ul><li>「ドラッカー」を含むタイトルで、 「岩崎」さんが書き、 2009 年以降に出版され、 練馬区立図書館で所蔵しており、 現在予約可能な状態になっている本 SELECT * FR...
練馬区立図書館 http://www.lib.nerima.tokyo.jp/search2.html
 
利用者の検索式 patron's query <ul><li>全ての項目から「ドラッカー」を探す場合 search “ドラッカー” from all columns </li><ul><li>SELECT * FROM books WHERE ...
It is not cool... </li></ul></ul>
全文検索 fulltext search <ul><li>PostgreSQL/MySQL で全文検索を実現するよい方法 はないものかと探していた I had been looking for a  good way to get fullte...
サンプルが期待する動作だったので、そのまま Ruby on Rails で製作を始めることに The sample application   just fit, so I started developing with Ruby on  Ra...
世の中には人生を変えるサンプルコードがある There is a code that changes someone's life
Ruby の好きなところ things I like about Ruby <ul><li>irb
Array#map
Object.const_get(“Bookmark”) </li><ul><li>“Bookmark”.constantize  # ActiveSupport </li></ul></ul>
Railsのよかったところ the best thing about Rails <ul><li>RESTful </li><ul><li>REST API を備える図書館システムやサービスが 増加 the number of library ...
苦戦したところ problems <ul><li>画面表示が遅い slow response </li><ul><li>著者名・出版社名・所蔵情報・貸出状況など、 一度に DB へのアクセスが発生する many DB access for ge...
フラグメントキャッシュで回避 fragment cache solved the problem
自分のテンプレートの設計が無計画だったため、 キャッシュの削除忘れが多発 I had a lot of trouble in expiring fragment cache because my template files were badl...
Authors and publishers Holding information Reservation Bookmark Circulation information JOIN
苦戦したところ problems <ul><li>貸出・返却画面 circulation </li><ul><li>反応が遅いと図書館のカウンターが混雑して利用者を待たせてしまう If circulation is slow, the coun...
ajax 化、過剰な validation を削除 ajaxify, removed excessive validations </li></ul></ul>
苦戦したところ problems <ul><li>書誌の検索 searching bibliographic data
HyperEstraier の属性インデックスでは機能が不足 “attribute index” in HyperEstraier is not enough
海外の図書館システムで Apache Solr を知る I've learned that many library systems developed abroad use Apache Solr
acts_as_solr,  次いで   sunspot  を使用 use acts_as_solr, then sunspot </li></ul>
Next-L Enju の導入館 libraries introduced Next-L Enju <ul><li>物質・材料研究機構 National Institute for Materials Science
笹川スポーツ財団 Sasakawa Sports Foundation
環境省図書館 Ministry of Environment </li></ul>
国立国会図書館サーチ NDL Search http://iss.ndl.go.jp/
「国立国会図書館サーチ」で Next-L Enju を使用することに National Diet Library chose Next-L Enju as one of the components of  “NDL Search”
National Diet Library <ul><li>the only national library of Japan </li><ul><li>Main library in Tokyo and  several branch li...
国立国会図書館サーチとは What is NDL Search? <ul><li>通称「 NDL サーチ」
国立国会図書館の所蔵する資料と、 他機関の資料データベースを一度に検索 search databases in NDL and other organizations at once
2010 年 8 月 17 日に最初の β 版公開 First beta version released on August 17, 2010
収録件数は約 5800 万件 about 58 millions records </li></ul>
国立国会図書館サーチとは What is NDL Search? <ul><li>資料の自動同定処理 automatic identification of bibliographic data
資料への入手経路を案内 navigation to resources </li><ul><li>近隣の図書館での所蔵情報 n eighborhood libraries that hold the resources </li></ul></ul>
 
なぜNext-L Enjuを選んだか? Why NDL chose Next-L Enju? <ul><li>国内の商用製品では機能不足 commercial library  systems developed in Japan lack s...
改修費が高額で機能追加が容易ではない not easy to add a new feature, it costs much </li></ul></ul>
なぜNext-L Enjuを選んだか? Why NDL chose Next-L Enju? <ul><li>成果物をオープンソース・ソフトウェアとして 公開できること should be released as an open-source ...
Next-L Enjuの利用部分 Next-L Enju in NDL Search <ul><li>主にフロントエンドで利用 Next-L Enju is used as a frontend for NDL Search </li><ul>...
Upcoming SlideShare
Loading in …5
×

RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」

5,763 views

Published on

発表時のスライドのうち、一部の文章を修正し、また一部の画像と動画を除いて掲載しています。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,763
On SlideShare
0
From Embeds
0
Number of Embeds
874
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • In this presentation, “library” does not mean a collection of software. It means a collection of books!
  • 自己紹介をさせていただきます。Project Next-Lという図書館システム開発プロジェクトのメンバーです。以前は大学の図書館で働いていました。
  • さて、今日は図書館システムのお話をさせていただきます。
  • 「図書館システム」というのはなにかと申しますと、図書館の業務管理システムのことです。 英語では integrated library system とか、 library management system といいます。
  • この図書館システムですが、さまざまな企業が作っています。日本でしたら、たとえば富士通さん、NECさん、三菱さん、リコーさんなど、日本を代表する大きな会社が図書館システムを作っています。 これらはいろいろな言語で作られています。Java、COBOL、VB、PHPなどなど… 今日はRubyKaigiですので、ではRubyはどうかというと…
  • おそらく有名なのはまちづくり三鷹さんの開発された「Ruby図書館システム」だと思います。これはメディアでも何度か紹介されていますし、実際に長野県の塩尻市図書館で導入されています。 あと、今日説明させていただきます、ぼくたちのシステムである Next-L Enju があります。
  • Project Next-Lというのは、ベンダーではなく図書館関係者で新しい図書館システムを作ろうとするプロジェクトです。
  • 2006 年 11 月に、当時慶應義塾大学、現在は同 志社大学にいらっしゃいます原田隆史准教授によって始められました。
  • そこでできあがった成果物が、Next-L Enjuです。Ruby on RailsとPostgreSQL, MySQL, Solrと、すべてOSSで作られており、Enju自体もMITライセンスで公開しています。実際の開発は私が行っています。
  • で、最初はPHPで書いていたんですけどめんどくさくなって挫折しました。調べたところ、世の中には「Webアプリケーションフレームワーク」なる便利なものがあって、その中でもRuby on Railsというのが流行だと聞きました。
  • とりあえず「ライド・オン・Rails」という本を見つけました。手にとって読んでみます
  • ここで全文検索の例を見つけたんですね。acts_as_searchableを使っている。
  • なんで全文検索が大事かというと、図書館システムというのは司書だけが使うシステムではないからです。一般の利用者の方も使うシステムです。 で、一般の利用者の方は簡単な検索インターフェースを、司書の方は複雑な検索インターフェースを使用したいという要望があります。 図書館システムはこれらを両立させなければならないのですが、それができていないシステムがほとんどです。
  • これは練馬区立図書館の例です。 昔はまだこれでもよかったんですが、今の利用者は、
  • こういうシンプルなインターフェースに慣れきってしまっています。これからすると、図書館システムというのは利用者にはどうにも敷居が高いわけです。
  • でもこんな感じで LIKE 文を続けるのはかっこわるいですよね。それで全文検索の仕組みをいろいろ試していました。
  • PostgreSQLやMySQLで全文検索を実現するよい方法はないものかなと探していました。SennaやLudiaも試してみましたが、どうも自分の環境では不安定でした。 それでこのサンプルを試してみたところ、よい感じで動いたので、そのままRuby on Railsで開発を始めることにしました。 それ以来4年間、私はほとんど毎日、Next-L Enjuの製作を行っています。今にして私は思います。
  • 世の中には人生を変えるサンプルコードがある、と。
  • Rubyで便利だと思ったのは、なんといってもirbの存在です。RubyをPHPと比較した場合、Rubyの最も便利なところだと思います、というかPHPになんでないんでしょうね。ライブラリをrequireしてメソッドを試して、という試行錯誤が簡単にできるのは、初心者にはほんとうに助かりました。 あとは配列をいっぺんに処理できるArray#mapとか、あとオブジェクト指向を勉強するところで、文字列からクラスを作るのが簡単にできるところが楽しかったです。
  • Railsのよいところはいろいろありますが、図書館システムの製作という点からみたRailsのよい点は、RESTfulであるということです。現在、多くの図書館システムが、RESTAPIを備えつつあります。単純なものでいえば新着資料のRSSフィードですが、そのほかにも蔵書の検索や登録など、さまざまなWebAPIが存在します。RailsのRestfulな方向性は、これらの図書館システムの方向性と合致していてました。
  • 苦戦したところですが、ほんとに動作が遅かったです。キャッシュなんてのは大規模サービスのためにあるもので、うちには関係ないと思っていたのですが、たちまち苦しくなりました。著者名・出版社名・所蔵情報・貸出状況などで大量のJOINが走るんですね。 というわけで、フラグメントキャッシュでしのぐことになるんですが、テンプレートの設計やマークアップが無計画だったため、キャッシュの削除忘れが多発することになりました。
  • システムのレスポンスでいちばん要求がシビアなのが、カウンターでの貸出と返却業務です。これが遅いと、カウンターが混雑して、利用者を待たせてしまうからです。これは貸出データの作成処理であり、キャッシュでは対応できないので、ajax化とvalidationの省略で対応しました。
  • あと、先ほど触れた検索部分です。 acts_as_searchableはなかなかよい感じで動いていました。しかし、図書館は検索対象とする項目が多く、対象を増やしていくとacts_as_searchable、というよりもHyperEstraierでは力不足な点が出てきました。 ほかの図書館システムはどうしているんだろうと思って調べたところ、Apache Solrを使っていることがわかりました。 RubyとRailsにはacts_as_solrとSunspotというライブラリやプラグインがあったので、それを使うことにしました。Solr自体については、すでに館野さんが今日のセッションでお話されているので詳細は触れませんが、セッション内で触れられていたように、検索フィールドを柔軟に設定できるのは大きな利点でした。
  • 国立国会図書館サーチ、通称NDLサーチは、国立国会図書館の所蔵する資料と、他機関の資料データベースを一度に検索する、新しい情報検索サービスです。2010年8月17日に、最初のβ版が公開されました。
  • いくつかのプロジェクトでOSSを利用していました。 また、国内の商用図書館システムでは機能が不足、特に、国際的に利用されているWebAPIの不備が指摘されました。
  • また、書誌データをDCNDLというXMLで持つように変更しています。DCNDLは国会図書館の決めた、RDFによる書誌情報で、これをXMLで表現しています。このXMLをPostgreSQLのTEXTフィールドに保存し、表示するときにそれをパースしているのですが、これに時間がかかることが判明します。たとえば、検索結果一覧で10件表示されると、10回パースをしなければなりません。
  • オリジナルのEnjuでは、書誌情報はPostgreSQLに保存し、Solrには書誌情報のIDのみを保存していました。つまり、一度Solrに検索クエリを送って書誌IDを取得し、次にその書誌IDをキーにしてActiveRecordで書誌情報を取得する、という流れです。
  • インデックスの量が膨大なので、Next-L Enju内部で使用しているsunspotではなく、JavaとHadoopによる外部コンポーネントによってSolrのインデックスを作成するように変更しました。
  • NDLサーチの今後の予定ですが、2012年1月に正式公開が予定されています。また、NDLサーチ向けに行われた新規開発・変更部分のソースコードも公開予定です。こちらは時期や方法は未定ですが、期待して待ちましょう。
  • というわけで、これまでのお話では、日本の図書館と図書館システムにおけるRubyの歴史は今まさに始まった…となりそうなのですが、実はそうではありません。
  • 実は、10年前からRubyで書いた図書館システムを使っている図書館が日本にあります。どこかと言いますと、
  • 神戸市図書館情報ネットワークというのは、神戸市内の公共図書館と大学図書館のネットワークです。共同でひとつの図書館システムを使っています。
  • 2001年のシステムリプレース時に、Rubyでシステムを構築しています。2001年というと、Ruby1.6とか、第1回RubyConfが開催された年だそうですね。
  • では、実際に動いているところを見てみましょう。
  • なぜRubyを選んだかという点については、いくつか理由がったのですが、 図書館の司書の中にプログラミングが好きな方がいて、その方が 「多少の改修であれば図書館司書が自分で行えるように」ということで選んだそうです。あと、日本語のサポートが得やすいというので、PerlではなくRubyを選んだそうです。
  • 全体の90%がRuby、残りがEmacs Lisp、ごくわずかにCだそうです。Cで書いてある部分は職員の認証処理を行っているのですが、性能・機能面での問題でそうなっているわけではなく、Rubyでじゅうぶん対応できるだろうとのことでした。 Emacs Lispってなんじゃいと思った方もいらっしゃると思いますが、実は神戸市では目録作成をEmacsでやっているんです。
  • というわけで、図書館もRubyを使って、なかなかおもしろそうなことをしているんだな。ということを知って頂ければ幸いです。
  • RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」

    1. 1. 日本の図書館はどのように Ruby を使っているか How libraries in Japan use Ruby? 〜 Next-L Enju と国立国会図書館サーチ〜 Next-L Enju and NDL Search 田辺浩介 Kosuke Tanabe @nabeta
    2. 2. “Library”? <ul><li>“a collection of sources, resources, and services, and the structure in which it is housed” (Cited from Wikipedia)
    3. 3. In this presentation, “collection of sources” does not mean “software”
    4. 4. It is about “books”! </li></ul>
    5. 5. 自己紹介 Self introduction <ul><li>Project Next-L 参加者の一人   one of a member of Project Next-L </li><ul><li>大学の図書館で働いていました I am a librarian, used to work for a library </li></ul><li>その他 </li><ul><li>慶應義塾大学政策・メディア研究科博士課程
    6. 6. 合同会社次世代図書館システム 代表社員 </li></ul></ul>
    7. 7. 「図書館システム」 “Library system”
    8. 8. 図書館システムとは What is “library system”? <ul><li>図書館の業務管理システム business management system for libraries </li><ul><li>受入管理・目録製作 acquisition and cataloging
    9. 9. 蔵書検索( OPAC ) search (including Online Public Access Catalog)
    10. 10. 貸出・返却・予約管理 circulation and reservation
    11. 11. 上記に関わるメール送信や帳票印刷 sending email and printing reciepts </li></ul></ul>
    12. 12. いろいろな図書館システム There are a lot of library systems <ul><li>いろいろな会社がいろいろな言語で作っている a lot of system vendors has been developed a lot of library system software </li><ul><li>Fujitsu, NEC, Mitsubishi, Ricoh…
    13. 13. Java, C, COBOL, Visual Basic, PHP, … </li></ul><li>Ruby はどうか? How about ruby? </li></ul>
    14. 14. Ruby で作った図書館システム Library system written in Ruby <ul><li>まちづくり三鷹さんの 「 Ruby 図書館システム」 “Ruby Toshokan System” produced by Machizukuri Mitaka </li><ul><li>塩尻市図書館(長野県)で導入、 2010 年に公開 Introduced to Shiojiri City Library, Nagano Pref. </li></ul><li>リブネットさんの「トップネット」
    15. 15. Next-L Enju </li><ul><li>Our system! </li></ul><li>すべて Rails 製 All of them are Rails apps </li></ul>
    16. 16. What is Project Next-L? <ul><li>図書館関係者で新しい図書館システムを作ろうとするプロジェクト a project to create a new library system by librarians, researchers and the people interested in library and library system </li><ul><li>http://www.next-l.jp/
    17. 17. http://next-l.slis.keio.ac.jp/wiki/wiki.cgi </li></ul></ul>
    18. 18. What is Project Next-L? <ul><li>2006 年 11 月に慶應義塾大学(当時)の 原田隆史准教授によって開始 started in Novenber, 2006 by Takashi Harada, associated professor, Keio University (at that time) </li><ul><li>現在は同志社大学に移籍 He moved to Doshisha University now </li></ul><li>私は設立時から参加 I joined the project from the beginning </li></ul>
    19. 19. Next-L Enju <ul><li>Project Next-L の成果物 the result of Project Next-L </li><ul><li>http://enju.slis.keio.ac.jp/ http://enju2.slis.keio.ac.jp/ </li></ul><li>Ruby on Rails + PostgreSQL/MySQL + Solr
    20. 20. MIT ライセンスで公開 released under MIT license </li><ul><li>https://github.com/nabeta/next-l </li></ul><li>私が実際の開発作業を行っている </li><ul><li>I am the main developer </li></ul></ul>
    21. 21. なぜ作ろうと思ったか? Why did I started developing Next-L Enju?
    22. 22. 2007 年 ... In 2007... <ul><li>自分の職場に図書館システムが設置されていなかった There was no library system in my library </li><ul><li>小規模で、既存のシステムを導入するとかえって 高コスト too small to introduce an existing library system </li></ul><li>でも紙で作業をするのはめんどくさい but I was lazy to write a paper to lend books </li></ul>
    23. 23. じゃあ 自分で作りたい! I want to develop my own system!
    24. 24. Rails の本を見つける found a book about Ruby on Rails <ul><li>ライド・オン・ Rails 吉田和弘・馬場道明 , ソフトバンク クリエイティブ (2006) </li></ul>
    25. 27. 全文検索の例が! Fulltext search example! <ul><li>acts_as_searchable </li><ul><li>HyperEstraier と組み合わせて全文検索を実現するプラグイン a fulltext search plugin for Rails works with HyperEstraier (fulltext search engine) </li></ul></ul>
    26. 28. 図書館システムと検索 library system and search <ul><li>利用者向けの簡易な検索インターフェース simple user interface for patrons </li><ul><li>単純な検索式、特定の項目を指定しない検索 simple search query </li></ul><li>司書向けの複雑な検索インターフェース advanced user interface for librarians </li><ul><li>複雑な検索式、特定の項目を複数指定する検索 complex search query </li></ul></ul>
    27. 29. 図書館員の検索式 librarian's query <ul><li>「ドラッカー」を含むタイトルで、 「岩崎」さんが書き、 2009 年以降に出版され、 練馬区立図書館で所蔵しており、 現在予約可能な状態になっている本 SELECT * FROM books WHERE title LIKE “%ドラッカー%” AND year_of_publication >= 2009 AND library_code = “nerima” AND reservation IS TRUE; </li></ul>
    28. 30. 練馬区立図書館 http://www.lib.nerima.tokyo.jp/search2.html
    29. 32. 利用者の検索式 patron's query <ul><li>全ての項目から「ドラッカー」を探す場合 search “ドラッカー” from all columns </li><ul><li>SELECT * FROM books WHERE title LIKE “%ドラッカー%” OR author LIKE “%ドラッカー%” OR publisher LIKE “%ドラッカー%” OR subject LIKE “%ドラッカー%”;
    30. 33. It is not cool... </li></ul></ul>
    31. 34. 全文検索 fulltext search <ul><li>PostgreSQL/MySQL で全文検索を実現するよい方法 はないものかと探していた I had been looking for a good way to get fulltext search in PostgreSQL/MySQL
    32. 35. サンプルが期待する動作だったので、そのまま Ruby on Rails で製作を始めることに The sample application just fit, so I started developing with Ruby on Rails from that time </li></ul>
    33. 36. 世の中には人生を変えるサンプルコードがある There is a code that changes someone's life
    34. 37. Ruby の好きなところ things I like about Ruby <ul><li>irb
    35. 38. Array#map
    36. 39. Object.const_get(“Bookmark”) </li><ul><li>“Bookmark”.constantize # ActiveSupport </li></ul></ul>
    37. 40. Railsのよかったところ the best thing about Rails <ul><li>RESTful </li><ul><li>REST API を備える図書館システムやサービスが 増加 the number of library systems and services that have REST API have increased recently </li><ul><li>例 : 新着資料の RSS フィード e.g. RSS feed for new books </li></ul><li>Rails と図書館システムで方向性が合致 Ruby on Rails and next-generation library systems have the same direction </li></ul></ul>
    38. 41. 苦戦したところ problems <ul><li>画面表示が遅い slow response </li><ul><li>著者名・出版社名・所蔵情報・貸出状況など、 一度に DB へのアクセスが発生する many DB access for getting authors, publishers, holdings and circulation information
    39. 42. フラグメントキャッシュで回避 fragment cache solved the problem
    40. 43. 自分のテンプレートの設計が無計画だったため、 キャッシュの削除忘れが多発 I had a lot of trouble in expiring fragment cache because my template files were badly designed </li></ul></ul>
    41. 44. Authors and publishers Holding information Reservation Bookmark Circulation information JOIN
    42. 45. 苦戦したところ problems <ul><li>貸出・返却画面 circulation </li><ul><li>反応が遅いと図書館のカウンターが混雑して利用者を待たせてしまう If circulation is slow, the counter in the library get crowded and patrons have to wait for a long time
    43. 46. ajax 化、過剰な validation を削除 ajaxify, removed excessive validations </li></ul></ul>
    44. 47. 苦戦したところ problems <ul><li>書誌の検索 searching bibliographic data
    45. 48. HyperEstraier の属性インデックスでは機能が不足 “attribute index” in HyperEstraier is not enough
    46. 49. 海外の図書館システムで Apache Solr を知る I've learned that many library systems developed abroad use Apache Solr
    47. 50. acts_as_solr, 次いで sunspot を使用 use acts_as_solr, then sunspot </li></ul>
    48. 51. Next-L Enju の導入館 libraries introduced Next-L Enju <ul><li>物質・材料研究機構 National Institute for Materials Science
    49. 52. 笹川スポーツ財団 Sasakawa Sports Foundation
    50. 53. 環境省図書館 Ministry of Environment </li></ul>
    51. 54. 国立国会図書館サーチ NDL Search http://iss.ndl.go.jp/
    52. 55. 「国立国会図書館サーチ」で Next-L Enju を使用することに National Diet Library chose Next-L Enju as one of the components of “NDL Search”
    53. 56. National Diet Library <ul><li>the only national library of Japan </li><ul><li>Main library in Tokyo and several branch libraries in Tokyo and Kyoto </li></ul><li>the largest library in Japan </li></ul>
    54. 57. 国立国会図書館サーチとは What is NDL Search? <ul><li>通称「 NDL サーチ」
    55. 58. 国立国会図書館の所蔵する資料と、 他機関の資料データベースを一度に検索 search databases in NDL and other organizations at once
    56. 59. 2010 年 8 月 17 日に最初の β 版公開 First beta version released on August 17, 2010
    57. 60. 収録件数は約 5800 万件 about 58 millions records </li></ul>
    58. 61. 国立国会図書館サーチとは What is NDL Search? <ul><li>資料の自動同定処理 automatic identification of bibliographic data
    59. 62. 資料への入手経路を案内 navigation to resources </li><ul><li>近隣の図書館での所蔵情報 n eighborhood libraries that hold the resources </li></ul></ul>
    60. 64. なぜNext-L Enjuを選んだか? Why NDL chose Next-L Enju? <ul><li>国内の商用製品では機能不足 commercial library systems developed in Japan lack some important features </li><ul><li>新しい目録データモデル( FRBR モデル)や 国際標準の WebAPI の実装が欠けている lack of implementing the new data model (FRBR model) and international standard WebAPI
    61. 65. 改修費が高額で機能追加が容易ではない not easy to add a new feature, it costs much </li></ul></ul>
    62. 66. なぜNext-L Enjuを選んだか? Why NDL chose Next-L Enju? <ul><li>成果物をオープンソース・ソフトウェアとして 公開できること should be released as an open-source software </li><ul><li>「全国の図書館のシステム高度化に寄与することを 目的とする」 to contribute improvements of library systems </li></ul></ul>
    63. 67. Next-L Enjuの利用部分 Next-L Enju in NDL Search <ul><li>主にフロントエンドで利用 Next-L Enju is used as a frontend for NDL Search </li><ul><li>利用者向け検索画面 search interface for patrons
    64. 68. 業務用(メタデータ編集用)画面 metadata management interface for librarians
    65. 69. 受入業務は他の図書館システムパッケージを使用 use a commercial library system for acquisition </li></ul></ul>
    66. 70. http://iss.ndl.go.jp/information/system/
    67. 71. 国立国会図書館サーチの動作環境 System environment of NDL Search <ul><li>Ruby 1.8.7
    68. 72. Ruby on Rails 2.3 + thin (on August 2010)
    69. 73. Rails 3.0 + Apache + Passenger 2.2.15 (on May 2011)
    70. 74. データベースは PostgreSQL を使用 using PostgreSQL </li></ul>
    71. 75. 国立国会図書館サーチでの変更点 changes in NDL Search <ul><li>書誌データを XML で持つように変更 store bibliographic data in XML format </li><ul><li>PostgreSQL の TEXT 型フィールドに保存
    72. 76. DCNDL フォーマット (RDF) </li></ul><li>DCNDL の解析に時間がかかることが判明 It turned out that it took a long time to parse DCNDL XML </li></ul>
    73. 77. 国立国会図書館サーチでの変更点 changes in NDL Search <ul><li>オリジナル版では書誌情報は PostgreSQL に 保存し、 Solr には書誌 ID のみを保存する In Next-L Enju, bibliographic data are stored in PostgreSQL. Solr has only documentation ID </li></ul>
    74. 78. Solr PostgreSQL #<docid: 1>, #<docid: 2>, #<docid: 3>, #<docid: 4>, ... id original_title isbn 1 たのしいPerl 4xxxxxxxxx 2 たのしいPHP 4xxxxxxxxx 3 たのしいPython 4xxxxxxxxx 4 たのしい Ruby 4797314087 manifestations Manifestation.find(4) q=ruby docid: 4 Create Solr index on every update #<Manifestation id: 4, original_title: たのしいRuby, isbn: 4797314087>
    75. 79. 国立国会図書館サーチでの変更点 changes in NDL Search <ul><li>国立国会図書館 サーチでは Solr に一部の書誌 情報を持たせ、 検索時には Solr から直接書誌 情報を取得する In NDL search, bibliographic data are stored in Solr and PostgreSQL. Clients fetch data from Solr directly </li><ul><li>Solr への接続も sunspot から rsolr に変更 </li></ul></ul>
    76. 80. Solr PostgreSQL #<docid: 1, original_tile: >, #<docid: 2>, #<docid: 3>, #<docid: 4, original_title: たのしいRuby>, ... manifestations q=ruby docid: 4, original_title: たのしいRuby Create Solr index on batch processing 注意: 実際のNDLサーチ の構成とは異なる場合が あります Note: this picture is an example and it may be different from the actual composition of NDL Search id original_title isbn 1 たのしいPerl 4xxxxxxxxx 2 たのしいPHP 4xxxxxxxxx 3 たのしいPython 4xxxxxxxxx 4 たのしい Ruby 4797314087
    77. 81. 国立国会図書館サーチでの変更点 changes in NDL Search <ul><li>Solr のインデックス作成について、 Next-L Enju 内部ではなく、 Java + Hadoop による 外部コンポーネントで行うように変更 Use an external component (Java + Hadoop) to create Solr index </li><ul><li>Next-L Enju では sunspot で作成を行っている </li></ul></ul>
    78. 82. 国立国会図書館サーチの今後の予定 future plan of NDL Search <ul><li>2012 年 1 月に正式公開 will be officially released on January 2012
    79. 83. NDL サーチ向けに行われた新規開発・変更部分のソースコードも公開予定 its source code also will be available </li><ul><li>時期・方法は未定 It is not determined how and when to release the source code </li></ul></ul>
    80. 84. その他の事例 Other cases
    81. 85. 国立教育政策研究所 教育研究情報センター教育図書館 National institute for Educational Policy Research <ul><li>教科書データベースの PDF 閲覧システムを Ruby で構築 (2007 年) created a PDF viewing system for textbook database in Ruby in 2007 </li></ul>
    82. 87. ある国立大学附属図書館 a national univresity library <ul><li>商用の画像管理システムから取り出した メタデータを OAI-PMH フォーマット (XML) に 変換するために Ruby のスクリプトを使用 use a Ruby script to convert metadata exported from a commercial image management system into OAI-PMH format (XML) </li></ul>
    83. 88. 日本の図書館での Ruby の利用は 今まさに始まった Libraries in Japan just started using Ruby!
    84. 89. 10 年前から Ruby で書いた図書館システムを 使っている図書館が 日本にあります There is a library that has been using a library system written in Ruby for 10 years
    85. 90. 神戸市図書館情報ネットワーク Kobe City Library Information Network System
    86. 91. 神戸市図書館情報ネットワーク Kobe City Library Information Network System <ul><li>神戸市内の公共 ・ 大学図書館のネットワーク library network of public libraries and university libraries in Kobe City </li><ul><li>神戸市立図書館
    87. 92. 神戸市外国語大学学術情報センター
    88. 93. 神戸市看護大学図書館 </li></ul><li>登録利用者 47 万人 、 貸出 703 万冊 ( 2010 年) 470 thousands patrons, about 7 millions checkouts in 2010 </li></ul>
    89. 94. 神戸市図書館情報ネットワーク Kobe City Library Information Network System <ul><li>2001 年のシステムリプレース時に Ruby で業務システムを構築 replaced by a new library system built with Ruby in 2001 </li><ul><li>Ruby 1.6 の時代 Ruby 1.6 at that time
    90. 95. 第 1 回の RubyConf が行われた年 the first RubyConf was held </li></ul></ul>
    91. 96. システムの構成 (1) System structure(1) <ul><li>Ruby 1.8.5
    92. 97. 業務端末 Terminal: ruby/gtk on CentOS
    93. 98. RDB(Oracle) へのアクセス access to RDB(Oracle): Apache + Ruby CGI </li><ul><li>業務端末との間を HTTP でやりとりする use HTTP to communicate with the terminals </li></ul><li>一般公開用蔵書検索 WebOPAC: Apache + Ruby on Rails + fastcgi </li></ul>
    94. 99. Application server (Apache + Ruby CGI) Database server (Oracle) Client (Ruby gtk) CATP(HTTP) CATP: a protocol to exchange bibliographic data between libraries (especially university libraries in Japan). Developed and maintained by National Institute of Informatics. http://www.nii.ac.jp/CAT-ILL/INFO/newcat/catp/mokuji.html CATP(HTTP)
    95. 100. 背景 Background <ul><li>1992 年ごろ汎用機から UNIX への移行を計画 Planning a migration from general-purpose machine to UNIX in 1992
    96. 101. 同時に公共図書館(神戸市立図書館)と 大学図書館(神戸市外国語大学)の システム統合を計画 Planning a consolidation of library systems in the public library and university library </li></ul>
    97. 102. 背景 Background <ul><li>公共向け業務と大学向け業務を同時に扱える パッケージが存在しなかった There is no library software package that can handle business for a public library and an university library
    98. 103. それ以降、独自開発をすることに So they started building a their own library system
    99. 104. 1995 年に統合 systems were integrated in 1995 </li></ul>
    100. 105. なぜ Ruby を選んだのか? Why the library chose Ruby? <ul><li>「多少の改修であれば図書館員が 自分でできるように」 “To enable librarians to modify their system” </li><ul><li>日本語でのサポートが得やすいから technical support in Japanese </li></ul></ul>
    101. 106. システムの構成 (2) System structure(2) <ul><li>Ruby で約 90% Ruby makes up about 90% of the system </li><ul><li>残りは Emacs Lisp と C the rest are Emacs Lisp and C
    102. 107. 目録作成クライアントは Emacs Lisp the c ataloging client software is written in Emacs Lisp </li></ul></ul>
    103. 108. 図書館もなかなか 楽しそうでしょ? There are a lot of interesting things in libraries not only books, aren't they?
    104. 109. 資料作成協力 contributors <ul><li>国立国会図書館サーチ </li><ul><li>中山正樹様、原聡子様、鈴木絢子様 (国立国会図書館)
    105. 110. 田中祐樹様、 櫻井達生様
    106. 111. 株式会社 NTT データ様 </li></ul><li>神戸市図書館情報ネットワーク </li><ul><li>松永憲明様、川口則男様(神戸市立図書館)
    107. 112. 中谷一也様( NEC )
    108. 113. 西鳥尚生様、本多一輝様 ( NEC システムテクノロジー) </li></ul></ul>
    109. 114. 資料作成協力 contributors <ul><li>その他の事例 </li><ul><li>高久雅生様(物質・材料研究機構)
    110. 115. 江草由佳様(国立教育政策研究所) </li></ul></ul>

    ×