CI/CD はどう組みますか

押すたびに lint、テスト、ビルドを自動で回し (CI)、通った物を決まった手順で出す (CD)、と答える問い。PR ごとのプレビュー環境、少しずつ出すこと、すぐ戻せることまで話します。

答えてみる

面接官に「CI/CD はどう組みますか」と聞かれたつもりで、答えを見る前に自分の言葉で答えます。

声に出して答えた人は「書かずに答えを見る」で開けます。

解説を読む

聞かれ方から関連するコースまで、この問いの解説を全部ここに置いています。

こう聞かれます

  • 「CI/CD はどう組みますか」
  • 「PR を出したら、何が自動で走るようにしますか」
  • 「本番に出したあと不具合が見つかったら、どうしますか」

面接官が見ている点

  • CI (変更のたびに自動で確かめる) と CD (通った物を自動で出す) を分けて説明できるか
  • lint、テスト、ビルド、配備の流れを順に言えるか
  • PR ごとのプレビュー環境で、出す前に画面を見られるようにしているか
  • 本番には少しずつ出し、すぐ前の版に戻せるようにしているか

短い答え

  • PR を出すたびに、GitHub Actions のような仕組みで lint、テスト、ビルドを自動で回し、通らない物はマージできないようにします (CI)。
  • PR ごとにプレビュー環境を作って画面を確かめ、main に入った物は決まった手順で自動で配備します (CD)。
  • 本番には、一部の利用者から少しずつ出し、問題があれば前の版へすぐ戻せるようにして、出すことの怖さを小さくします。

少し詳しい答え

CI で確かめること

CI (継続的インテグレーション) は、変更を押すたびに、自動で確かめる仕組みです。

  1. lint と型の検査書き方の誤りや型の食い違いを、すぐ見つけます
  2. テスト単体テストや結合テストを回し、前に動いていた物が壊れていないかを確かめます
  3. ビルド本番と同じ手順で組み立てられるかを確かめます

YAML

name: ci
on: pull_request
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npm run lint
      - run: npm test
      - run: npm run build

この検査が通らないとマージできない、という決まり (ブランチの保護) をリポジトリに設定しておくと、壊れた物が main に入りません。GitHub Actions のほかに、GitLab CI や CircleCI なども同じ形で組めます。

CD で出すこと

CD (継続的デリバリー、または継続的デプロイ) は、確かめた物を、決まった手順で出す仕組みです。

  • プレビュー環境 PR ごとに、その変更だけを入れた環境を作り、URL を PR に貼ります。レビューする人が、画面を実際に触って確かめられます
  • 自動の配備 main に入った物を、手を介さずにステージング、本番の順に出します。人の手順を減らすほど、出し忘れや手順の間違いが減ります
  • 少しずつ出す新しい版を、まず一部の利用者や一部のサーバーにだけ出し (カナリアリリースと呼ばれます)、エラーの率や遅さを見てから広げます
  • すぐ戻す前の版を残しておき、問題が出たら 1 つの操作で前の版に切り替えます。直してから出し直すより、まず戻すほうが利用者への影響が短く済みます

トレードオフ

検査を増やすほど安心ですが、CI が遅くなり、待ち時間が開発の速さを削ります。遅くて不安定な検査は、やがて誰も信用しなくなります。だから、速い検査 (lint、単体テスト) は毎回、重い検査 (画面を通した試験) は main に入る前だけ、のように分け、変わった所に関係する検査だけ回す工夫もします。

少しずつ出す仕組みも、作るのに手間がかかります。利用者が少ないうちは、プレビューで確かめてから一度に出し、すぐ戻せる手順だけ用意する、という軽い形で十分なこともあります。

話すときは、自分が関わったリポジトリで、PR を出してから本番に出るまでに何が走るかを、順に 1 つ説明できるようにしておきます。

よくある間違い

  • CI が赤いままマージする壊れた物が main に入り、次の人の作業まで止まります。検査が通らないとマージできないようにします
  • 配備を人の手順に頼る手順の抜けや間違いが起きます。同じ手順を自動で回します
  • 戻し方を決めずに出す問題が出てから戻し方を考えると、利用者への影響が長引きます

深掘りの問い

  • 「CI が遅くなったら、どうしますか」どの検査が時間を食っているかを測り、並べて回す、キャッシュを効かせる、変わった所に関係する検査だけ回す、重い検査を後ろに回す、と答えます
  • 「たまに落ちるテストは、どうしますか」放っておくと検査が信用されなくなるので、原因を調べて直すか、直すまで外して記録を残す、と答えます
  • 「データベースの変更を含む配備は、どう戻しますか」 アプリを戻しても動くように、スキーマの変更は足す形で先に出し、消すのは最後に回す、と答えます

確認日 2026年10月24日

技術面接問題の一覧へ戻る