pmもう1月半も前に「アマゾンの書籍データベースにPHPでアクセスしてみた」という記事を書いた。これは、以前に試作した「蔵書管理システム」用の書籍データでアマゾンのデータが活用したいというのが動機だった。その後、蔵書管理用のデータベースの構造とか、アマゾンの書籍データベースからどの程度のデータが取得できるのか、我が蔵書管理システムをアップグレードにむけ、いろいろ検討してみた。一応のメドがたったので、何回かにわけて、経験を記しておくことにした。このエントリーは、その第一回。以前、試作した「蔵書管理システム」は、システムを構築するというより、むしろMySQL、phpそしてHTMLのフォームの基本を学ぶことを目的に作成したものだ。試作したデータベースは単一のテーブルを用いた単純なもの、データベースといっても、基本的には、EXCELの表計算ツールで間に合うしろものだった。ここから一歩進んで、複数のテーブルからなる、より拡張性の高いシステムを作成することにした。一言でいうなら、本格的なリレーショナルデータベースに挑戦しようというわけだ。拡張性の高いシステムを作るということになれば、当然、我が蔵書管理システムの機能についても再考しなければならい。再構築しようとする「蔵書管理システム」の仕様を明確にするため、まず、アマゾンからのデータ取得の可能性とその手続きについて考えてみた。いろいろなサイトでアマゾンからデータを取得し、蔵書管理システムを作っていることが紹介されている。これら大部分が、ISBN(もしくはISBN-13)から手元の書籍データを取得するという話のようだ。私の本棚にある書籍の大部分は30年以上前に購入したもの。した書籍には、残念ながら、ISBNコードが割り振られていない。これらはアマゾンサイトでは「古書」として扱われている。私の所有している書籍について調べてみると、一部を除いて、大部分は「古書」として扱われている。した書籍にはアマゾンの商品コードASINが割り振られている。因みに、ISBNコードが割り振られている書籍のASINにはISBNコードが割り振られている。この「古書」の書籍データを効率よく取り込むことができなければ、我が「蔵書管理システム」としては不適だ。私にとっては意味がないものになってしまう。:ということで、アマゾンから書籍データを取得するには、ISBNで検索できる書籍についてはISBNで、そしてISBNが割り振られていない書籍については、まず書籍のタイトル、著者名で候補となる書籍を検索し、検索された複数の書籍からターゲットとする書籍を選択することによりASINコードを求め、これにより書籍データを取得するという手順をとることになるだろう。した手順を踏むには、アマゾンの書籍データベースから、著者名、タイトルにより我が「蔵書管理システム」に登録する候補書籍を抽出する仕組みが必要になる。簡単なphpコードを書いてみることにした。アマゾンAPIを活用し、書籍のタイトル、著者名を用いて検索し、候補書籍を抽出するphp関数BookSearch()を作成してみた。この関数のソースは、この記事の終わりに掲げることにし、検索・抽出例を具体的に示してみることにしよう。「沈黙」(1964,新潮社刊)を例に、このBookSearch()を使って書籍を検索してみよう。BookSearch()を使ったスクリプトSample.phpを作り、抽出される書籍のASINコード、著者名、タイトル、出版社名を出力してみることにする。タイトル「沈黙」を含む書籍のうちアマゾンの書籍データベースには12件があり、一回の操作で10件の関連書籍が出力されている。この出力結果から我が家にある該当書籍のASINコードはB000JABMF8であることが特定される。アマゾンデータベースにAPIでアクセスして取得できる書籍(商品)件数は一回で10件毎に出力することになる。10件目以降のデータを取得しようとする場合、パラメータItemPage(BookSearch()の3番目の引数に該当)を変えれば良い。