※ この記事及び方式検討には生成AI (Claude Opus 5, Sonnet 5 および GPT-5.6 Luna を使用しています)


<aside> 📌

位置づけ: 本ドキュメントは、BPIの分布ベース再定義についての理論的検討を、従来の計算式との比較・検討した代替案(不採用も含む)・実データによる統計的検証を伴ってまとめたものです。 この内容はすべて検証段階であり、本番アプリの表示には反映されていません。実際の計算ロジックはsrc/lib/bpi/newBpi.tsのNewBpiCalculatorに実装されています。

この検証によってご自身のスコアがどのように変化するのかは、以下のページで実際のデータを用いて確認することができます:

bpi2.poyashi.me

</aside>

<aside> 📐

数式の完全な導出・原典との対応はリポジトリ内の docs/bpi-math.md に集約しています(原典のPGF定義・現行実装→新方式のALS・gamma補正・総合BPI集約まで、導出込みで対比)。 本ページ群はその「なぜそうするのか」と実データ検証を説明するためのドキュメントです。

https://github.com/BPIManager/BPIManager2/blob/master/docs/bpi-math.md

</aside>

TL;DR


1. 現行の課題

現行のBPI(Beat Power Indicator)は、単曲ごとに以下3つのパラメータで定義されている。

$$ \mathrm{PGF}(x) = \frac{m}{2(m-x)}, \qquad \mathrm{BPI} = \pm 100\left|\frac{\ln(\mathrm{PGF}(s)/\mathrm{PGF}(k))}{\ln(\mathrm{PGF}(z)/\mathrm{PGF}(k))}\right|^{\mathrm{coef}} $$

issue #299の実測(アリーナ上位5,161人×☆12の92曲、251,788観測)により、以下の構造的な問題が判明している。

https://github.com/BPIManager/BPIManager2/issues/299

1.1 同じ実力でも曲によってBPIが大きく変わる

能力帯 人数 現行BPIの曲間レンジ 幅
[-1.0, -0.75) 566 -15.0 〜 +31.8 46.8
[-0.25, 0) 505 -15.0 〜 +43.8 58.8
[0.5, 0.75) 306 -13.6 〜 +51.4 65.0
[1.5, 1.75) 126 +4.3 〜 +62.0 57.7