FCPを改善

| 項目 | 状態 |
|------|------|
| GZIP圧縮(必須) | 適用済み(未圧縮2件に適用。FCP効果0msを実測証明) |
| 複数CSSの一本化(必須) | 適用済み(9本→1本、リクエスト-7件) |
| 不使用CSSの存在 | 適用済み(purgecssで転送-19.7%、デッドCSS削除) |
| script要素によるレンダリングブロック | 適用済み(全19本にdefer。RB 13件→1件) |
| preloadの誤用 | 適用済み(未使用preconnect 7オリジン削除) |
| CDN同一ドメイン化 | 該当なし(外部CDN 0件、全てセルフホスト) |
| CSSが別ドメインから配信 | 該当なし(CSS 9件すべて同一ドメイン) |
| CSSの@import使用 | 該当なし(CSS 9本を展開して全文検索、0件) |
| document.write | 該当なし(全JS 504,932文字を検索、0件) |
| Google Optimizeによる表示制御 | 該当なし(async-hide 0件) |
| クリティカルCSSの逆効果 | 該当なし(動的CSS挿入 0件) |
| アニメーションによる表示遅延 | 該当なし(全体を隠す実装なし) |
| (追加探索)JSのminify | 適用済み(6本をminify、wastedBytes -81%) |

| 項目 | フェーズ開始時 | 完了時 |
|------|--------------|--------|
| render-blocking-insight | 20件 / 132,695B | 1件 / 24,152B(-92.3% / -81.8%) |
| stylesheet転送量 | 57.0KB | 44.7KB(-19.7%) |
| stylesheetリクエスト数 | 11 | 4 |
| unminified-javascript | 25,760B | 4,905B(-81%) |
| preconnectオリジン | 8(うち7未使用) | 1(使用中のみ) |

観測FCP 1,247ms のうち 1,077ms(86.5%)がルート文書のTTFBだった。
しかしLighthouseのLanternは、オリジンのサーバ応答時間を観測最小値(76.05ms)で
代表させるため、この1,077msを外れ値として捨ててスコアを算出する。

その結果「FCPスコアは100点なのに server-response-time 監査は score 0
(Root document took 1,070 ms)」という矛盾した状態になっていた。

P-FCP-8 で ttfbMs を 1070→100 に変更するシミュレーションを行った結果:

| 指標 | 変更前 | 変更後 | 変化 |
|------|--------|--------|------|
| 観測FCP | 1,199ms | 199ms | -1,000ms(-83.4%) |
| 観測LCP | 1,973ms | 1,011ms | -962ms(-48.8%) |
| 観測SI | 1,744ms | 756ms | -988ms(-56.7%) |
| 観測TTFB | 1,075ms | 105ms | -970ms(-90.2%) |
| スコア算出FCP | 98ms | 94ms | ほぼ不変 |

**スコアは動かないのに実際の表示は約1秒速くなる**ことを実証した。

注記: P-FCP-8 は inventory の ttfbMs を書き換えたシミュレーションであり、
実際のサーバー改修ではない。フロントエンド(inventory)の編集では対処できない
領域の改善ポテンシャルを数値化したものである。

第1段階で `</body>` 直前の6本のみに defer を付与したが、
render-blocking-insight は13件のまま1件も減らなかった。
**末尾のスクリプトはそもそもレンダリングをブロックしていない**ためである。
真のボトルネックは `<head>` の10本(jQuery 146KB を含む)だった。

LCP: 213ms
CLS: 0.000
TBT: 0ms
FCP: 94ms
SI: 461ms
Overall Score: 100

(観測値: FCP 199ms / LCP 1,011ms / SI 756ms)