Samurai Stats

運営の透明性ページ

評価ロジックとアルゴリズム改善履歴

Samurai Stats の打撃・投球評価が「どの数字を、どの閾値で、どう判定しているか」と、 年間ペース推定 (On-Pace) の前提・限界、データソースの利用根拠、 アルゴリズム改善履歴までを 1 ページに集約します。 テキストの作成方法を明示したうえで判定の根拠を全部開示することで、 再現性と検証可能性を担保することが目的です。

データソースと利用根拠

打撃・投球の数字は MLB Stats API (statsapi.mlb.com/api/v1) を一次ソースとして取得しています。これは MLB.com / At Bat 公式アプリと同一の 統計エンドポイントで、認証不要・公開アクセス可能ですが、Google や MLB の公式 ドキュメントとしては「文書化されていない」性質のエンドポイントです。 本サイトでは以下の方針で利用しています。

  • 非商用での集約利用:MLB 全選手の一次データ販売ではなく、日本人選手にフォーカスして 日本語ローカライズと年間ペース推定という独自の編集レイヤーを加えた上で公開
  • 提供元クレジット必須:全ページのフッターに「データ提供: MLB Stats API」を常設
  • 取得頻度の抑制:cron で日次バッチ取り込み + 24 時間キャッシュ。 選手詳細ページは 5 分キャッシュ・試合中ページのみ短キャッシュで実装
  • 権利関係の明示:選手の顔写真・チームロゴは一切使用せず、数値情報のみ。 選手名は英語表記に加えて日本語の漢字表記を併記

選手名の日本語表記には Wikidata と Wikipedia を参照しています。 MLB の統計 API では選手名が英語表記のみのため、日本語で自然に読めるようにするための補完です。

データ更新サイクル

全データは VPS の crontab で日次バッチ取り込み。各ジョブの起動時刻と役割は以下のとおり。

時刻 (JST)ジョブ役割
08:00mlb-daily-stats前日試合分の取り込み + 年間ペース再計算 + 全選手の Final 試合 backfill + MLB 全体 Top100 リーダー更新
08:10daily-digest取り込み済みの確定データをもとに、/today の朝刊記事(見出し・リード・本文)を作成
08:30detect-japanese-mlb日本人選手の新規検出 + IL / リハビリ / 復帰直後 / DFA 等のロースター状態同期
17:30mlb-daily-stats西海岸延長戦まで含めた全試合の取りこぼし回収 + API 反映遅延補正
17:40daily-digest/today の夕刊記事を作成(内容に変化がなければ作り直さず朝刊を残す)
18:00detect-japanese-mlb朝の cron での取りこぼし分を最大 12 時間以内に補正

ページのキャッシュ更新間隔 (revalidate) は選手詳細・ランキング・月間ハイライトが 5 分、 キャリア通算と前年データなど変動しないものは 24 時間。sitemap は 1 時間です。 表示の「最終更新」時刻は DB 上の actual な更新時刻を <time dateTime> + JSON-LD dateModified で出力しており、レンダ時刻ではありません。

日次ダイジェスト /today の作成プロセスと品質管理

読者が目にする数値は、すべて公式記録から取り込んだ確定データです。 成績ページの評価テキストやスコアは閾値による機械判定で、 同じ数字を入れれば誰が実行しても同じ結果になります。 文章の作成に言語モデル(LLM)を使っているのは /today の見出し・リード・講評だけです。 数値の正確性が生命線のサイトで文章作成を自動化する以上、 「何を渡し、何を書かせないか」を設計で縛る必要があると考えています。 その仕組みを以下に開示します。

1. 事実と文章の分離(この設計の核心)

記事に数値を書かせません。ページに表示される 成績・スコアの数値テーブルは、データベースの値をコードが直接描画しています。 記事は散文の部分だけを担当し、数値の真実源はコード側にあります。 この分離により、記事の文章が仮に不正確でも、 読者が目にする数値は公式記録ベースで常に正しい状態が保たれます。

2. 確定データのみを渡す

言語モデルには、その日の試合から抽出した確定事実 (選手・対戦相手・打席結果・投球回・失点・勝敗など)だけを構造化して渡します。 モデルが自分で統計を検索したり計算したりすることはありません。

3. 創作の禁止(実データ検証で追加してきた項目)

