SimFinder
キャリア・通信

SimFinder品質スコアの仕組み

SimFinderが検索結果に表示する品質スコアは、キャリアの通信品質を0〜100の数値で表した設計上の指標だ。MVNOについては親MNOの品質スコアを基準に劣化係数を乗じて算出され、価格スコアとは独立した軸として扱われる。この2軸を合成したスコアで検索結果が並び替えられる。

スコアは実測値ではなく設計値である。この前提を踏まえたうえで、スコアの読み方と活用方法を解説する。


品質スコアとは何か

品質スコアとは、SimFinderが各キャリアに割り当てる0〜100の数値指標で、通信品質の相対的な水準を表す。数値が高いほど品質が良好であることを意味する。

このスコアは「価格」とは独立した軸として設計されている。安いプランでも品質スコアが高ければ、品質重視の条件で検索した際に上位に表示される可能性がある。逆に、高価なプランでも品質スコアが低ければ、品質重視の検索では埋もれる。

品質スコアはキャリア単位で定義される。同じキャリアの複数プランは、同じ品質スコアを基準として使用する。


スコアの算出ロジック(実装に基づく)

品質スコアの算出は src/lib/scoring/engine.tscalculateQualityScore 関数で行われる。実装に基づく算出の流れは以下の通りだ。

ステップ1:キャリア自身のスコアを参照する

まずそのプランの carrierId に対応するスコアが品質マップ(qualityMap)に存在するか確認する。存在すれば、その overallScore を基準スコアとして使用する。

ステップ2:MVNOは親MNOのスコアを参照する

carrierId に対応するエントリが品質マップに存在しない、またはエントリの overallScorenull の場合、プランに parentMnoId が設定されていればそのMNOのスコアを参照する。これがMVNO向けの仕組みの核心部分だ。

MVNOは自社で無線ネットワークを保有しないため、通信品質の基盤はMNOのインフラに依存する。SimFinderはこの構造を反映して、MVNOの品質スコア算出に親MNOのスコアを利用する。MVNOの仕組みについて詳しくはを参照してほしい。MNOの定義についてはMNO(大手キャリア)とは — MVNO・サブブランドとの違いで解説している。

ステップ3:劣化係数(mvnoQualityFactors)を適用する

基準スコアが確定した後、プランの carrierTypemno / sub_brand / mvno)に応じた劣化係数を乗じる。

src/lib/scoring/types.ts に定義されているデフォルト係数は以下の通りだ。

キャリア種別デフォルト劣化係数
MNO1.0(劣化なし)
サブブランド(sub_brand)0.95
MVNO0.85

たとえば親MNOの品質スコアが80の場合、同じ親MNOの回線を使うMVNOの品質スコアは80 × 0.85 = 68となる。サブブランドであれば80 × 0.95 = 76となる。

劣化係数は国・地域ごとのスコアリング設定(ScoringConfig)に格納されており、国によって異なる値が設定される場合がある。デフォルト値は全国共通で上記の通りだ。

MNO・サブブランド・MVNOの構造的な違いについては比較記事で詳しく解説している。

ステップ4:スコアが取得できない場合のフォールバック

該当キャリアにも親MNOにも品質スコアデータが存在しない場合、システムは渡された品質マップ(qualityMap)に含まれる全キャリアの品質スコアの平均値を代用する。実際の運用では同国のキャリアデータが qualityMap として渡されるため、結果として同国キャリアの平均値になる。平均値も算出できない場合は50を使用する。この場合、isVerified フラグは false になる。


価格スコアの算出ロジック

品質スコアとともに総合スコアを構成するのが価格スコアだ。

価格スコアは、検索結果の中で最も高い月額予測料金と最も安い月額予測料金の差に対する相対位置で計算される(0〜100)。

価格スコア = (最高額 - そのプランの料金) / (最高額 - 最安額) × 100

