半歩前進

今日試したこと(不具合調査)

  • エンコードのタイミングを変更
    • phpbk1の検索したWebページを持ってくるときに、あらかじめurlencodeするように変更
    • 文字列の判断もエンコード後の文字列を指定した
    • 後述する理由のため書名中に含まれる半角スペース以降を削除した
これにより正しく書名での検索が行えるようになった
  • 半角スペースをデリミタとして書名を削る理由
    • 以下の表は東北6県の書名検索しかできない図書館の巻次、副書名の指定可否と指定方法をまとめたものである
県名 館名 巻次 副書名 指定方法
青森 板柳町
書名+半角または全角空白+副書名+巻次
岩手 花巻市
巻次欄に(巻次、または副書名)
  雫石町
巻次欄に(巻次、または副書名)
  平泉町
書名+半角空白+巻次(または副書名)
  矢巾町
×
2個目の書名欄に副書名(を含むの条件で)
宮城 仙台市
×
×
 
  石巻市
×
書名+副書名(空白を置かず)、巻次はキーワードへ
  利府町
×
×
 
秋田 県立
×
2個目の書名欄に副書名
  秋田市
×
2個目の書名欄に副書名
  横手市
×
×
 
  東成瀬村
書名+全角空白+巻次?
サンプルが少ないため副書名の扱い不明
山形 県立
×
2個目の書名欄に副書名
  酒田市
×
×
 
  川西町立
×
2個目の書名欄に巻次
福島 県立図書館
×
×
 
  相馬市
×
×
 
  国見町
書名+全角空白+巻次(または副書名)
    • 書名以外の指定が出来ない館が多く、巻次、副書名のいずれに相当するかが機械的判断できない
      書名のみでの検索を行えばヒットする件数は多くなるが、検索もれは防げるのではないか?

既知の問題と残件

  • bk1に該当する書籍がなかった場合の対処
    • Amazonでの書名を使用するが、bk1の場合と異なりデリミタとなる文字が明確でない
      この場合のみ書名の編集を許すのか?
      →ブラウザ固有の文字化けが再燃する
  • bk1の書名を用いて検索を行う場合(通常パターン)明示的にどの文字列で検索を行うかあらわす必要はないか?
    • 現在、正しく表示できないため、検索文字列を表示していない

今後の方針

県名 機能 ISBN検索 書名検索 非同期通信 蔵書がない場合の
図書館へのリンク
備考
青森
×
 
岩手
 
宮城
×
×
 
秋田
×
×
×
全館検索すると無反応
山形
×
 
福島
×
×
×
4館のみ対象

岩手県の機能はISBN検索ができない図書館についても内部的にISBN→書名変換を行い正しく検索ができている
また、非同期での検索を行っているため、検索結果が返ってきた館から表示出来、あまりストレスを感じないつくりになってる
蔵書がない図書館もリンクしているのがうれしい
宮城県も非同期であるが、書名検索のみなのが残念
秋田県は同期的に検索(これの結果が返ってきたから次の検索)しているため、全ての検索が終了しないと検索結果がわからない
→横断検索がない県について検索サイトを作ることは有効ではないか?
まずは青森、山形の検索サイト(福島版と同等)から

備考

最新版(テスト版)のBookmarklet

javascript:(function(){var is,a=document.body.innerHTML;a.match(/ASIN.?(\d{9}[X\d])/i)
|a.match(/ISBN.?(\d{9}[X\d])/i)|a.match(/(\d\-[\-\d]{9}\-[X\d])/);is=RegExp.$1.replace(/-/g,'');
if(!is){alert('NO ISBN');}else{window.open('http://natu.blue.coocan.jp/Fukushima_Search3.htm?ISBN1='+is);}})();

頻繁に入れ替えを行っているため、404になったり正しく動作しないことが良くあります
安定版は

javascript:(function(){var is,a=document.body.innerHTML;a.match(/ASIN.?(\d{9}[X\d])/i)
|a.match(/ISBN.?(\d{9}[X\d])/i)|a.match(/(\d\-[\-\d]{9}\-[X\d])/);is=RegExp.$1.replace(/-/g,'');
if(!is){alert('NO ISBN');}else{window.open('http://natu.blue.coocan.jp/Fukushima_Search.htm?ISBN1='+is);}})();

または

javascript:(function(){var is,a=document.body.innerHTML;a.match(/ASIN.?(\d{9}[X\d])/i)
|a.match(/ISBN.?(\d{9}[X\d])/i)|a.match(/(\d\-[\-\d]{9}\-[X\d])/);is=RegExp.$1.replace(/-/g,'');
if(!is){alert('NO ISBN');}else{window.open('http://natu.blue.coocan.jp/menu.htm?ISBN1='+is);}})();