渡していない情報を書かせないため、以下を明示的に禁止しています。 これらは机上の想定ではなく、実際の生成結果を検証して見つけた誤りを、 その都度ふさいできたものです。

  • 数値・打席内容・球種・試合展開の創作
  • 選手のコメント・心情・エピソードの創作
  • 試合会場の推測(データに無ければ会場に一切触れない)
  • 勝敗・セーブの逆算(記録に明記がある時のみ記述する)
  • 別試合・別選手の出来事を 1 つの文に混ぜること
  • 登板の無い試合を「二刀流で登板」と書くこと

4. 限界の自認

プロンプトによる禁止には強制力がありません。実際に、 禁止リストから漏れていた項目(試合会場)で誤りが出たことがあります。 現時点では生成後にコードで検算して 不合格なら公開しない仕組みは未実装で、 人間が出力を目視して問題を見つけ、設計に反映する運用です。 この点は改善予定として自認しています。 誤りを見つけられた場合は お問い合わせからご指摘ください。

生成された記事には、各ページ共通のフッターに加えて記事直下にも 自動生成である旨を明記しています。生成の有無を読者が判別できない状態にはしません。

打撃評価の閾値(全数値開示)

選手詳細ページの「シーズン概況」で出力する打撃評価は、すべて以下の閾値分岐で 機械的に判定しています。この評価テキストの生成に AI(大規模言語モデル)は使っていません。閾値と分岐がすべてで、 同じ数値を入れれば誰が実行しても同じ文章になります。 (日次ダイジェスト /today の記事のみ言語モデルで作成しています。作成方法と品質管理は下記の専用セクションに記載)。

OPS評価ラベル
≥ 1.000MVP 級の数字
≥ 0.850強打者の領域
≥ 0.750MLB 平均を上回る水準
≥ 0.650MLB 平均近辺
< 0.650立て直しを期待したい数字

得点圏 (RISP) 打率は 10 打数以上で評価対象 (0.300 以上 = 集中力際立つ / 0.250 以上 = 勝負強さ / 0.200 以上 = 平均 / それ未満 = 結果が伴っていない)。三振率・四球率は 50 打席以上で評価対象。 OBP ≥ .360 かつ SLG ≥ .480 で「出塁能力と長打力をともに高水準」と判定します。

投球評価の閾値(全数値開示)

防御率 (ERA)評価ラベル
< 2.00圧倒的な数字
< 2.50リーグ屈指の好成績
< 3.50一流投手レベル
< 4.50MLB 平均近辺
≥ 4.50立て直しを期待したい数字

WHIP は < 0.95 = 最上位 / < 1.10 = 一流 / < 1.30 = 平均 / それ以上 = 粘る投球。 K/9 は ≥ 11 = 圧倒的 / ≥ 9 = 上位 / ≥ 7 = 平均 / それ未満 = command 型。 BB/9 は ≤ 2.0 = 制球光る / ≤ 3.0 = 平均。 球種別 arsenal は MLB Stats API の pitchArsenal エンドポイントから使用率と平均球速を取得しており、5 球種以上で「投げ分けの引き出し」、3 球種以上で「主軸構成」と判定します。

規定到達の判定式

  • 規定打席 = 502 PA(3.1 × 162 試合・MLB 公式の打率タイトル基準と同じ)
  • 規定投球回 = 162 IP(1.0 × 162 試合・MLB 公式の防御率タイトル基準と同じ)
  • 判定は 4 段階: reached (既到達) /on_pace (年間ペース上到達見込み) /short (不達ペース) /unknown (projection なし)

詳細な計算式と画面上のバッジ色分けは 年間ペース推定 (On-Pace) の解説 に切り出してあります。

Samurai Score の計算式(独自合成指標)

Samurai Score は本サイトのみが算出する 0〜100 点スケールの合成評価指標です。 OPS や防御率といった単一指標では拾いきれない「規定到達ペース」「対左右バランス」「クラッチ」を 一つの数字に圧縮することで、選手の「いま」を一目で比較できるように設計しています。 以下の閾値とサブスコアは lib/mlb/samurai-score.ts に 一元化されており、画面表示は常にコードと同期しています。

打者スコア(合計 100 点)

サブスコア満点閾値(点数)
OPS 基礎点40OPS ≥ 1.000 で 40 / ≥ .850 で 30 / ≥ .750 で 20 / ≥ .650 で 10 / 未満 0
規定打席ペース20到達済み 20 / 到達ペース 15 / 未達ペース 5 / 評価不能 0
対左右バランス20対左右投手の OPS 差 < 0.05 で 20 / < 0.10 で 15 / < 0.15 で 10 / < 0.20 で 5 / 以上 0
得点圏クラッチ20得点圏打率 ≥ .300 で 20 / ≥ .275 で 15 / ≥ .250 で 10 / ≥ .225 で 5 / 未満 0(10 打数未満は評価対象外)

