NDL書誌データ取得シート (2014/05/20)


概要

  「NDL書誌データ取得シート」は,国立国会図書館サーチを利用して,ISBNリストを元に国会図書館が提供する書誌データを取得しようとするために開発したツールである。 国立国会図書館サーチで公開されたWebAPIを用いて,指定したISBNごとに該当する図書の検索を行い,該当する図書が存在する場合にはその書誌データを取得することができる。非営利での利用であれば,書誌データの取得に際して国立国会図書館への許諾などをとる必要はない。また,本ツールで取得できる書誌データは国立国会図書館サーチに収録されているデータのうち,国立国会図書館が作成したものだけであり,商用MARCベンダーが作成したものは含まれない。したがって,本ツールで取得したデータは,個人や図書館などで自由に使うことができる。さらに,この「NDL書誌データ取得シート」自体も無償で自由に使ってもらうことを目的に公開しているものであり,使用に際しての対価や許諾は必要ない。使って便利であったという感想や,修正点などの希望は歓迎ではあるが...
  このツールは,Excelのマクロ(VBA)で記述されており,Excelを使うことができる人であれば,誰でも簡単に利用することができる。また,マクロのソースコードも公開されており,シンプルな構成となっている。したがって,たとえば自分たちの利用している図書館システムの仕様にあわせて,書誌データが取り込まれる列の順番を変更したい場合などは,少しの学習でも容易に変更することが可能なものとなっている。プログラムの修正などについては後述する。

入手と操作方法

1. 「NDL書誌データ取得シート」のダウンロード
「NDL書誌データ取得シート」は,ここをクリックすることで入手することができる。
2. 「NDL書誌データ取得シート」の起動
ダウンロードした後,Excel(Excel 2007以降)が動作する環境でファイルをクリックすると,以下のような警告メッセージが表示されるが,それぞれ「編集を有効にする(E)」「コンテンツの有効化」をボタンを押す。これらは,前者がインターネット上からダウンロードしたファイルの編集が標準では無効になっているという警告,後者がマクロの使用が標準では無効になっているという警告である。

ダウンロードファイルの警告
Fig.1 ダウンロードファイルの編集に関する警告
マクロ無効の警告
Fig.2 マクロの利用に関する警告

3. ISBNの入力
「NDL書誌データ取得シート」は,Fig.3に示すように B列の2行目から下に ISBN を入力するように設計されている。ISBNの入力に際しては手入力しても良いが,最近の図書では裏表紙にISBNがバーコードで印刷されていることが多いためバーコード・リーダーを利用する方法も効果的である。バーコードリーダーは,楽天やAmazon.co.jpなどでも2000円台前半の価格から購入することができるようである[ Amazon.co.jp へのリンク ]。取得できる ISBN の件数に制限はないが,あまりに多くの書誌データを取得しようとした場合,時間がかかりすぎたりネットワークエラー発生時に再度やり直すことになったりする可能性があるため,適当な冊数に分けて取得する方が望ましい。なお,このシートでは ISBN が入力されていない行を検知して取得を終了するように設計されているため,途中に ISBN が抜けている行を含むことはできない(ISBN が抜けている行があれば,その行でストップする)ことに注意されたい。

ISBNの入力画面
Fig.3 ISBNの入力画面

4. 書誌データの取得
書誌データの取得は,B列1行目右にある「取得」ボタンを押すことで実行される。ISBNか入力されている行について,2行目から下に各書誌データが読み込まれていく。C〜L列に読み込まれたデータは,単なるExcelのテキストデータであるので,後は目的に応じて自由に使用することができる。なお,B列で入力したISBN部分には国立国会図書館サーチに対するリンクも自動的に付与されている。
また,いくつかの図書については行全体が網掛けされていることがある。この網掛けされた書誌データは「作成中書誌」を意味している。「作成中書誌」とは,国立国会図書館が納本制度などで受け入れた図書の書誌データを作成するにあたって作成までの時間がかかることから,暫定的に作成途中の書誌データを公開しているものである。ただし,「作成中書誌」といえども公開するに足るだけの品質を持ったものであり,またMARC作成業者が作成したものがベースとなっていることも多い。したがって「作成中書誌」とはいっても通常の利用に大きな問題はないと原田研究室では判断している。必要に応じて網掛けで表現「作成中書誌」を一定期間(2〜3ヶ月後)に正式な書誌と置き換えるなどの対応を検討されたい。

書誌データの取得
Fig.4 書誌データの取得

マクロの修正(読み込まれる項目列の順番の入れ替えや修正・削除を例に)
 書誌データを利用する人の中には,図書館システムや蔵書管理システム・読書管理システムなどを使用していて,各システムにあわせて取得する書誌データ列の順番を入れ替えたり,不必要な列を削除したいなどの要望を持つ人もいると思われる。「NDL書誌データ取得シート」は,プログラムのソースコードそのものを公開しており,自由に改変して使用してもよい。以下に修正方法の例を簡単に説明する。

