「さくさく君」更新
PORTAのサービス停止に伴い、さくさく君はNDLサーチ対象のものに移行しました。
「BookListMaker さくさく君」
「ブックリストメーカー さくさく君(ver.drk7)」
が、新しいものです。
以前のものも残ってるので、ブログの過去記事からたどれると思いますが、PORTAが止まってますので、動きません。
新しいのは「簡易版」と「詳細版」の切り替えが出来ます。
これは、NDLサーチがサイズ(大きさやページ数)や価格を取れなかったためです。
これらを取るために「詳細版」は書誌ページにアクセスしているため、
結構重くなります。その代わり、著者や、出版者の読みも取れるようにしましました。
「りぶりぶ」のlibmarcもこっちに対応版にしたいところです…。
ついでに「りぶりぶ」はベースになるWebシステムについてもxamppポータブルに、
しようかた…。MySQLが必須でない(SQLiteとAccessをフォローする)部分は変更しないので、
xammpとは言えないかも、ですが。
さくさく君に話を戻すと、
簡易版は、ISBN、分類番号、タイトル、著者、出版者、タイトル読みのみ、です。
もともとの目的な寄贈された本をリスト化し共有するためのツール、
だったので、サイズや定価はぜひ欲しい情報だったのですが、
用途によっては軽快な簡易版の方がいいと思います。
バグについては、おいおい気付いたのは直したいです。
取りあえず、安定的に動くのは、「BookListMaker さくさく君」かな?
「BookListMaker さくさく君」
「ブックリストメーカー さくさく君(ver.drk7)」
が、新しいものです。
以前のものも残ってるので、ブログの過去記事からたどれると思いますが、PORTAが止まってますので、動きません。
新しいのは「簡易版」と「詳細版」の切り替えが出来ます。
これは、NDLサーチがサイズ(大きさやページ数)や価格を取れなかったためです。
これらを取るために「詳細版」は書誌ページにアクセスしているため、
結構重くなります。その代わり、著者や、出版者の読みも取れるようにしましました。
「りぶりぶ」のlibmarcもこっちに対応版にしたいところです…。
ついでに「りぶりぶ」はベースになるWebシステムについてもxamppポータブルに、
しようかた…。MySQLが必須でない(SQLiteとAccessをフォローする)部分は変更しないので、
xammpとは言えないかも、ですが。
さくさく君に話を戻すと、
簡易版は、ISBN、分類番号、タイトル、著者、出版者、タイトル読みのみ、です。
もともとの目的な寄贈された本をリスト化し共有するためのツール、
だったので、サイズや定価はぜひ欲しい情報だったのですが、
用途によっては軽快な簡易版の方がいいと思います。
バグについては、おいおい気付いたのは直したいです。
取りあえず、安定的に動くのは、「BookListMaker さくさく君」かな?
OPACで入力補助してみよう
最近、個人的にキーワードサジェストの話題が熱いです。
WSの時に質問されたり、知っている人がcovo.jsを発表したり…
なんか、そういうのが続くと、やってみたくなります。
で、ちょっと前に公開されていたNDLサーチのキーワードサジェスト機能を見て、
なんとなくイメージがもやもやと湧いてきました。
こうなると寝れなくなるんで、実装してみるか、数日不眠を我慢するかの2択なんですが、
そんなに難しくなさそうなので、使い物になるか、ならないかは別として、作ってみることにします。
んでは、作り始めてみましょう。
用意するものは2つ。
javascriptのプログラムと、サジェストリスト(候補リスト)です。
プログラムはcovo.jsとか、いろいろありますんで、それをちょいちょいっと変えると、良さそうです。
今回選んだのは、suggest.js。
いろんな形のデモがあるのと、他のjsファイル(jqueryとかそういうの)が無くても動く。
あと、日本語で解説してあるのが、良かったところ。基本、外国語出来ない子です。
もちろんMITライセンスというのもとてもGood。
やりたいことをちょいちょい、とカスタマイズしたのがcathand.js
サジェストリストにcsvファイルを指定して、非同期で読み込むようにしました。
あと、表記,よみ、という二次元配列を対象にしました。
まあ、ほぼそののままでございます。
次にサジェストリスト、です。
これって難しく考えると、どつぼにはまってしまうんですよねー。
効率的なサジェストリストって、どういうんだろうー?
というのは、今回は脇に置きます。
むしろ、いかに効率的(簡単)にリストを作るか、を優先。
始めてみないと始まんないですからね、取りあえず、不具合があったら治せばいいじゃん?みたいな。
で、単純になんとかベストを元に作ってみようかな、と。
今回ベースにしたのは、インターネット予約ベストです。上位5000位ぐらいまで。(このくらいになると同率がすごいことになるので微調整してます)
ちなみに、インターネット予約全体のうち、上位5000位までが占める割合は41.9%でした。
(トップ10だと約1.5%、トップ100だと約5.5%)
取りだした項目は、著者|著者よみ、件名|件名よみ、タイトル|タイトルよみ、の6項目。
タイトルは巻数を抜いてグループ化、著者や件名もグループ化して重複を省くと、
リストとしては10000件強。
データの大きさとしてこれ以上だと重いので、10000件程度を目安に微調整します。
おおざっぱに言うと、書誌毎ではなく各項目ごとに順位を出して(予約を受けた著者トップ5000的な)
その中からタイトルの比率を減らして、著者や件名を多めに入れるようにました。
この手法だとバッチファイルを書いて、Autoexecを仕込んだAccessファイルがあれば、自動化出来ます。
このあたりは、AccessやSQLで出来てしまえば、簡単ですが、出来ない場合には、
一度、予約トップ5000のリストを作成して、Excelなどを使って手作業してもよいかも。
よみがなが取れないという場合、Excelなら、マクロでSelection.SetPhonetic で自動で振ってくれるようです。
まあ、人名とかはかなり無理っぽいですが。
データを 表記,よみがな の形のcsvファイル(Ajaxで読み込むので文字コードはUTF-8で)で保存したら、サジェストリストは完成。
で、出来たもんがなんちゃってサジェストです。
WSの時に質問されたり、知っている人がcovo.jsを発表したり…
なんか、そういうのが続くと、やってみたくなります。
で、ちょっと前に公開されていたNDLサーチのキーワードサジェスト機能を見て、
なんとなくイメージがもやもやと湧いてきました。
こうなると寝れなくなるんで、実装してみるか、数日不眠を我慢するかの2択なんですが、
そんなに難しくなさそうなので、使い物になるか、ならないかは別として、作ってみることにします。
んでは、作り始めてみましょう。
用意するものは2つ。
javascriptのプログラムと、サジェストリスト(候補リスト)です。
プログラムはcovo.jsとか、いろいろありますんで、それをちょいちょいっと変えると、良さそうです。
今回選んだのは、suggest.js。
いろんな形のデモがあるのと、他のjsファイル(jqueryとかそういうの)が無くても動く。
あと、日本語で解説してあるのが、良かったところ。基本、外国語出来ない子です。
もちろんMITライセンスというのもとてもGood。
やりたいことをちょいちょい、とカスタマイズしたのがcathand.js
サジェストリストにcsvファイルを指定して、非同期で読み込むようにしました。
あと、表記,よみ、という二次元配列を対象にしました。
まあ、ほぼそののままでございます。
次にサジェストリスト、です。
これって難しく考えると、どつぼにはまってしまうんですよねー。
効率的なサジェストリストって、どういうんだろうー?
というのは、今回は脇に置きます。
むしろ、いかに効率的(簡単)にリストを作るか、を優先。
始めてみないと始まんないですからね、取りあえず、不具合があったら治せばいいじゃん?みたいな。
で、単純になんとかベストを元に作ってみようかな、と。
今回ベースにしたのは、インターネット予約ベストです。上位5000位ぐらいまで。(このくらいになると同率がすごいことになるので微調整してます)
ちなみに、インターネット予約全体のうち、上位5000位までが占める割合は41.9%でした。
(トップ10だと約1.5%、トップ100だと約5.5%)
取りだした項目は、著者|著者よみ、件名|件名よみ、タイトル|タイトルよみ、の6項目。
タイトルは巻数を抜いてグループ化、著者や件名もグループ化して重複を省くと、
リストとしては10000件強。
データの大きさとしてこれ以上だと重いので、10000件程度を目安に微調整します。
おおざっぱに言うと、書誌毎ではなく各項目ごとに順位を出して(予約を受けた著者トップ5000的な)
その中からタイトルの比率を減らして、著者や件名を多めに入れるようにました。
この手法だとバッチファイルを書いて、Autoexecを仕込んだAccessファイルがあれば、自動化出来ます。
このあたりは、AccessやSQLで出来てしまえば、簡単ですが、出来ない場合には、
一度、予約トップ5000のリストを作成して、Excelなどを使って手作業してもよいかも。
よみがなが取れないという場合、Excelなら、マクロでSelection.SetPhonetic で自動で振ってくれるようです。
まあ、人名とかはかなり無理っぽいですが。
データを 表記,よみがな の形のcsvファイル(Ajaxで読み込むので文字コードはUTF-8で)で保存したら、サジェストリストは完成。
で、出来たもんがなんちゃってサジェストです。
「在架なう!」
そういえば、「在架なう!」あるいは、Booktrack On Web(ウェブ上のブックトラック)について、
何も整理していなかったので、この辺で思うところをちょっと整理してみようと思います。
ソースの紹介は、こちら
http://wemfls.web.fc2.com/btow/index.html
http://wemfls.web.fc2.com/btow/index2.html
見せ方のソースだけです。
そもそもの始まりは、図書館で「新着図書」や「話題の本」を紹介したって、
どうせ貸出中でしょ?というところでした。
だから、今すぐ貸出が出来る資料を紹介する仕組みが出来ないか、
と思って作ったのが「在架なう!」です。
実際の運用では
「棚に戻ってきた資料(在架の資料)を、作業日時の降順に400件」抽出したリストをつくるバッチプログラム
(30分毎でタスクで実行される)と、
上記で紹介しているそれをHP上に表示するプログラム、の二本立てで動いています。
バッチプログラムが、「在架なう!」の方向性を決めるわけで、
他の検索条件を設定すれば、「特集なう!」とか「文学賞なう!」とかで
特集図書や、文学賞受賞作品のうち、すぐ手に取れるもの、でもいいわけです。
大事なことは、きちんとバッチ(SQL)で条件付け出来るようなタグをつけること。
例えば、特集本の配架場所を変更するんであれば、
いちいちリストを更新しなくても配架場所で抽出するバッチプログラムを組めば、
自動で更新されます(累積できないんで推奨しませんが)し、
文学賞なら、件名か注記にでも受賞情報突っ込んでおけば、検索キーになります。
まあ、つまり「在架なう」は「バッチでリスト化された資料をアニメーションで表示する」
というものなんです。
何も整理していなかったので、この辺で思うところをちょっと整理してみようと思います。
ソースの紹介は、こちら
http://wemfls.web.fc2.com/btow/index.html
http://wemfls.web.fc2.com/btow/index2.html
見せ方のソースだけです。
そもそもの始まりは、図書館で「新着図書」や「話題の本」を紹介したって、
どうせ貸出中でしょ?というところでした。
だから、今すぐ貸出が出来る資料を紹介する仕組みが出来ないか、
と思って作ったのが「在架なう!」です。
実際の運用では
「棚に戻ってきた資料(在架の資料)を、作業日時の降順に400件」抽出したリストをつくるバッチプログラム
(30分毎でタスクで実行される)と、
上記で紹介しているそれをHP上に表示するプログラム、の二本立てで動いています。
バッチプログラムが、「在架なう!」の方向性を決めるわけで、
他の検索条件を設定すれば、「特集なう!」とか「文学賞なう!」とかで
特集図書や、文学賞受賞作品のうち、すぐ手に取れるもの、でもいいわけです。
大事なことは、きちんとバッチ(SQL)で条件付け出来るようなタグをつけること。
例えば、特集本の配架場所を変更するんであれば、
いちいちリストを更新しなくても配架場所で抽出するバッチプログラムを組めば、
自動で更新されます(累積できないんで推奨しませんが)し、
文学賞なら、件名か注記にでも受賞情報突っ込んでおけば、検索キーになります。
まあ、つまり「在架なう」は「バッチでリスト化された資料をアニメーションで表示する」
というものなんです。
国会図書館のダウンロードサービスから「りぶりぶ」の書誌を作る
きっかけは、地元の博物館の方に、そこの所蔵資料の整理の相談をされたことだったのですが、
ほとんどがISBNが無い資料で、NDLのダウンロードサービスを使って資料の整理をしている、
という話を伺い、なるほどなーと思って、
NDLの検索結果ダウンロードサービスから書誌を作る仕組みを作ってみました。
「さくさく君」と同じく、libmarc登録から行うことが可能です。
ついでに「書誌一覧(とそこからの書誌削除)」機能を追加し、
詳細画面の改善(になってればいいな)などを行いました。
その前に上げていた「りぶりぶ」がなぜかバーコード印刷機能が無いものになっていて、
それもあわてて修正をかけました。
バージョン管理、きちんとしないといけないな、と反省しています。
取りあえず、現在Ver1.00aとして、上記の機能についてくっつけたものを
公開しました。
これからは、元のバージョンを消さずにファイルをアップロードしていった方がよいかも?
と思っています。
データベース構造的な変更はありませんので、「libriv」フォルダの更新のみで
新しいものになります。
いくつかバグ取りもしてます。
ついでに、「javascript実験室」にいくつかコンテンツを上げました。
実はすでにWebに上がっていたんですが、公開していなかった、みたいなものについて
リンクをした形です。
GoogleのDynamicFeedControlを使った、カーリルレシピの紹介とか、
Cinii論文・記事検索APIから、千葉県立図書館の新聞・雑誌総合目録検索仕組みとかです。
最後に「web-OPAC+」のソースを探してる的な呟きを見たんですが、
これはjavascriptなんで、ある意味オープンソース?
web-OPAC+をやってるサイトから、ご自由にご覧頂いて構いません。
自館に特化しているものであまり参考にならないかもしれませんが、
出来る限りコメントはつけています。
ただ、自館に特化しているし、同一ドメインじゃないと動かないので、
wemflsのサイトには載せにくい、という感じです。
ソースの流用はご自由に、ただし自己責任で、とここで言っておきます。。
ほとんどがISBNが無い資料で、NDLのダウンロードサービスを使って資料の整理をしている、
という話を伺い、なるほどなーと思って、
NDLの検索結果ダウンロードサービスから書誌を作る仕組みを作ってみました。
「さくさく君」と同じく、libmarc登録から行うことが可能です。
ついでに「書誌一覧(とそこからの書誌削除)」機能を追加し、
詳細画面の改善(になってればいいな)などを行いました。
その前に上げていた「りぶりぶ」がなぜかバーコード印刷機能が無いものになっていて、
それもあわてて修正をかけました。
バージョン管理、きちんとしないといけないな、と反省しています。
取りあえず、現在Ver1.00aとして、上記の機能についてくっつけたものを
公開しました。
これからは、元のバージョンを消さずにファイルをアップロードしていった方がよいかも?
と思っています。
データベース構造的な変更はありませんので、「libriv」フォルダの更新のみで
新しいものになります。
いくつかバグ取りもしてます。
ついでに、「javascript実験室」にいくつかコンテンツを上げました。
実はすでにWebに上がっていたんですが、公開していなかった、みたいなものについて
リンクをした形です。
GoogleのDynamicFeedControlを使った、カーリルレシピの紹介とか、
Cinii論文・記事検索APIから、千葉県立図書館の新聞・雑誌総合目録検索仕組みとかです。
最後に「web-OPAC+」のソースを探してる的な呟きを見たんですが、
これはjavascriptなんで、ある意味オープンソース?
web-OPAC+をやってるサイトから、ご自由にご覧頂いて構いません。
自館に特化しているものであまり参考にならないかもしれませんが、
出来る限りコメントはつけています。
ただ、自館に特化しているし、同一ドメインじゃないと動かないので、
wemflsのサイトには載せにくい、という感じです。
ソースの流用はご自由に、ただし自己責任で、とここで言っておきます。。



