Methodology — 計算方法と信頼度判定
1. 実質価格 (effective_price)
effective_price = itemPrice × (1 − pointRate / 100)
楽天の常時ポイント倍率のみを反映します。SPU(買い回り)、期間限定クーポン、お買い物マラソンは 含めません(個人差・期間差が大きく、平常時の比較性が失われるため)。
2. 実質単価 (yen_per_unit)
yen_per_unit = effective_price ÷ total_quantity
total_quantity は商品名から正規表現で抽出された内容量(g, ml, m, 個, 枚, ロール等)。抽出には tier1_v4 パイプラインを使用。
3. 信頼度(A / B / FAIL)
| 信頼度 | 条件 | サイト上の扱い |
|---|---|---|
| A | 「per_unit × packs = total」の構造が明確に取れた(例: 150m×18R) | 実質単価最安1位の候補・通常表示 |
| B | 単体重量・単体個数のみ取れた(パターン未確定) | 「※簡易計算」マーク付きで表示。最安1位の候補からは除外 |
| FAIL | 商品名から内容量を一意に抽出できなかった | 非表示 |
| 送料別 | postageFlag = 1(送料が価格に含まれない) | 非表示(実質単価が信頼できないため) |
4. ランキング順位
「人気売れ筋TOP10」「全ランキング」の順位は、楽天市場 IchibaItem/Ranking API デイリーの順位をそのまま表示しています。楽々価格側での順位改変は行いません。
4-2. 「実質単価最安1位」を unit 別に分けて出す理由
同じ楽天ジャンル(例: トイレットペーパー)でも、商品名から抽出される内容量の unit(m, 枚, 個, ロール ...)が複数混在することがあります。たとえば「ロール系トイレットペーパー(m単位)」と「ちり紙(枚単位)」と「ポケットティッシュ(個単位)」を 同じ「実質単価」で並べると、別物が最安として浮上してしまい誤誘導になります。
そのため、楽々価格は unit ごとにグループを分け、各 unit で最安1位を別個に表示 します。さらに 3件以上の同 unit サンプルが揃わない場合はそのカテゴリでの最安表示を見送り ます(偶発的な単発品が「最安」になるのを防止)。
5. データ更新
取得日時はHTML本文に表示。sitemap.xml の lastmod はデータの実際の変動日(スナップショットJSONファイルの mtime)を採用しています。生成日時の機械的な代入は行いません(鮮度偽装の回避)。