日記

rapa

Amazon の商品を扱う Product Advertising API では、それぞれの商品ごとに BrowseNode と呼ばれるタグのようなものが割り当てられている。これは階層構造になっており、例えばとある漫画には、以下のような BrowseNode が割り当てられている。

  • 小学館
  • コミック

更にコミックの親として

  • コミック・本・BL

更にその親に

  • ジャンル別

更にその親に

といった具合で BrowseNode が与えられている。説明していないけど、小学館の BrowseNode にも同様に親が存在する。今日は Product Advertising API 用の Ruby のクライアントライブラリ rapa を改善して、この辺りの情報に簡単にアクセスできるように変更した。また、機能追加に合わせて petitest で幾つかテストを追加した。petitest-spec に足りない機能があったので、機能追加も行った。

petitest-spec

petitest-spec という、petitest に RSpec 風の DSL を追加するためのプラグインがあり、RSpec の let の機能が欲しかったので追加した。この辺までの話は、察しの良い人であれば以下のテストコードを見れば何となく分かるはず。

https://github.com/r7kamura/rapa/blob/7e78f6873d2603ed39a3bd908db7dea7f23e2a96/test/test_item_resource.rb

他に明らかに不足しているものと言えば beforeafteraround だけど、これは本体側の対応が必要なので、それを待つばかり。とはいえ自分しか開発者が居ないので、petitest を使ってテストを書いていけばそのうち耐えかねて実装することになると思う。

amakan books

新 DB 設計を利用して書籍データを集めてみたところ、カテゴリの概念を失念していたので、その辺りを実装した。カテゴリというのは、雑誌、技術書、ラノベなどの単位だが、amakan books では「同じカテゴリの本しか同じシリーズにならない」というルールでシリーズ間に境界線を引くための使われ方をしている。例えばコミックなどは特に細かく分かれていて、文庫コミック、アニメコミック、コミック雑誌、コミックアンソロジーなど、同名だが違うシリーズなものを上手く分けられるようなカテゴライズがなされている。コミック周辺はメディアミックスが行われやすい傾向にあるので、この対策として特にコミックに対して細かく分類を行っているという状況です。