投手スコア(合計 100 点)

サブスコア満点閾値(点数)
防御率35ERA < 2.00 で 35 / < 2.50 で 30 / < 3.00 で 25 / < 3.50 で 18 / < 4.00 で 12 / < 4.50 で 6 / 以上 0
WHIP20WHIP < 1.00 で 20 / < 1.10 で 16 / < 1.20 で 12 / < 1.30 で 8 / < 1.40 で 4 / 以上 0
K/920K/9 ≥ 10.0 で 20 / ≥ 9.0 で 15 / ≥ 8.0 で 10 / ≥ 7.0 で 5 / 未満 0(5 IP 未満は評価対象外)
規定投球回ペース15到達済み 15 / 到達ペース 12 / 未達ペース 3 / 評価不能 0
対左右打者バランス10対左右打者の被打率差 < 0.025 で 10 / < 0.050 で 6 / < 0.075 で 3 / 以上 0

評価ラベル

打者: ≥ 85 MVP級 / ≥ 70 中軸クラス / ≥ 55 レギュラー水準 / ≥ 40 出場機会獲得段階 / 未満 立て直し期

投手: ≥ 85 サイ・ヤング級 / ≥ 70 エース級 / ≥ 55 ローテーション中軸 / ≥ 40 ローテ末尾〜中継ぎ / 未満 立て直し期

レーダーチャートの読み方(サンプル)

選手ページでは各サブスコアを「満点に対する達成率(%)」に正規化してレーダーで描いています。 軸ごとに満点が違う(OPS は 40 点・他は 20 点など)ため、生の点数のままだと満点の大きい軸が形を支配してしまうので、達成率 = score ÷ max × 100 に揃えて「どの次元が強く、どの次元が弱いか」をバランスとして読めるようにしています。 点線は MLB 平均級の選手の目安で、選手の塗りがこの点線の外側に出ていればその軸は平均超、内側なら平均未満と一目で分かります。

サンプル: ある強打者(打撃)

※ サンプルは読み方を示すための架空の数値です。点線(MLB 平均級)の各軸の値は、上の閾値表の「平均近辺」の tier に対応させています (例: 打者 OPS 基礎点の点線 50% は OPS .750 = 20/40 点に相当)。閾値を変更したら基準ポリゴンも追従させます。

設計の意図と限界(クリックで展開)

加重平均でなく「上限あり加点方式」を採用した理由: 加重平均は閾値より上の数字が「もったいない」状態になります。 加点方式は各カテゴリの満点に達したら以降の差を切り捨てる設計で、説明文(「OPS 1.000 以上は一律 40 点」)が直感的に伝わることを優先しました。

サブスコア構成の対称性: 打者は OPS(総合数字)+ 規定到達 + 左右バランス + クラッチの 4 軸、 投手は ERA + WHIP + K/9 + 規定到達 + 左右バランスの 5 軸。投手側に WHIP と K/9 を分離したのは、 「結果(ERA・WHIP)」と「内容(K/9)」を別軸として扱うためです。

限界の自認: (1) park factor(球場補正)は未反映 — 同じ OPS でも狭い球場と広い球場で評価が違うべき場面がカバーできていません。 (2) splits(対左右・RISP)は MLB API の statSplits 取得で空配列のことがあり、その場合はサブスコア 0 になります(バランス未測定 ≠ バランス悪い のため厳密にはバイアスありです)。 (3) 二刀流選手は打者スコアと投手スコアを別々に算出するため、両方を 1 つに合算した「総合スコア」は出していません。

年間ペース推定 (On-Pace) の限界自認

On-Pace の数字はあくまで「現状のペースを線形外挿した場合の年間到達点」であって、 以下の前提が崩れると実際の数字は推定から大きく離れることがあります。

  • 怪我・体調変動を反映しない。IL 入りや疲労の蓄積で出場ペースが急減すると推定は外れる
  • 調子の波を平均化する。月別 grafで見れば 5 月好調 → 6 月不調といった波があっても、 年間 projection は「今までの平均ペースが続いた場合」しか出ない
  • シーズン進行率 5% 未満は外挿不能(標本が小さすぎて誤差が大きいため null を返す)
  • レート系指標 (打率・防御率・WHIP・OPS) は projection で変動しない。試合数だけ変動するカウント系 (HR / 打点 / 奪三振 / 勝利) と区別して扱っています
  • 先発投手のローテーション床: 3 GS 以上の先発は「健康な 5 人ローテが残期間継続した場合の登板数」と 線形外挿の max を取る (早期シーズンの 1〜2 turn skip での誤判定を回避)
  • 想定上限 (cap): 打者 162 試合 / 先発 35 登板 / 中継ぎ 80 登板でクリップ。これは規則ではなく 運用パラメータで、cap 超過時は cap と現状値の max を使って「projection が現状値を下回らない」床を貼っています

