はじめに
皆さん、蔵書や図書館から借りた本や読書記録の管理のために、日々書籍検索WebAPIを使っていると思います。もちろん私もそうなのですが、先日読み終った本のデータをデータベースに取り込もう1としたら、大変困った状態になりましたので、それについて書いていこうと思います。(まだ解決してませんので変な期待はしないでください。)
また、恒例のお断りですが、この文章の内容は、筆者が所属している会社・団体とは一切関わりがありません。いわゆる「自主的な研究の成果の発表」というものです。
各WebAPI
国立国会図書館サーチ
これが一番良いのだと思います。今までも私は使っていたのですから。
ですが、久々にここにリクエストを投げるプログラムを動作させたところ、"303"と表示されました。HTTPのレスポンスが想定外だった場合には、レスポンスコードを表示させるようにしていましたので、これは"See Other"と言うことです。「ああ、サイトが移動したのね」と言うことで、ここまでならよくあることかもしれません。国立国会図書館サーチのお知らせにも
「国立国会図書館オンライン」と「国立国会図書館サーチ」を統合・リニューアルしました
2024年1月5日
(https://ndlsearch.ndl.go.jp/news/2024010400) なんて出ていますし。
そこで、プログラムにあるURLを"iss.ndl.go.jp"から"ndlsearch.ndl.go.jp"に変更して再挑戦です。ええっ!?それでも動きません。レスポンスを見ると「パラメータ不正」とあります。どうやらmediaTypeの値が間違っているようです。データグループ ID・mediaType 一覧を確認して適切な値(例えばbooklet)に修正します。あれっ?でもmediaTypeって数値で指定するのではなかったっけ。ここまで来るともう嫌な予感しかしません、、、
mediaTypeを修正して再リクエストです。予感の通り、動作しませんでした。どうやらデータ形式がプログラムが期待しているものと異なるようです。国立国会図書館サーチのページをあちこち調べると
2024年1月、国立国会図書館サーチではDC-NDL(Simple)のデータ提供を終了しました。
とありました。(https://ndlsearch.ndl.go.jp/renkei/dcndl)
そういえば、簡単だからとDC-NDL(Simple)を受信する前提でプログラムを書いていたのでした
SimpleでないDC-NDLで動作するようプログラムを書き換えようとしましたが、私の能力ではすぐにはできないということで、Qiitaに記事を書いて現実逃避です ← 今ココ
版元ドットコム
警告
私はこのWebAPIを利用したことはありません。今回、回避策を調査した時の行き止まりの一つですが、ここに書いておけば誰かの役に立つかな、と。
https://www.hanmoto.com/about_api を見てください。
版元ドットコムのサイトからご提供しているAPIは、2019年11月末日をもって停止します。
下記openBDのAPIをご利用下さい。
だそうです。これでは使いたくても使えませんね。
openBD
警告
私はこのWebAPIを利用したことはありません。今回、回避策を調査した時の行き止まりの一つですが、ここに書いておけば誰かの役に立つかな、と。
版元ドットコムのサイトで代替WebAPIとして勧められているので見てみます。が、「openBD API(バージョン1)」の提供終了についてなんてあります2。さらに「ガイドライン・利用規約」に
openBD APIが提供する書誌・書影・内容紹介・書評情報などすべての情報は、本の販促・紹介目的に限り使用できます。
とありますので、そもそも私はお呼びでなかった、かも。
Amazon
確かもの凄く以前に使っていた書籍管理フリーウェアが裏で使っていたはずなのですが、openBDと同じような条件がついて、そのフリーウェアがまともに使えなくなってしまったような記憶が、、、(正確なことは覚えていません。「何だと!それなら自分で書籍管理ソフトを作ってやる」となって国立国会図書館のWebAPIを使うようになったことだけは確実ですが。)
ということで、やはり私はお呼びでないですね。
で、結局どうする
ここまでに書いたことから、(私が私の目的のために)利用するのは「国立国会図書館サーチ」一択だと思います。(頑張って探せば他にもあるかもしれませんが、ちょっと頑張る気には、、、)
自前主義にこだわるつもりもないのですが、国立国会図書館サーチが変わってしまったのがつい最近ですので、今「国立国会図書館」で検索して見つかるサイトはほとんどが同じ問題を抱えているように思います。やはり、国立国会図書館サーチから(Simpleでない)DC-NDL形式のデータを受信するようプログラムを自分で書き換えるのが筋でしょう。
-
図書館から借りた本だったので、この時点では既に返却してしまっていて、手元にはありませんでした。なので、今回はRubyで標準入出力がリダイレクトされてもリダイレクトされていない時と同じように動いてほしいに書いたバーコードリーダーの出番はありませんでした。 ↩
-
こう書くとopenBD APIの提供が終わってしまったように読めるので補足を。このニュースを出した時に提供していたものを「バージョン1」と呼んでいるようです。現時点でもopenBD APIは動作しており、それがどうやらAPI的には変更はないが中身が異なる「代替API(仮称)」というもののようです。「すくなくとも60か月以上の期間、(中略)代替API(仮称)を提供します。」とのことですから「どうする書籍検索 - 2029」とか書かないといけないかもですね。 ↩