「先月のリリースまでは速かったのに、なんか最近もっさりしてない?」
PMや経営者からの、この**「感覚的な指摘」**ほど、エンジニアを困らせるものはありません。
しかし、悔しいことにその指摘は大抵正しいのです。それをPMが確認する前に、エンジニアコード生成時にチェックできる仕組みがあると便利だと思いませんか?
そうすることで、
プログラムのコードのレベルがあがり、モダン開発がすすみます。
Webサイトのパフォーマンス改善は、ダイエットに似ています。 一度気合を入れて画像を圧縮し、コードを整理して「80kg → 60kg」に落とすのは簡単です。難しいのは、**半年後も「60kg」をキープすること(リバウンド防止)**です。
機能を追加すれば、JavaScriptは増えます。 デザインをリッチにすれば、画像は重くなります。 放っておけば、サイトは物理法則に従って必ず遅くなるのです。
本記事では、この「速度のリバウンド」を根性論で防ぐのではなく、
**GitHub Actions と Lighthouse CI を用いて「遅くなるコードをそもそもマージさせない」仕組み(自動化)**について解説します。
第1章:なぜ「パフォーマンス予算」が必要なのか?
ダイエットを維持するには、「太ったら気づく」では遅すぎます。「食べる前にカロリーを見る」必要があります。 Web開発においてこれに当たるのが、**「パフォーマンス予算 (Performance Budget)」**という考え方です。
- JavaScriptサイズ: 300KB 以内
- Lighthouseスコア: 90点 以上
- First Contentful Paint: 1.5秒 以内
これらを「努力目標」ではなく、**「絶対に超えてはいけない予算(制約)」**として定義します。
エンジニアには、工数予算もそうですが、別の予算、コード予算(制約)とすることが、モダン開発に必須の仕組みです。
「予算オーバー」=「バグ」とみなす
多くの現場では、機能バグ(ボタンが動かない等)はリリースを止めますが、パフォーマンス悪化(1秒遅くなる等)はスルーされがちです。
パフォーマンス予算をCI(継続的インテグレーション)に組み込むことで、「速度低下」を「構文エラー」と同等の「リリースできない不具合」として扱うことができます。これこそが、品質維持の唯一の解です。
第2章:最強の門番「Lighthouse CI」
この監視を自動化するために、Googleが提供している公式ツールが Lighthouse CI (LHCI) です。
これを GitHub Actions(自動化ワークフロー)に組み込むことで、以下のフローが実現します。
- エンジニアがコードを修正し、プルリクエスト(PR)を出す。
- GitHub Actions が自動で起動し、そのページに対してLighthouse計測を実行する。
- もしスコアが予算(例: 90点)を下回っていたら、テスト失敗としてマージをブロックする。
人間がチェックする必要はありません。門番が自動で「出直しなさい」と弾いてくれるのです。
第3章:実装レシピ (GitHub Actions)
では、具体的な実装を見てみましょう。 .github/workflows/ci.yml に数行書くだけで、この強力な門番を雇うことができます。
1. ワークフローの設定
YAML
name: CI
on: [pull_request] # PR作成時に発動
jobs:
lhci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
- name: Install & Build
run: |
npm install
npm run build # 本番相当のビルドを作成
- name: Run Lighthouse CI
run: npm install -g @lhci/cli && lhci autorun
env:
LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
2. 予算の定義 (lighthouserc.json)
次に、「何点以下なら落とすか」という予算を定義します。ここがPMとエンジニアの握りどころです。
JSON
{
"ci": {
"collect": {
"staticDistDir": "./out" // Next.jsなどの出力先
},
"assert": {
"assertions": {
// カテゴリごとの最低スコア (0~1)
"categories:performance": ["error", {"minScore": 0.9}],
"categories:accessibility": ["error", {"minScore": 0.9}],
// 個別の指標にも予算を設定できる
"first-contentful-paint": ["error", {"maxNumericValue": 2000}], // 2秒以内
"interactive": ["error", {"maxNumericValue": 3500}] // 3.5秒以内
}
}
}
}
この設定(minScore: 0.9)がある限り、パフォーマンススコアが89点になったコードは、絶対に本番環境に反映されません。
第4章:開発文化の変革
この仕組みを導入すると、開発チームの会話が劇的に変わります。
導入前:
- PM: 「新機能を入れたい」
- エンジニア: 「入れると重くなりますが…まあ、後でチューニングしましょう」
- 結果: 技術的負債の先送り
導入後:
- PM: 「新機能を入れたい」
- エンジニア: 「入れると予算(JSサイズ)オーバーでCIが落ちます。代わりにどの機能を削りますか? あるいは、予算を増やしますか?」
- 結果: 健全なトレードオフの議論
「遅くなった」という感覚論ではなく、
「予算内に収まるか」という定量的な議論ができるようになる。これこそが、自動化監視の真の価値です。
まとめ:速度は「機能」である
「パフォーマンスは、機能要件(Functional Requirement)だ」という言葉があります。 どんなに便利な機能も、表示に10秒かかれば誰も使いません。つまり、遅い機能は、壊れているのと同じです。
- 一度きりの高速化は、誰でもできる。
- 高速化を**「維持」**できるのが、プロの組織。
GitHub Actions と Lighthouse CI を導入し、あなたのチームにも「品質の門番」を配置しましょう。 それが、ユーザー体験を永続的に守るための、最も安上がりで確実な投資です。
👇 【指標】予算を決めるための基準とは?
【SEO】LCPはもう古い?Googleの新指標「INP」の正体
パフォーマンス予算を設定する際、今絶対に含めるべきなのが「INP(応答速度)」です。 Lighthouse CIでINP悪化を防ぐために知っておくべき知識を解説します。
👉 記事を読む:Googleの新指標「INP」とエンジニアがやるべきデバッグ :::
👇 【解決策】CIで落ちた時のチューニング術
【AWS】重い画像を自動で軽くする「画像パイプライン」
パフォーマンス予算オーバーの原因が「画像」なら、これを導入するだけで解決します。 S3に置くだけでWebP/AVIFに自動変換するサーバーレス構成。
👉 記事を読む:AWS Lambdaによる画像最適化パイプライン :::
👉 記事を書いた人

AI参謀GAくん | じーえーくん
tech leadかねやん | 金岡潤
+α
「システムも野菜も、鮮度が命。」
元メガ企業のSEとして、大規模サービスのバックエンド開発・アーキテクチャ設計に従事。その後、福岡に移住し起業。「八百屋」を地域No1にするという異色の経歴を持つ。 現在はBig Tech企業のモダンな開発手法(ベクトル検索、GraphRAG、エージェント技術など)を、地方企業や中小ビジネスの現場に落とし込むDX支援を行っている。 技術の複雑さを感じさせない設計、ビジネスの成果(CX)に直結させる「翻訳者」としてテックリードを担っている。

コメント
コメント一覧 (1件)
[…] 👉 記事を読む:GitHub Actionsによる品質監視の自動化::: […]