小野マトペの業務日誌(アニメ制作してない篇)

はてなダイアリーの閉鎖をうけ、旧ブログ http://d.hatena.ne.jp/ono_matope/ から移行しました。続きは→ http://matope.hatenablog.com/

Amazonのレビューをはてブ的に抽出するサイトを作ったよ。

これは何?

Amazon.co.jpのレビューを通して本との出会いを楽しめるサイトです。

概要・仕様

最近1年ぶんのAmazon.co.jpのカスタマーレビューから、新着や評価の高いものを抽出・配信します。

ホットポイント
各レビューについている『 ?pt 』の数字は、そのレビューの人気度を表す『ホットポイント』です。『参考になった数』−『参考にならなかった数』で算出してます。
対象のレビュー
一年以内に投稿された、その商品についての新着5件以内のレビューが対象です。これは、サービスがレビューの多い人気商品で埋まるのを防ぎ多様性を確保するためでもあります。
新着レビュー
文字通り新着のレビューです。Amazonに登録されたレビューは最大24時間以内に捕捉されます。
注目レビュー
そのカテゴリのレビューのなかで、ホットポイントが5ptを越えたものから表示します。
人気レビュー
そのカテゴリのレビューを、ホットポイントの高い順に表示します。一年間の累積なのであまり変動しませんが、長期的な評価で並びます。
RSS2.0
全文吐いてます。

開発動機

問題点

このネタ自体は去年後半から温めていたので、時系列的に因果関係は無いですが、一言で云えば、以下のエントリーへの俺なりの回答といったものです。

Amazonなどで昔より遥かに便利になったのは事実ですが、Amazonなどネット通販では基本的に自分の欲しい本しか買えません。おすすめ機能とかありますけどやや微妙ですし。


それに対しリアル書店では、多くの本を目にすることで思いがけない出会いがあります。買いたい本が買えるのがAmazon としたら、買おうと思ってなかった本まで買えてしまうのがリアル書店と言いますか。確か書店に行く人の多く(?)は買う予定のなかった本まで買ってしまう、という統計をどこかで見たような。実際、自分も「あれが欲しい」というよりは「何か面白い本ないかな」という動機で書店に行くことが多いです。

リアル書店の意義 - なつみかん@はてな

id:acqua_altaさんのこのエントリーを読んだ時、まさに我が意を得たり!と思いました。そうそう、ネット書店には『一期一会』が足りないんですよ!極端に言ってしまえば、

  • 『ネット書店には、買うものが決まっているときにしか行かない』
  • リアル書店は、特に買いたい物が無くても、ふらっと入って本を選べる』

だと思っています。資料系はともかく、特に小説なんかは特にそうでしょう。
リアル書店とネット書店の特性を簡単に比べて見みると、リアル書店では、ぶらぶら歩いているだけで、特に意思決定すること無く、沢山の本が視界に入ってきて、面白そうだなと思った本を手にとってめくってみる、という利用ができるので、本屋というメディアの特性はプッシュ型かプル型かで云えば、プッシュ型と云えます(逆に、買う本が決まっているときは検索性ではネット書店に劣るので、プル型特性は弱い)。一方ネット書店の商品への導線は、大きく

  1. キーワード検索(トップ→商品)
  2. レコメンデーション系(トップ→商品)
  3. 新着・トップランク(*→商品)
  4. リストマニア/関連商品(商品→商品)

に大別されますが、いずれも本屋ほどのプッシュ性はありません。

  1. キーワード検索
    • →興味が先行していないと商品にたどり着けない。
  2. レコメンデーション
    • →どんどん自分の既存の好みに偏ってくるので、なんか不健康。好きなおかずだけ食べてるみたい。
  3. 人気ランキング
    • →そんなのはつまらない(俺が)
  4. リストマニア/関連商品
    • →出発点が商品なので、まず自分の既に興味のある本からスタートすることになる。

いずれも、Web 2.0でステキでベンリな環境監視型ソリューションなんですが、多かれ少なかれ、受け取る情報はパーソナライズされ、多様性を失いますし、アルゴリズムの想定しない本とは出会えない訳です。これでは、リアル書店の魅力に打ち克てず、ネット書店の利用者増はいずれ頭打ちになるのでは?というのが俺の問題意識でした。

そういう作品との出会いも大切にしたいので、どんなにAmazonが進化してもリアル書店には通い続けると思います。

リアル書店の意義 - なつみかん@はてな

なので、今回の目的は、(id:acqua_altaさんの言葉を借りれば、)『アンチ・パーソナライズでプッシュ型で、意外な本との出会いのある、ネット書店を"進化"させる方法を探る』試みでした。

ソリューション

そこで目をつけたのがAmazonのカスタマーレビューで。Amazonのカスタマーレビューシステムは"モデレーションつき口コミCGM"としては、日本最大級の規模で、なおかつ『ウェブ進化論』的に云えば、その膨大な量が質に転化しているともいえます。このレビューは、立ち読みの出来ないネット書店において、時にリアル書店での立ち読み以上に効果を発揮します(実際、俺はリアル書店で技術書を買うときは、大抵Amazonモバイルでレビュー評価を見てから決めます)。時たま*1出会う熱のこもったレビューには心を動かされることもしばしばです。


カスタマーレビューは、流通システム以上に、Amazonのコアバリューだと思ってるんですが、そのカスタマーレビューはあくまで、ある商品の付加情報という扱いであり、まずその商品に興味を持たなくては、ユーザーに届かないようになっています。これは勿体無い。レビューだけを取り出して、その評価にあわせて抽出できないか。
…ことによると、『CGMはみんなWeb 2.0である』と思われがちですが、実際にWeb 2.0なのはCGMではなく、CGMの価値をソート、フィルタリングし、一元的なアクセスを可能にする機構の事、だと俺は思ってるので、…つまりAmazonは商品に関してはWeb 2.0的だけど、CGMについてはそうじゃないよな、と。じゃあ、そのAmazonCGM部分をWeb 2.0化してやろう、というのが今回のプラクティス。


という訳で、とりあえずはてブっぽくしてみました。


…で、実際できてみると、当初の目標に比べてしょっぱい気もしますが、まともにサイトを作ったのも初めてなので、どうぞ使ってやってみて下さい。
追記:ご意見ご感想等あれば、コメント又はトラバまでお気軽にどうぞ。当方就活中につき、すぐに反映できるかどうかは分かりませんが(笑)。その他、むしろ雇ってやろうという奇特なベンチャーの方がいらっしゃいましたらご一報下さい(←どさくさに)。

技術情報

  • LinuxのインストールからXSLTの書き方まで、全て独学で一から勉強したので、超大変だった。
  • Amazonのブラウズノード情報を編集する際には、このページを使わせてもらい、ノード名付近をクリックするとSQL文を生成するインハウスGreasemonkeyを作成し、すごくスムーズにブラウズノード関係を編集できた。
  • 10万件オーダーのデータベースを使うにはINDEXを張らないと話にならないことが分かった。
  • アマゾンWebサービスの"キャッシュは24時間まで"規約を厳密に守るために、一日で全ての情報をリフレッシュしています。すごい転送量ですが、XMLパーサーを正規表現で書いてなんとかしました。(libXMLじゃどうにもなりませんでした)
  • etc.etc...


どうぞご利用ください。


追記2:
バグ報告頂きました某氏様、投げ銭を頂きました某氏様、ありがとうございます!

*1:本当に時たま