BEAYS(新装版)

本と図書館のことについて、つらつら書いてゆくblogです。

NDLサーチ検索結果のRSSを使って、NDLデジコレの地域資料リストを作る方法メモ(Googleスプレッドシート編)

国立国会図書館デジタルコレクション(以下、デジコレ)に含まれる地域資料のリストを作るときの元データを、国立国会図書館サーチ(以下、サーチ)の検索結果RSSGoogleスプレッドシートで作る方法のメモです。誰得です。

はじめに

地域資料のデジタル化は、どこの公立図書館でも喫緊の課題ではある(はずな)んだけど、マンパワーも資金もないのでなかなか進まないのが現状。

ところで、デジコレには、かなりの量の地域資料が収録されているので、これを使わない手はない。たとえば、デジコレに収録されてる自分とこに関係する地域資料のリスト、みたいなものをウェブサイトに公開するといいのでは、と、ここまでは(たぶん)みんな考える。

それを実現したのが、福岡県立図書館さんの「国立国会図書館デジタルコレクションに含まれる福岡県内で出版された図書」。おお、すごい。これ作るの結構タイヘンだったのでは。おまけに、同ページで公開されてるExcelシートの凡例に作り方のあらましが書いてあってありがたい。

で、今回はこれを参考に、Googleスプレッドシートで簡易バージョン(劣化コピーともいう)を作る方法について、メモとして残しておく。

なお、当方、あんましこの手の知識はない(見よう見まねな)ので、もっと良いやり方があれば教えてください。(API叩いて…とかPythonスクレイピング&整形して…とかのツッコミはナシでお願いしますあたしにゃ無理です。)

要は、サーチの検索結果RSSを、Googleスプレッドシートの関数の一つ、「IMPORTFEED」関数*1で取得して、ちょちょい(でもないけど)と整形して、ブックリストを作るための元データを作ります。この方法の長所・短所は以下のとおり。

長所(少ないな)
  • Office(Excel)なくてもできる。
短所(多いな)
  • Googleスプレッドシートが使える環境でないとできない。
  • 網羅性があるかと言われると辛い(特定の書誌事項から検索して出力させてるので、書誌に検索キー(分類記号など)が入力されてなかったりすると漏れる。)
  • 書誌事項が簡易(例えば、責任表示は一つだけ、とか。版とか、出版月とかは取得できないっぽい。)
  • 取得できる書誌URLがサーチのものなので、デジコレで本文を見るには、サーチの書誌画面から飛ばないといけない。(痛い。)
  • 著作権処理情報が取得できない。「インターネット公開資料」かどうか、わからない。(痛い。)でもまあ、ほとんどの資料は、参加館内でしか利用できない「図書館間送信」扱いだったり。

以下、例として、福岡県内の地誌関係書リストを作ってみる。

1.どういうリストを作るか考える

サーチの検索結果からリストを作るので、まず、どういうリストを作るか、そのリストはどうやったらサーチで出力(検索)可能か、を最初に考える。基礎自治体で作るときは、「出版地」に自治体名を入力すればいい。郡や県域レベルだと、自治体数も多いし、合併とかで名称も変わってるので結構大変。むしろ、「分類記号」に、対象地域のNDLCかNDCを入力したほうが早い。(割り切り)

なお、サーチはOR検索に対応していないので、広域のリストを作ろうと思ったら、自治体名や、NDLCやNDCの細目ごとにRSSを取得する必要がある。ちなみに、福岡県のNDLCは、GC263(福岡県〔 筑前筑後豊前〕)、GC265(北九州市)、GC267(その他の各地)で、NDCは219.1。

2.RSSを取得

サーチの詳細検索で必要な事項を入力して、作りたいリストのための検索結果を表示させる。NDCL「福岡県」の資料だと、「分類番号」に「GC263」を入力して、「データベース」のチェックを「国立国会図書館デジタルコレクション」だけにして検索。

