貧者の横断検索

むかし、複数のサイトをまとめて検索する横断検索が流行ったことがあった。検索窓に検索語を入れてボタンを押すと、複数のウィンドウが開いて、それぞれのサイトを検索する。こうした機能を実現するには、以前はCGIプログラムが使われていて面倒だったが、今はhtmlとJavaScriptだけで作ることができる。

一方、没年調査は、同じ検索語(人名)をいろいろなサイトに貼り付けて検索、という作業が必要。そのため、作業が楽にならないかと考えた結果がこれ。名付けて「貧者の横断検索」(※1)。このサンプルでは、の6つのサイトを検索する。このうち、GoogleとGoogleブックスは、検索語を ""(二重引用符)で囲んで、フレーズ検索を行なうようにしている(※2)。自分で作った横断検索なら、検索するサイトを取捨選択したり、細かいカスタマイズ可能になる。これは大きなメリット。

元ネタは、教えて!goo一括検索ページを作るには何が必要?。このままだと複数のウィンドウが同時に開いてしまうので、SAMURAI ENGINEER【JavaScript入門】処理を一時停止するsleep機能の実現方法まとめ を参考にして、時間差をつけて順番に開くようにした。

この中で一番面倒なのは、検索サイトを解析して、検索用のURLを作る部分。それには、検索サイトでいろん検索をしたり表示順を変えたりして、URLの部分がどう変るのかをチェックする必要がある。検索サイトに簡易検索と詳細検索がある場合は、最初は簡易検索のURLで設定して動くことを確認して、さらに詳細検索のURLをチェックしてきめ細かく設定するといいだろう。また、検索用APIがある場合はそれを利用するのが簡単かもしれない。

以下はサンプルのhtml(ダウンロード)。検索サイトのURLのサンプルもつけたので、適当に直して使ってほしい

なお、このサンプルでは6つのウィンドウ(タブ)を開くだけだが、開く数を増やすと、それなりに負荷がかかる。また、ループで無限に開くようにするとブラウザクラッシャーになってしまうので、ご利用は自己責任ということで。


<!DOCTYPE html>

<html lang="ja">

<head>

<meta charset="utf-8">

<title>貧者の横断検索</title>

</head>

<body>


<script>

<!--

function SEARCH(VAL){

AR = new Array();


// 著作者情報公開調査

AR[0] = "https://dl.ndl.go.jp/openinq/search?keyword="+VAL;


// Web NDL Authorities

AR[1] = "https://id.ndl.go.jp/auth/ndla/?g=all&qw="+VAL;


// 国立国会図書館デジタルコレクション

AR[2] = "https://dl.ndl.go.jp/search/searchResult?accessRestrictions=inlibrary&accessRestrictions=ooc&accessRestrictions=internet&collection=A00001&collection=A00002&collection=A00003&collection=A00014&collection=A00015&collection=A00017&collection=A00016&collection=A00019&collection=A00121&collection=A00024&collection=A00152&collection=A00150&collection=A00122&collection=A00162&collection=B00000&fullText=true&eraType=AD&identifierItem=ISBN&includeVolumeNum=true&pageNum=0&pageSize=50&sortKey=ISSUED_ASC&displayMode=list&keyword="+VAL;


// CiNii Research

AR[3] = "https://cir.nii.ac.jp/all?count=100&sortorder=1&lang=ja&q="+VAL;


// Google

AR[4] = "https://www.google.co.jp/search?q=\""+VAL+"\"";


// Googleブックス

AR[5] = "https://www.google.co.jp/search?&tbm=bks&q=\""+VAL+"\"";


// 配列に格納した検索エンジンのURL分ウィンドウを開く

for(i = 0; i < AR.length; i++){

window.open(AR[i]);

sleep(500);

}


// 処理を一時停止

function sleep(waitMsec) {

var startMsec = new Date();

while (new Date() - startMsec < waitMsec);

}


//----------------------------------------------

// 検索サイトのサンプル


// 国立国会図書館サーチ

// AR[] = "https://ndlsearch.ndl.go.jp/api/openurl?any="+VAL;


// 次世代デジタルライブラリー

// AR[] = "https://lab.ndl.go.jp/dl/fulltext?from=0&sort=publishyear%3Adesc&searchfield=&keyword="+VAL;


// CiNii Dissertations

// AR[] = "https://ci.nii.ac.jp/d/search?advanced=false&count=100&sortorder=2&l=ja&fulltext="+VAL;


// J-Stage

// AR[] = "https://www.jstage.jst.go.jp/result/global/-char/ja?fromPage=%2Fsearch%2Fglobal%2F_search%2F-char%2Fja&freeText=&item1=4&cond1=&notCond1=0&item2=&word2=&cond2=&notCond2=&item3=&word3=&cond3=&notCond3=&item4=&word4=&notCond4=&count=50&from=0&order=6&type=&license=&attribute=&languageType=&option=&yearfrom=&yearto=&category=&cdjournal=&favorite=&translate=0&bglobalSearch=false&sortby=6&showRecodsH=50&showRecords=50&word1="+VAL;


// 全国短期大学紀要論文索引PLUS

// AR[] = "https://opac.jissen.ac.jp/repo/repository/tandai/search/simple/?lang=0&mode=0&list_sort=2&disp_cnt=100&req=search&con_kywd="+VAL;


// BIBLIS PLUS

// AR[] = "https://opac.jissen.ac.jp/repo/repository/bunken/search/simple/?lang=0&mode=0&list_sort=3&disp_cnt=100&req=search&con_kywd="+VAL;


// HathiTrust

// AR[] = "https://babel.hathitrust.org/cgi/ls?field1=ocr;a=srchls;sz=100;q1=\""+VAL+"\"";


// Internet Archive

// AR[] = "https://archive.org/search.php?sin=TXT&sort=date&query=\""+VAL+"\"";


//----------------------------------------------


//-->

</script>


<form onSubmit="SEARCH(this.TXT.value);return false;">

*<input type="text" size="15" name="TXT"><input type="submit" value="横断検索">

</form>


</body>

</html>

2023年3月9日作成/2024年16日修正

1 「貧者の横断検索」は、菅育夫(明治学院大学図書館)の「発想力とOPEN」ということについてInternet Archiveにリンク)にあったことば。やっていることは基本的に同じなので、ことばを拝借させてもらった。

※2 Googleのフレーズ検索は、完全に一致した人名だけ検索してくれるので便利。欠点は、人名の漢字に旧字体と新字体がある場合は、旧字体と新字体のそれぞれで検索する必要があることかな。ついでに、Googleでたくさん検索するなら、ページめくりが楽になるように、Googleにログインして検索の設定を開き、連続スクロールをオンにするか、ブラウザにAutoPagerizeのような拡張機能を追加するといいだろう。