こんにちは。 Web 担当の真谷(シンガイ)です。
今日は、先日 Sleipnir Start の Amazon ランキングリリースに関わる話があったのですが、それについてもう少し詳しい話をしようと思います。
私は Amazon ランキングで主にバックエンド処理作成を担当しており、Amazon ランキングのバックエンドでは以下の2つのシステムが稼動しています。
Sleipnir・Sleipnir Start の Amazon での商品購入数を保存するシステム
まず、Sleipnir・Sleipnir Start の Amazon での商品購入数を保存するシステムですが、Sleipnir と Sleipnir Start の Amazon の売上を元に ASIN コード(※1)と売上数を集計しています。
その際に Sleipnir Start で使用しているサブカテゴリーを BrowseNode (※2)を使用して
振り分けています。
新たな BrowseNode ID を追加する事で、サブカテゴリーを容易に増やせるので、急遽サブカテゴリーが追加される際にも柔軟に対応が出来るように工夫しています。
Amazon ランキングで使用する JSON データを生成するシステム
次に、Amazon ランキングで使用する JSON データを生成するシステムですが
これは、毎日集計して保存しているデータから、カテゴリー数 × 期間(最新・週間・月間)の計30個の JSON ファイルを生成しています。
最大 3510 件にもなる商品データがこの30個の JSON データに詰まっており、そのサイズは 200 KB と非常に大きなデータとなります。
これでは受信から展開まで CPU に負荷をかけ、表示までに時間がかかってしまうため、以下の工夫を行なっています。
- GZIP 圧縮を用いる
200 KB であれば約 30 KB までデータを圧縮することができます。
データを小さくすることで受信までの通信時間を抑え、サーバーへの負荷も下げます。 - JSON データに一部のタグを直接記述する
JSON データには、キーと値を入れ、JavaScript 側で HTML タグを生成し、その後に出力する方法が最もスマートなのですが、
JavaScript での HTML 生成には若干の負荷が発生します。
そこでランキングに使う JSON データには、あらかじめ一部の HTML コードを初めから入れています。
このお陰でパースしたデータをほとんど処理することなく直接 HTML に出力するだけになり CPU 負荷を下げ軽く見せる事ができます。
2つのシステムを合わせることで、API から取得しただけの売上順ランキングと違い、フェンリル独自のランキングを実現するに至っています。
その他にも Amazon ランキングのシステムで以下のように今までの累計購入数のデータもすぐに算出できます。
累積購入数ランキング
1位 | モンスターハンターポータブル 3rd | 1558人 |
---|---|---|
2位 | Xbox Live 3500 マイクロソフト ポイント カード【プリペイドカード】 | 994人 |
3位 | 魔法少女まどか☆マギカ 1 【完全生産限定版】 [Blu-ray] | 670人 |
4位 | 機動戦士ガンダムUC(ユニコーン) [Mobile Suit Gundam UC] 3 [Blu-ray] | 603人 |
5位 | 第2次スーパーロボット大戦Z 破界篇 SPECIAL ZII-BOX | 559人 |
6位 | PLANEX 4層シールド PET材皮膜 ハイスピードHDMIケーブル 2m PL-HDMI02-QD | 524人 |
7位 | BUFFALO USB2.0 外付けHDD 2.0TB HD-CL2.0TU2/N | 480人 |
8位 | キャサリン 特典 サントラCD付き | 468人 |
9位 | 真・三國無双6(通常版) | 413人 |
10位 | よつばと! 10 (電撃コミックス) | 409人 |
(集計期間:2010/10/01~2011/05/13)
Amazon ランキングも改良は、これからも行っていきますので、Sleipnir Start を宜しくお願いします。
この記事を Retweet する
フェンリルのオフィシャルアカウントをフォローする
※1 Amazon での商品を表す一意のコードです。
※2 Amazon 内の各カテゴリーや詳細カテゴリーを表すコードです。