データの欠落と評価の限界

  • 試合中の数字は試合終了まで暫定: 試合中ページは MLB Stats API の/game/{gamePk}/feed/liveから打席結果を抽出して合成しますが、API キャッシュの反映遅延が数十秒〜数分発生することがあります
  • 新人選手は前年比較が出ない: 編集テキストの「前年同月比」「前年シーズン全体比較」は 前年の MLB データがある選手のみ表示。新人や前年マイナー在籍の選手はこれらの段落が省略され、 編集テキスト全体の文字数も短くなります
  • 打者の球種別評価は非対応: MLB Stats API は投手の pitchArsenal のみ提供しています。 打者の対球種打率は Baseball Savant への外部依存となるため、本サイトでは取り扱っていません
  • 球場補正 (park factor) は非対応: HR の出やすさ・ヒットの出やすさを本拠地別に補正する park factor は、 MLB 公式 API では提供されていないため本サイトでは未実装です
  • 規定到達前のランキング扱い: ERA / WHIP / 打率 / OPS などの規定到達 required 系のランキングは 規定打席・規定投球回到達者のみが公式対象ですが、本サイトでは規定到達前の日本人選手も末尾に 「規定到達前」バッジ付きで救済表示しています (6 人ローテで qualified から外れる大谷の MVP 級 ERA を取りこぼさないため)

アルゴリズム改善履歴