検索対象のプランが1つしかない場合は、価格スコアは100になる。価格スコアは「検索結果内の相対的な安さ」であり、絶対的な料金水準ではない点に注意が必要だ。


月額予測料金(predictedMonthlyPrice)の算出

価格スコアの基となる月額予測料金は、単純な月額基本料ではない。

SimFinderは検索条件に「月間通話時間(分)」の入力を受け付け、各プランの通話オプションを自動比較して最もコストが低くなる組み合わせを選択する。プランが対応する通話オプションの種別は3種類ある。

  • per_call(着信ごとの無料分付き通話オプション)
  • monthly_total(月間合計無料分付き通話オプション)
  • unlimited(完全無制限通話)

このロジックで選択された通話オプションの追加料金を月額基本料に加算したものが月額予測料金だ。通話なし(データ専用)の条件で検索する場合は月額基本料がそのまま使われる。


総合スコアの算出

品質スコアと価格スコアは、検索画面の「品質重視」スライダーの設定値(0〜100)に応じた重みで合成される。

総合スコア = 価格スコア × (1 − w) + 品質スコア × w + ボーナススコア

w はスライダーで設定した品質重みを100で割った値だ(スライダー50なら w = 0.5)。

スライダーを50(デフォルト)に設定すると、価格と品質が同等の重みで評価される。品質重視側に動かすほど品質スコアの影響が強まり、価格重視側に動かすほど安いプランが上位に来やすくなる。

この設計により、品質スコアと価格スコアは独立した2軸として機能し、どちらを重視するかをユーザーが制御できる。


ボーナススコアの仕組み

総合スコアには、プランの付加価値を反映するボーナススコアが加算される場合がある。

条件ボーナス点数(デフォルト)
データ繰り越し対応+3点
家族割引対応(検索条件で「家族割」を指定した場合のみ)+5点

ボーナスは最大10点までと上限が設定されている。

データ量そのものによるボーナス(以前は「ヘビーユーザー向け無制限」や「ちょうどいいデータ量」ボーナス)は、安くてデータ量が多いプランが不当に低評価される問題があったため実装から削除されている。


検索結果の並び替えとタイブレーク

総合スコアが高い順に検索結果は並ぶ。同点の場合は以下の優先順位でタイブレークが行われる。

  1. 月額予測料金が安い順
  2. データ無制限プランを優先
  3. データ容量(GB)が多い順

スコアの読み方 — 実際の活用方法

SimFinderの検索結果でスコアを活用する際の考え方を整理する。

品質重視スライダーを右に動かす場面: MNOやサブブランドの品質が必要なユーザー(地下鉄・山間部など電波が取りにくい場所での利用が多い、テレワーク中心で通信の安定性が必要など)は、スライダーを品質重視側に設定すると、MNOやサブブランドが上位に並びやすくなる。

品質重視スライダーを左に動かす場面: コストを最優先したいユーザーや、Wi-Fi環境が整っていてモバイル通信は補助的に使う場合は、スライダーを価格重視側に設定するとMVNOが上位に来やすくなる。MVNOのスコアが低めになる構造的な理由についてはを参照してほしい。

同じプランが常に上位に来る場合: 検索条件(月間通話分・データ容量・家族割希望)を変えると順位が変動する場合がある。条件の指定が実際の利用パターンに近いほど、月額予測料金の精度が上がる。


スコアの限界と前提

品質スコアを使う際に理解しておくべき限界を正直に示す。

実測値ではなく設計値

品質スコアは、SimFinderが設計上定義した指標であり、実際の通信速度を計測したものではない。MVNOのスコアが「親MNOのスコア × 0.85」という方式は、MVNOが借りている帯域制約の傾向を設計上モデル化したものだ。実際のMVNOの速度は時間帯・地域・MVNO事業者ごとに大きく異なる。MVNOで通信速度が低下する仕組みについてはを参照してほしい。

