速く・安く — マトリクス・キャッシュ・無料枠とコスト

📖 このページのゴール:自動化を 速く・安く 回す3つの道具——マトリクス(いろんな環境を一気にテスト)・キャッシュ(次回を速く)・コスト(無料枠と料金)——を、初心者でもイメージできるように知る。 ← 目次・はじめにへもどる


前のページまでで、自動でテストし、安全に届けるところまで来ました。最後は「もっと速く、もっと安く」回すコツです。自動化はラクですが、何も考えないと「遅い・お金がかかる」になりがち。ここを押さえると、毎日の開発がぐっと気持ちよくなります。


🟢 ① マトリクス(matrix)=いろんな環境を「一気に」テスト

マトリクス(matrix=組み合わせ表)は、複数のOS/バージョンを並行(へいこう=同時)でテストするしくみです。

たとえば「Windowsでも macでも Linuxでも動く?」「Node 18でも 20でも動く?」を確かめたいとき。手で全部試すと大変ですが、マトリクスなら 組み合わせを全部、いっぺんに 走らせてくれます。

🍱 たとえるなら 「全部のせ味見セット」。「松・竹・梅 × 大盛り・並盛り」を一皿ずつ作って同時に味見する感じ。どれか1つでもマズければ、その場で分かります。

jobs:
  test:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        node: [18, 20]
    runs-on: $
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: $
      - run: npm ci
      - run: npm test

1行ずつ読むと:

  • strategy: … この後で「どう散らして走らせるか」を決める、という宣言。
  • matrix: … 組み合わせ表のはじまり。
  • os: [ubuntu-latest, macos-latest, windows-latest] … OSを3種類ならべる(Linux・mac・Windows)。
  • node: [18, 20] … Nodeのバージョンを2種類ならべる。
  • runs-on: $ … 走らせるランナー(貸しパソコン)を、表の os から1つずつ受け取る。
  • 残り(checkoutsetup-nodenpm cinpm test)は、各組み合わせで同じことをやる。

これだけで 3(OS)× 2(Node)= 6通り同時に走ります。「全部の組み合わせを一気に確認できる」のがマトリクスの嬉しさです。

🔧 応用メモ: 組み合わせが増えるほど 走る数(=使う時間)も増える ので、料金にも効いてきます(後述)。「本当に必要な組み合わせだけ」にしぼるのがコツ。


🟢 ② キャッシュ(cache)=依存を保存して「次回を速く」

毎回のテストで地味に時間を食うのが、依存ライブラリのダウンロードnpm cinode_modules を取ってくる等)。毎回ゼロからダウンロードし直すのはムダですよね。

キャッシュ(cache=一時保存)は、その依存をいったん保存しておき、次回はそれを使い回すしくみ。actions/cache というアクションを使います。

🧊 たとえるなら 「冷蔵庫の作り置き」。毎回スーパーに買い出し(ダウンロード)に行く代わりに、作り置きを温め直すだけ。だいぶ時短になります。

      - uses: actions/cache@v4
        with:
          path: ~/.npm
          key: npm-$

1行ずつ読むと:

  • uses: actions/cache@v4 … キャッシュ用の既製アクションを使う。
  • path: ~/.npm … 保存/復元したい場所(npm のダウンロード置き場)。
  • key: … キャッシュの「合言葉(名札)」。package-lock.json(依存の一覧)から作るので、依存が変わったときだけ作り直し、変わらなければ前回のを再利用する。

💡 多くの setup-* 系アクション(例 actions/setup-node)は、cache: 'npm' と書くだけでキャッシュを自動でやってくれるので、まずはそちらが手軽です。

⚠️ キャッシュとアーティファクトは別物:キャッシュ=速くするための一時保存(使い回す)/アーティファクト=成果物を残す(ビルド済みアプリやレポートをダウンロード)。混同しないように。


🟢 ③ コスト(料金)=無料枠と「使った分だけ」

「自動化ってお金かかるの?」——いちばん大事な結論から。

  • パブリックリポジトリ(公開)は無料:標準ランナーでの実行は無料です。OSSや学習用は気にせず使えます。
  • プライベートリポジトリ(非公開)は、毎月の無料分+超過は従量(じゅうりょう=使った分だけ)課金実行した時間(分単位)で計算され、毎月一定の無料枠があり、それを超えたぶんだけ料金がかかります。

しかも OSによって「分の重さ(倍率)」が違う のが要注意。一般論として Linux が一番安く、Windows はその数倍、macOS はさらに高い(mac は専用ハードが要るため)。だからマトリクスで mac を何通りも回すと、思ったより分を食います。

OS 速さ・安さの目安 ざっくり一言
🐧 Linux(ubuntu) いちばん安い・速い 基本はこれでOK
🪟 Windows Linuxの数倍の倍率 Windows対応が要るときだけ
🍎 macOS さらに高い倍率 Apple系のビルド/テスト等、必要なときだけ

🔧 倍率の具体的な数値や無料枠の分数は変わるので、正確な値は GitHub の公式の料金ページで必ず確認してください(このページでは「Linuxが安く、Windows→macOSの順に高くなる」という関係だけ覚えればOK)。


🔧 ④ self-hosted runner = 自前マシンをランナーにする

GitHub が貸してくれるランナー(使い捨ての貸しパソコン)の代わりに、自分のマシンをランナーとして登録することもできます。これが self-hosted runner(セルフホステッド・ランナー=自前ランナー)

🏠 たとえるなら 「レンタカーではなく自分の車を使う」計算力はタダ(電気代等は別)で、好きなソフトや特殊な環境も自由。ただし 車検・掃除・故障対応=管理は全部自分

  GitHub提供ランナー self-hosted runner(自前)
用意 すぐ使える(設定不要) 自分でマシンを用意・登録
お金 無料枠+従量 計算力はタダ(電気・保守は自前)
自由度 標準的な環境 好きな環境にできる
管理の手間 GitHubが面倒を見る 全部自分(更新・故障・セキュリティ

⚠️ self-hosted は、fork からのPRで他人のコードが自分のマシン上で動くリスクがあるため、公開リポジトリでは特に注意(基本はプライベート/組織内で)。慣れないうちはGitHub提供ランナーで十分です。


🟢 節約のコツ(早見表)

コツ なにをする なぜ効く
全部走らせない 関係ない変更では動かさない(paths: でフォルダを限定、if: で条件分け) ムダな実行=ムダな分を減らす
キャッシュを使う actions/cachecache: 'npm' ダウンロード時間をカット=速い&安い
マトリクスをしぼる 本当に要るOS/版だけ 組み合わせの数だけ時間が増えるのを防ぐ
必要な時だけ 重い処理は schedule(夜だけ)や手動(workflow_dispatch)に 毎push で重いことをしない
重い順を見直す まず軽いlint/型 → 通ったらビルド ダメなら早く落として時間を節約

🟢 まず1つだけやるなら: setup-nodecache: 'npm' を足す。1行で速くなって、しかもタダで効く、いちばん費用対効果の高い一手です。


🟢 ひとことで言うと

マトリクスで「いろんな環境を一気に」テストし、キャッシュで「次回を速く」する。お金は 公開リポジトリは無料/非公開は無料枠+使った分(macOSは高い)。困ったら self-hosted で自前マシンも使えます。基本は 「ムダに全部走らせない・キャッシュする・必要な時だけ」 の3つ。

➡️ 次へ

次のページ:まとめ — 始め方&選び方フローチャート&比較早見表 → ← 目次・はじめにへもどる