雑な hinananoha

やさしいせかいをさがして三千里

dentoo.lt #14 その後

dentoo.lt #14

登壇しました(今更)

atnd.org

話した内容

dentoo.ltの発表をご覧になってない方はこちらのスライドをぜひご覧ください。

www.slideshare.net

www.slideshare.net

LT中の事故

LTをご覧いただいてた方はご存知かと思いますが、実は実演中に某書籍(表紙で女子高生二人が並んで中指を突き立ててる本)で試したところ、Amazon APIで取得できないという事故が発生しました。

当初は「あの本はきっと竹○房の陰謀で消されたのだ」と言ってましたが、その後原因が発覚しました。

ISBNコードはユニークであるがしかし……

上のLTでもお話しましたが、ISBNコードは例外なくユニークなため、1つのISBNコードで複数の書籍が引っ掛かることはまずありません。これは、日本図書コード管理センター発行の「ISBNコード/日本図書コード/書籍JANコード 利用の手引き」にも記載があります。

⑵出版者記号は流通上及び書誌管理上、特定の出版者名称と密接なつながりを持ち、取引情報や書誌情報の信頼性を保持するために重要な要素として扱われます。

(中略)

すでに当センターに ISBN 出版者記号を登録済みの出版者と同一の「出版者名称」を使用しての登録は、避けていただいております。

 

第三部②「出版社記号に関するルール」より一部引用

(3)発行済の書籍出版物に一度でも付与したことのある ISBN コードは、たとえその書籍が絶版扱いとなったとしても、あるいは未来永劫に増刷・重版をする予定がない場合でも、新たに発行する別個の書籍出版物に対して重複して付与することはできません。

 

第三部③「書名記号に関するルール」より一部引用

 つまり、これだけを見れば、ISBNコードで書籍を検索して、複数のデータが引っ掛かるわけがない。つまり、Amazon APIでの蔵書検索の結果はISBNコードがデータにあるかで判定ができる、ということでそれで判定を行っていました。

しかし、Amazonでは1つのISBNコードで紙の書籍とKindle本の両方の情報が返答されていることが発覚しました。

f:id:hinananoha:20160622224724p:plain

このような返答が帰ってきたわけです。この時、私は取得したXMLから情報を抽出するPHPコードを以下のように書いていました。

function returndata(blog)

この時格納されるのは1つ目のItem、つまりKindle本の方ということになります。

そして上のXMLをご覧いただくと、Kindle本の方にはEAN(ISBN)が存在しない。これによって「本がない」と判定されていたわけです。

判定が必要

というわけで、このような場合に(複数のItemが返された場合)Kindle本でなくちゃんと書籍を判定して返す必要があるわけです。

……という続きの話は今度また次のdentoo.ltでやるか、記事を書こうと思います(できたっちゃぁできた)

 お前最近記事全然書いてなかっただろ

ごめんなさい、いろいろと立て込みましてね……今度はちゃんと書きますから、勘弁してください。