劣化係数はすべてのMVNOに一律適用される

現在の実装では、同じ carrierType = mvno であれば、どのMVNOでも同一の劣化係数が適用される。帯域を十分確保しているMVNOと、昼時間帯に顕著な速度低下があるMVNOが同じ係数で評価されるという限界がある。

品質マップのデータ精度に依存する

品質スコアの基となるデータ(qualityMap)は、SimFinderが管理する品質データベースから取得される。このデータが古い場合や、新しいキャリアについてデータが未登録の場合は、フォールバック(平均値)が使われる。フォールバックされたスコアは isVerified: false として管理されているが、UIの表示形式によっては検証済みとの区別が見えにくい場合がある。

価格スコアは相対値

価格スコアは検索結果内での相対的な安さであり、検索条件を変えると同じプランでも点数が変わる。絶対的な「このプランはいくら安い」という意味ではない。


スコアに関連するよくある誤解

「スコアが高ければ必ず速い」は誤り: スコアは設計上の品質指標であり、通信速度の保証ではない。混雑時の速度はスコアに完全には反映されない。

「MVNOは常に品質が低い」は誤り: スコアが低めになる設計になっているが、これは統計的な傾向のモデル化であり、特定のMVNOを否定するものではない。実際に速度が安定しているMVNOも存在する。

「家族割ボーナスは常に加算される」は誤り: 家族割ボーナスは、検索条件で「家族割希望」を指定し、かつそのプランが家族割に対応している場合のみ加算される。条件を指定しない検索では加算されない。

「スコアが同じなら品質は同じ」は必ずしも正しくない: MVNOのスコアはすべて同一の劣化係数で計算されるため、実際の品質に差があっても同じスコアになる場合がある。スコアはキャリア種別(MNO/サブブランド/MVNO)の違いは反映するが、同じ種別内の個体差は現時点では反映されない。

「価格スコアが高ければ安い」は絶対的には成立しない: 価格スコアは検索結果内の相対的な位置を示す。検索条件(データ容量・通話分数)を変えると価格スコアの分布が変わり、同じプランでも点数が変わる。


親MNOが設定されていないMVNOの扱い

MVNOプランのデータに parentMnoId が設定されていない場合、システムはキャリア自身の carrierId で品質マップを検索する。自身のスコアも存在しない場合は、前述のフォールバック(同国平均 → 50)が適用される。

この状況はデータ品質の問題であり、SimFinderのデータ管理側で改善が必要な項目だ。フォールバックが適用されているプランのスコアは、品質の実態を反映しているとは言えない。


同点プランの並び順の詳細

総合スコアが完全に同点になることは、検索対象のプランが少ない場合や条件が限定的な場合に起きることがある。この場合のタイブレーク順序は以下の通り実装されている。

  1. 月額予測料金が安い順(同点なら安いほうが上位)
  2. データ無制限プランを優先(有限容量プランより上位)
  3. データ容量(GB)が多い順(大容量が上位)

この設計の意図は、スコア同点の場合に「コスト効率が高いプランを優先する」ことにある。


SimFinderでの使い方まとめ

品質スコアは「価格以外の品質軸」として、価格だけでは判断できない選択を補助する目的で設計されている。

具体的な活用手順は以下の通りだ。

  1. SimFinderの比較ツールで月間データ容量・通話分数・家族割希望などの条件を設定する
  2. 品質重視スライダーを自分の優先順位に合わせて調整する(品質重視なら右、価格重視なら左)
  3. 上位に表示されたプランの品質スコアと月額予測料金を確認する
  4. データ繰り越しや家族割対応などの付加条件も比較に活用する

スコアはあくまで参考指標だ。最終的な選択には、実際のエリア確認やキャリアの口コミ情報を合わせて参照することを推奨する。SimFinderが品質スコアを算出する際の評価項目や計測方法の詳細は通信品質スコアの評価指標にまとめている。


関連ガイド