NDLサーチの検索結果画面

なお、検索結果数があまりにも多いと、あとあとの作業がめんどいので、適宜、結果数を調整する(出版年で区切るとか)。

結果が適当ならば、画面右にある「検索結果を出力」にある「検索結果のRSS」をクリックして、表示されたページのURLをコピーしておく。また、検索結果件数をメモっておく。(これ大事)

RSS検索結果のリンクを示した画像

検索結果RSSのURLを示した画面

3.GoogleスプレッドーシートでRSSを取得

Googleスプレッドシートを立ち上げて、最初のセルに「importfeed」関数を入力。引数(関数のあとにカッコで入れるもの)には、「"さっきコピったRSSのURL","items"",true,さっきメモった検索結果件数」を記述。RSSのURLとitemsは、""で囲む。

Googleスプレッドシートに「importfeed」関数を入力した画面

itemsは、RSS検索結果から、何を引っ張ってくるかを指していて、今回は、検索結果資料のタイトル、著者、URLなどの書誌事項がそれに当たる。今回は全部引っ張ってきてます。省略可。"true"は、見出し行(TitleとかAutherとか)を含めるかどうか。見出しあったほうがわかりやすいのでつけてます。

成功すれば、読み込み後、サーチ検索結果を「Title」「Auther」「URL」「Date Created」「Summary」の各列に割り振ったシートができる。

GoogleスプレッドシートでRSSを取得した画面

4.Summaryのセルを整形する

できたシートの各列は、それぞれ、「Title」が書名(タイトル)、「Auther」が(第1)責任表示、「URL」がサーチの書誌ページURL、「Date Created」が出版年で、それぞれそのまま使える。
問題は「Summary」で、巻次、出版者、出版年と、その他(タイトル、タイトル読み、NDC)が一つのセルにごちゃっと入っている。めんどいので、巻次、出版者、出版年だけ取り出すことにする。

なお、関数で編集・作成したセルを更に関数でいじったりするとうまく行かなかったりエラーになったりするので、整形の前に、すべてのセルを文字列にしておく。全選択して、値のみ貼り付け。

同じくGoogleスプレッドシートのSplit関数*2を使って、「Summary」のセルを"-"で分割する。「巻次と出版者、出版年」が入力されたセルと、その他(タイトルほか)のセルができる。
なお、Split関数は、指定した文字で文字列を分割して、別のセルに書き出すもので、ここでは、「Summary」内のその他(タイトル、タイトル読み、NDC)の前に付いている"−"で分割している。

「SPLIT」関数でセルを分割している画面

分割された「巻次と出版者、出版年」のセルには、改行や空白文字があるので、列全体を選択して、メニューの「データ」から、「空白文字を削除」を選択。

分割したセルの空白を消している画面

5.リスト作成のための元データ完成

ここまでで、「Title」「Auther」「URL」「Date Created」「巻次と出版者、出版年」が入力された表の出来上がり。

「巻次と出版者、出版年」のセルを更に","で分割することもできる。でも、巻次が入力されいてないものが(当然ながら)あるので、巻次がある行とない行とで、列がずれちゃうのが困りもの。めんどくさいので(多いな)、ここではそのまま。巻次が一番最後に入力されてたらなんとかなるんだけど。それと、「Date Created」は出版年なので重複してるから削除。

あとは、この表を使って、HTMLを書くなり、WordやExcelで整形して紙で印刷するなりすればOK。件数が少なければ、サーチの書誌URLを手入力でデジコレに差し替えるとなお良い感じ。

おわりに

こんなめんどくさいことしなくっても、NDLから「国立国会図書館デジタルコレクション書誌情報」のデータセットが公開されてるので、これを加工すればいいじゃん、て話なんけど、残念ながら、出版地が入ってない。上記で作成した表と、データセットを突合すれば、もっといいものができるのかもしれない。

以上、参考まで。