評価ロジック関連コード (lib/editorial/ /lib/projection/ /lib/mlb/) への 直近 30 commit を、git log から自動で取り込んで時系列表示します。 評価が「いつ・どう変わったか」を後からでも検証できるようにするためのものです。

  1. 2026-09-01f4ee56dfix: /todayのhero連投判定が直前1版としか比較せず、間に別主役を挟んだ古いネタが再浮上していた(9/1朝に8/31朝の岡本へ巻き戻り)=直近6版と比較し繰り上げ先が無ければ生成せず前版を温存+連続無失点/連続安打をコード側で数えてrecentFormとして渡す(claudeに数えさせない)
  2. 2026-08-27ede40f7fix: ETLのschedule同期が終了直後の試合を'Game Over'のまま保存し、その試合だけサイト全体から不可視になっていた(下流9箇所が status==='Final' 一致判定)=終了系をFinalに正規化(雨天短縮の'Completed Early'は永久に不可視だった)
  3. 2026-08-25ef37a60feat: 運営者情報をailaff合同会社に法人化(プラポリに事業者欄追加・個人Gmail/ハンドル/GitHubリンクを除去・外部APIのUAも法人アドレスへ)
  4. 2026-08-106c810barefactor: 先発投手判定をlib/mlb/starters.tsに集約(トップ・選手詳細・/todayの3箇所で同一ルールを共有)
  5. 2026-08-0281dc86bfix: digestが開催地を創作していた穴を3層で塞いだ(facts packetにvenueが無いのに「敵地◯◯戦」と書き全66記事中15記事が会場に言及・リード断定9件を実測照合したら5正4誤=的中率56%のコイン投げだった)=isHome由来のvenueをfactsに追加+プロンプトの創作禁止に会場を明記+生成物をfindVenueContradictionで検算し矛盾なら書き直し→それでも駄目なら公開せず前回記事を温存
  6. 2026-08-0198d24fffix: 結果1行で投球回の分数と奪三振数が地続きになり「2/36K」と読めていたのを空白で分離
  7. 2026-08-016664db6fix: digestが投手の敗戦を「勝敗はつかなかった」と誤記する穴を塞ぐ(recentResultValueが勝利投手/セーブしか印字せず敗戦投手を落としていたためclaudeが「印字なし=勝敗つかず」と逆推論・8/1朝刊で今永の黒星を誤記)=敗戦投手を追記+プロンプトに「印字が無い時は勝敗に触れない」を明文化
  8. 2026-08-01894923dfix: 投球回の日本語表記を全面修正(MLBの.1=1/3/.2=2/3を生小数のまま「6.2回」「127.2回」と出していた誤読バグ・formatInningsJa()をlib/mlb/innings.tsに共通化しeditorial7箇所/直近試合サマリ/digest facts/OG画像に適用・X bot側の重複実装も共通化に寄せた)+X運用の投稿前チェックリストに⑦投球回表記を追加(途中降板は「◯回途中」/累計は分数/生小数に「回」を付けない)
  9. 2026-07-2046a12dbfix: /today のhero選定が古いネタに戻る問題を修正=今日の試合を見出し強度より優先+前版と同じ主役の連投を回避(hero_key保存)
  10. 2026-07-14e0edec3fix: オールスターチームへのactivate(NL/AL All-Stars)を故障復帰と誤判定しない=大谷/山本/村上の誤「復帰直後」バッジを解消
  11. 2026-07-0266910cafeat: /todayダイジェストの冪等性を版・日跨ぎの内容署名(hero+notable)に強化=同一hero/試合の再公開を防止
  12. 2026-07-0175e33a4feat: SERP差別化(P1 titleに年間ペース予測を前寄せ+P2 編集テキストopenerに年間着地見込みを追記)=他スタッツ系が出せない前向き投影をtitle/snippet面に押し出す
  13. 2026-06-28f75cbd3refactor: /mlb URLプレフィックス廃止しフラット構成へ統合(/today /leaderboard /highlights・旧/mlb/*はnginx301予定)+サッカー無料データ調査docs追加(Phase2深掘りは無料では不可と判明=FBref Opta喪失/xG5大リーグ限定)
  14. 2026-06-27bee396arefactor: 投手の調子ウィンドウを直近5登板固定→直近15IP累積ベースに(ERAの分母がIPなので先発約3登板/中継ぎ約15登板で信頼度を揃える・中継ぎが10IP閾値で消える問題も解消)
  15. 2026-06-27164eae8feat: 得意/苦手コース17ゾーンヒートマップ(投打・タップで球種内訳TOP3)+選手詳細3タブ再編、調子reasonをformReasonに整理
  16. 2026-06-27ad89307fix: 編集テキストの失礼な言い回しを是正(サウスポーをカモにする→「サウスポーキラー」非常に強い/右腕を打ち崩している→しっかり対応できている〔動詞止め文法崩れも解消〕/wOBA最低tier 物足りない数字→ここから上積みを期待したい数字)
  17. 2026-06-276da2f7crefactor: 調子インジケータ軸2を「運」5段階に純化(実力水準判定を廃止)+トップは調子チップのみ+結合読みを掛け算廃止し現在→見通しの2コマ化
  18. 2026-06-25ecb9e18feat: /mlb/today見出しを同カテゴリ内で成績優秀な方に(gamePerformanceScore追加+digest heroソートに_scoreタイブレーク)
  19. 2026-06-25e5cbf53feat: 見出し判定に好投先発(pitcher-quality)追加+リンク判定をisLinkWorthyに再設計(isStandoutPerformance廃止)+X投稿D/E判定ルール確定
  20. 2026-06-248b93792feat: Claude Design反映=①案A百分位バー/②③パネル刷新+④選手「調子」2軸インジケーター(直近フォーム矢印+本物度) 新設(T-162・トークン経由・ダーク対応)
  21. 2026-06-23e31c6f1feat: Statcast百分位をSavant風バーで可視化(T-162①・既存tierトークン流用・純CSS)
  22. 2026-06-2300a2feafeat: 上級セイバー指標(②)とStatcast深掘り(①)を選手詳細/leaderboardに追加(T-162・日本人13名・新規URLなし・完全自動)
  23. 2026-06-2394b97d2feat: 日次ダイジェスト /mlb/today を本番反映(T-161)
  24. 2026-06-22e958d30feat: X botのリンク/MLB公式動画統合を実装(大活躍最上位1件に/goカード抑止リンク+MLB動画URL付与・standoutを配列先頭へ固定しslice枠落ちを防止・composeWithLinksをX加重長対応・isStandoutPerformance判定)
  25. 2026-06-13b305543feat: トップ並び順を「今日の見出し」順に刷新 + 出場選手全員に試合結果1行を表示(T-158第2弾・直近試合で活躍した選手→次戦昇順・活躍判定はX bot基準をlib/mlb/highlights.tsに共通化・凡退の日も結果表示=ファンの一喜一憂・JST今日/昨日窓・Samurai Score横断ソートは投打偏りのため不採用)
  26. 2026-06-019ec52f8feat: T-155 選手詳細に独自Information Gain次元4種を追加(①安定感スコア=試合別ログのばらつきを0-100化+小サンプル信頼度補正/②MLB分布パーセンタイル=tierを上位約X%相当に格上げ/③調子momentum=直近フォームvsシーズン平均で上昇下降判定/④キャリアイヤー判定=yearByYearの自己ベストOPS/ERA更新ペース・全て既存game log/yearByYear再利用で追加fetch無し・URL増やさず編集独自性を強化・AdSense却下要因③コピー/キュレーション不足への対抗・lib/mlb/consistency.ts+percentile.ts+momentum.ts新設+editorial/mlb.ts統合+選手ページ配線・全13選手ローカル検証/typecheck/lint済)
  27. 2026-05-28aa55463feat: シーズン概況の段落を集約して視覚的にコンパクト化(buildPlayerEditorial で「opener+評価」「splits+前年比+ペース」を各1段落に連結=二刀流の大谷は8→4段落・単独は4→2段落・各builderは完結文を返すので連結しても文法は崩れない・内容と独自次元は全維持で改行だけ削減・前段の優先度↓再配置と合わせて長文の体感ボリュームを軽減)
  28. 2026-05-28f9d9143feat: 選手詳細のシーズン概況/Pro Tips を数字・チャートの下に移動し editorial を密度UP(UX: 一般ユーザーが先に見たい主要数字/Samurai Score/打撃投球成績/直近試合を上、長文の概況とPro Tipsはページ下部へ優先度を下げて再配置・独自の分析次元=対左右splits/RISP/球種arsenal/前年比/年間ペースは全て維持したまま openerの冗長な総合指標メタ文を削除し打撃投球の opener を各1文に圧縮+MLB Top10 の「リーグを牽引する数字となっています」を「に入っています」に簡潔化+K/BB評価文の非文法的な『光りますという打席内容です』を文法修正しつつ短縮・大谷で 1360→1222字・文字数を稼ぐ水増しはむしろ Helpful Content 上の逆効果という整理に基づく=独自性とUXを優先)
  29. 2026-05-28b3d2596feat: T-154 補強 Samurai Score レーダーに MLB平均級の基準ポリゴンを重ね + /about/accuracy に誤差率グラフ + /about/methodology にサンプルレーダー埋め込み(A: samurai-score.ts に HITTER/PITCHER_RADAR_BASELINE 定数=各サブスコアの平均近辺 tier の達成率%を追加し SamuraiScoreRadar が点線(var(--ink-low) strokeDasharray 3 3 fill none)で基準ポリゴンを選手の形の下に重ね描画+「点線=MLB平均級の目安」キャプション・選手の塗りが点線の外/内で平均超/未満を一目化=要因③ 独自編集解釈の強化 / B: 予測精度セルフトラッキングに DeviationBarChart(recharts 横棒・誤差率%=|予測−現在ペース|÷予測×100 で HR と防御率のスケール差を吸収・打者=chart-1 投手=chart-2・予測→現在ペースは tooltip 開示)を Top5 テーブルの上に追加・データ蓄積中は従来通り空状態 / C: /about/methodology の Samurai Score 節に架空サンプル打者のレーダー+基準ポリゴンを埋め込み「score/max×100 で正規化する理由」と「点線=平均近辺 tier 対応」を解説・全て新規URLなし/手書きなし)
  30. 2026-05-27c68474cfeat: T-154 X-1 独自合成指標 Samurai Score 導入(AdSense Information Gain の決定打・MLB API 公開データに本サイト独自の計算式を適用した 0-100 点スケールの proprietary benchmark・打者 4 軸 = OPS基礎点 40 + 規定打席ペース 20 + 対左右バランス 20 + 得点圏クラッチ 20 / 投手 5 軸 = 防御率 35 + WHIP 20 + K/9 20 + 規定投球回ペース 15 + 対左右打者バランス 10・サブスコア内訳を UI で完全公開し計算式は /about/methodology で同期表示予定・lib/mlb/samurai-score.ts 新設に computeHitterScore / computePitcherScore + ScoreBreakdown[] 型・選手詳細ページに「Samurai Score」セクション追加で打撃/投球を 2 カラム表示・大谷で打撃 60/100 レギュラー水準 + 投球 97/100 サイ・ヤング級 を実機確認・残り = UpdatedAt 実質変更検出 + methodology 動的化 + accuracy セルフトラッキング + What-if + Cookie + nginx 301)

関連ページ: