GitHub Actions高速化チェックリスト

入門 | 9分 で読める | 2026.06.27

公式ドキュメント

まず測る

チェック見る場所
どのjobが遅いかActionsのjob一覧
どのstepが遅いかjob内のstep時間
installが遅いかnpm ci / pnpm install
testが遅いかtest step
buildが遅いかbuild step
queue待ちがあるかworkflow開始までの時間

高速化は、遅い場所を見つけてから始めます。

cache

Node.js:

- uses: actions/setup-node@v4
  with:
    node-version: 22
    cache: npm

- run: npm ci

pnpm:

- uses: pnpm/action-setup@v4
  with:
    version: 9

- uses: actions/setup-node@v4
  with:
    node-version: 22
    cache: pnpm

- run: pnpm install --frozen-lockfile

確認:

  • lockfileがコミットされているか
  • package managerとcache設定が合っているか
  • cache hitしているか

concurrency

同じブランチの古いCIをキャンセルします。

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

PRへ何度もpushする開発では効果が出やすいです。

paths

不要な変更でCIを動かさない設定です。

on:
  pull_request:
    paths:
      - "src/**"
      - "package.json"
      - "package-lock.json"
      - "tsconfig.json"
      - ".github/workflows/**"

注意:

  • 除外しすぎない
  • 設定ファイルを忘れない
  • docsだけの変更でCI不要か確認する

job分割

直列:

install -> lint -> test -> build

並列:

lint
test
build

独立している処理はjob分割を検討します。ただし、各jobでinstallが走るため、小さいプロジェクトでは直列の方が速いこともあります。

artifact

build成果物を後続jobへ渡します。

- uses: actions/upload-artifact@v4
  with:
    name: dist
    path: dist/
- uses: actions/download-artifact@v4
  with:
    name: dist
    path: dist/

同じbuildを複数回実行しないために使います。

hookとの役割分担

場所実行内容
pre-commitstaged filesのformat/lint
pre-push必要なら軽いtest
PR CIlint/typecheck/test/build
main CIdeploy/E2E/security scan

pre-commitに重い処理を詰め込みすぎないようにします。

Lefthook移行

Husky + lint-staged が遅い場合、Lefthookを検討します。

pre-commit:
  parallel: true
  commands:
    eslint:
      glob: "*.{ts,tsx,js,jsx}"
      run: pnpm exec eslint --fix {staged_files}
      stage_fixed: true
    prettier:
      glob: "*.{ts,tsx,js,jsx,json,md,css}"
      run: pnpm exec prettier --write {staged_files}
      stage_fixed: true

見ること:

  • staged filesだけ対象か
  • commandが並列化されているか
  • typecheckをpre-commitに入れすぎていないか
  • 移行前後の時間を測ったか

よく効く改善

改善効果
setup-node cacheinstall短縮
concurrency古いCIを止める
paths不要なCIを減らす
job分割待ち時間短縮
staged files lintpre-commit短縮
Lefthookhook起動と並列実行の改善
artifactbuild重複削減

READMEに書く項目

## CI/CD Performance

- setup-node cacheで依存関係インストールを短縮
- concurrencyで古いCIを自動キャンセル
- pre-commitはLefthookでstaged filesのみチェック
- lint/test/buildを役割ごとに分離

ポートフォリオでは、before/afterの時間も書くと伝わりやすいです。

まとめ

GitHub Actionsの高速化では、まず測り、cache、concurrency、paths、job分割、hookの役割分担を見ます。

CI/CDを組めるだけでなく、開発者が毎日使いやすい速度まで整えると、実務で評価されやすくなります。

参考リソース

← 一覧に戻る
PR
PR
PR
PR