1. マクロ編集画面の呼び出し
マクロの修正に際しては,「表示」メニューで表示されるリボン中の「マクロ」アイコンをクリックし(アイコン下の部分を選択して「マクロの表示」を選んでも同じ),マクロ名として 「Main」 が選択されていることを確認して「編集」ボタンをクリックする。

マクロ編集画面の呼び出し(1)
Fig.5 マクロ編集画面の呼び出し(1)

マクロ編集画面の呼び出し(2)
Fig.6 マクロ編集画面の呼び出し(2)

2. マクロ編集画面
Fig.7に示すような「Microsoft Visual Basic for Application - ndls_harvest.xlsm」という画面が表示される。「NDL書誌データ取得シート」は,わずか140行ほどの(空白行を含む)小さなプロクラムであり,「Sub Main」,「Sub Search」「Function GetContents」「Function GetNodes」の4つの部分から構成されている。このうち,「Sub Search」の部分が,各行ごとの書誌データ取得,取得したデータのセルへの書き込みを担当している。項目の順番を変えたり修正・削除を行う場合は,この部分だけを修正することとなる。なお,「Sub Main」は 2行目から順にISBNが入力されてる限り書誌データを取得し続けるという処理全体を記述しており,「Function GetContents」「Function GetNodes」は,それぞれインターネットアクセス,取り込んだ書誌データの前処理を行う部品である(正確な表現ではないが,大胆にざっくりと説明すれば)。

マクロ編集画面
Fig.7 マクロ編集画面

3. WebAPIとXML
本シートで利用している国会図書館サーチは,通常のGUI(グラフィカル・ユーザ・インタフェース : 人間が見て操作することを前提とした画面)以外に,コンピュータプログラムからのアクセスを前提とした仕組みも用意されている。これをWebAPIと呼ぶ。WebAPIではプログラムでの利用が前提となっているため,表示される内容も飾りなどは必要なく,逆にどのデータがどの項目に対応しているのかが明確に表示され構造化された形式であるのが通例である。このような構造化された形式の代表がXMLである。たとえば,国会図書館サーチのWebAPIに対して,ISBN が 9784560026373 である書誌データを検索した時に,結果として送ってくるデータは「このような形式 」となっている。
 この例に見られるように,XMLでは書誌データが構造化されて蓄積されており,それぞれの書誌事項がコンピュータでも理解できるように記述されている。たとえば上の例では,該当する図書のタイトルとして dcterms:title という項目名(要素名と呼ぶ)が用いられている(実際には,項目間の包含関係まで含んで以下のように表記する(絶対パス)ことが多い)。このような要素名と要素間の関係を用いてデータを検索する仕組みをXPathと呼ぶ。

/searchRetrieveResponse/records/record/recordData/rdf:RDF/dcndl:BibResource/dcterms:title

 本シートでは,この XPath を利用して国会図書館サーチからデータを検索し,その結果をシートに書き込んでいる。

4. 表示項目順序の変更
本シートでは,国会図書館サーチから検索結果として送られてくるデータを絶対パス(前項参照)で表現した時に,各書誌項目で共通の部分を

Const NodePath = "/searchRetrieveResponse/records/record/recordData/rdf:RDF/dcndl:BibResource"

に記述し,各書誌項目ごとの要素名を xpath(1) 〜 xpath(10) に記述して順に C列 から L列 に表示している。
 そこで,表示項目を変更したい場合は,xpath(1) 〜 xpath(10) の番号を入れ替えれば,表示順序を変更することができる。たとえば,現状の 「C列:タイトル,F列:出版年」を「C列:出版年,F列:タイトル」にしたい場合は,xpath(1) = "dcterms:issued" とし,xpath(4) = "dcterms:title" と記述すればよい。ただし,xpath(6)(H列)とxpath(8)(J列)については,Fig.8 に示す部分における j = 6 および j = 8 の部分も修正しないといけないので注意が必要となる。

 また同様に,表示項目を削除したり追加する場合には,不必要な項目を削除して番号を詰めたり(xpath(1) 〜 xpath(8) までだけにするなど項目名を減らしても問題ない),xpath(11)以降を追加したりすればよい(増やす場合には Dim xpath(10) As String の部分の数字も同時に大きくする必要がある)。

NDC9版 および NDLC についての修正
Fig.8 NDC9版 および NDLC についての修正

5. 修正後の動作確認
マクロの修正が完了したら,画面左上の Excelアイコンをクリックすれば,実際の取得シートに戻ることができる。

取得シートに戻る
Fig.9 取得シートに戻る