QUIZ 20分

理解度チェック:CI/CDの概念を理解しよう

ストーリー

「Step 1の総復習だ。CI/CDの概念をしっかり理解できているか確認しよう」

木村先輩がクイズを用意してくれた。

「全8問、80%(7問正解)で合格だ。 ここが曖昧なままだと、この先の実践で躓くことになるぞ」


クイズの説明

Step 1 で学んだ内容の理解度をチェックします。

  • 全8問
  • 合格ライン: 80%(7問正解)
  • 不合格の場合は復習してから再挑戦してください

問題

Q1. CI/CDパイプラインにおいて、「フェイルファスト」戦略の説明として最も適切なものはどれですか?

  • A) テストが失敗したら即座にプロジェクトを中止する
  • B) 最も速いチェック(Lint等)を最初に実行し、問題を早期に検出する
  • C) テストを1つも書かずに高速にデプロイする
  • D) 失敗したテストをスキップして次のステージに進む
<details> <summary>解答と解説</summary>

正解: B

フェイルファスト戦略とは、パイプラインの最初に実行時間の短いチェック(Lint、型チェックなど)を配置し、問題があれば早い段階でフィードバックを返す手法です。重いテストは後半に配置することで、明らかな問題を素早く検出し、開発者の待ち時間を最小化します。

</details>

Q2. 継続的デリバリー(Continuous Delivery)と継続的デプロイ(Continuous Deployment)の違いとして正しいものはどれですか?

  • A) デリバリーはテストなし、デプロイはテストあり
  • B) デリバリーは本番デプロイに手動承認が必要、デプロイは完全自動
  • C) デリバリーはCIを含まない、デプロイはCIを含む
  • D) デリバリーとデプロイは全く同じ意味である
<details> <summary>解答と解説</summary>

正解: B

継続的デリバリーは「いつでもリリース可能な状態」を保つプラクティスで、本番へのデプロイは手動承認を経て実行します。一方、継続的デプロイはテストに通ったコードが自動的に本番環境にデプロイされます。どちらもCIが前提であり、テストの自動実行を含みます。

</details>

Q3. DORAメトリクスの4つのキー指標に含まれないものはどれですか?

  • A) デプロイ頻度
  • B) リードタイム
  • C) テストカバレッジ
  • D) 変更失敗率
<details> <summary>解答と解説</summary>

正解: C

DORAメトリクスの4つのキー指標は「デプロイ頻度」「リードタイム(コミットからデプロイまでの時間)」「変更失敗率」「復旧時間(MTTR)」です。テストカバレッジは品質指標として重要ですが、DORAメトリクスには含まれません。

</details>

Q4. カナリアデプロイの説明として正しいものはどれですか?

  • A) 全サーバーを一斉に新バージョンに切り替える
  • B) 新バージョンを一部のユーザーにだけ公開し、段階的に拡大する
  • C) 旧環境と新環境を同時に用意し、ルーティングで切り替える
  • D) 1台ずつ順番に新バージョンに更新していく
<details> <summary>解答と解説</summary>

正解: B

カナリアデプロイは、まず少数のユーザー(例えば5%)にだけ新バージョンを公開し、問題がないことを確認してから徐々に対象を拡大する手法です。選択肢Cは Blue/Green デプロイ、Dはローリングデプロイの説明です。

</details>

Q5. CIのアンチパターンとして最も問題が大きいものはどれですか?

  • A) CIパイプラインの実行時間が1分以内である
  • B) ビルドが壊れた状態を放置し続ける
  • C) 1日に10回以上CIが実行される
  • D) テストカバレッジが100%である
<details> <summary>解答と解説</summary>

正解: B

ビルドが壊れた状態を放置することは、CIの最大のアンチパターンです。壊れたビルドの上に新しい変更が積み重なると、原因の特定が困難になり、CIの信頼性が失われます。CIが速いこと(A)や頻繁に実行されること(C)は望ましい状態です。

</details>

Q6. GitHub Actionsの特徴として正しくないものはどれですか?

  • A) GitHubリポジトリとネイティブに統合されている
  • B) ワークフローはYAMLファイルで定義する
  • C) パブリックリポジトリでは無料で利用できる
  • D) セルフホスト型のみで、クラウド実行環境は提供されない
<details> <summary>解答と解説</summary>

正解: D

GitHub Actionsは、GitHubが提供するクラウド実行環境(GitHub-hosted runners)を利用できます。Linux、Windows、macOSの各環境が用意されています。さらに、自前のサーバーで実行するセルフホストランナーも利用可能です。

</details>

Q7. テストピラミッドにおいて、CIパイプラインで最も多く実行すべきテストの種類はどれですか?

  • A) E2E(エンドツーエンド)テスト
  • B) 結合テスト
  • C) 単体テスト
  • D) 手動テスト
<details> <summary>解答と解説</summary>

正解: C

テストピラミッドでは、底辺に位置する単体テストを最も多く実行します。単体テストは実行が速く、コストが低く、問題箇所を特定しやすい特徴があります。推奨比率は単体テスト70%、結合テスト20%、E2Eテスト10%です。

</details>

Q8. CI/CDにおけるサプライチェーンセキュリティ対策として適切でないものはどれですか?

  • A) 依存パッケージのバージョンをロックファイルで固定する
  • B) GitHub Actionsのアクションをバージョンタグで固定する
  • C) Dependabotで依存関係の脆弱性を自動検出する
  • D) GITHUB_TOKENに必要最小限の権限のみを付与する
<details> <summary>解答と解説</summary>

正解: B

バージョンタグ(例: @v4)での固定は、タグが差し替えられるリスクがあるため、最も安全とは言えません。より安全な方法は、コミットSHA(例: @a12345...)で固定することです。A、C、Dはいずれもサプライチェーンセキュリティの適切な対策です。

</details>

結果

7問以上正解の場合

合格です。おめでとうございます。

Step 1「CI/CDの概念を理解しよう」を完了しました。 次は Step 2「GitHub Actionsワークフローを作ろう」に進みましょう。

6問以下の場合

もう少し復習しましょう。

間違えた問題の内容を、該当するセクションで復習してください:

問題復習セクション
Q1step1_5 CI/CDのベストプラクティス
Q2step1_3 継続的デリバリー/デプロイ(CD)
Q3step1_1 CI/CDの全体像
Q4step1_3 継続的デリバリー/デプロイ(CD)
Q5step1_2 継続的インテグレーション(CI)
Q6step1_4 CI/CDツール比較
Q7step1_5 CI/CDのベストプラクティス
Q8step1_5 CI/CDのベストプラクティス

Step 1 完了

お疲れさまでした。

学んだこと

  • CI/CDの全体像とパイプラインの構成
  • 継続的インテグレーション(CI)の原則とメリット
  • 継続的デリバリー/デプロイ(CD)の概念とデプロイ戦略
  • 主要なCI/CDツールの比較と選定基準
  • CI/CDのベストプラクティスとアンチパターン

次のステップ

Step 2: GitHub Actionsワークフローを作ろう(4時間)

CI/CDの概念を理解した今、次は実際にGitHub Actionsでワークフローを作成します。


推定所要時間: 20分