理解度チェック:CI/CDの概念を理解しよう
ストーリー
「Step 1の総復習だ。CI/CDの概念をしっかり理解できているか確認しよう」
木村先輩がクイズを用意してくれた。
「全8問、80%(7問正解)で合格だ。 ここが曖昧なままだと、この先の実践で躓くことになるぞ」
クイズの説明
Step 1 で学んだ内容の理解度をチェックします。
- 全8問
- 合格ライン: 80%(7問正解)
- 不合格の場合は復習してから再挑戦してください
問題
Q1. CI/CDパイプラインにおいて、「フェイルファスト」戦略の説明として最も適切なものはどれですか?
- A) テストが失敗したら即座にプロジェクトを中止する
- B) 最も速いチェック(Lint等)を最初に実行し、問題を早期に検出する
- C) テストを1つも書かずに高速にデプロイする
- D) 失敗したテストをスキップして次のステージに進む
正解: B
フェイルファスト戦略とは、パイプラインの最初に実行時間の短いチェック(Lint、型チェックなど)を配置し、問題があれば早い段階でフィードバックを返す手法です。重いテストは後半に配置することで、明らかな問題を素早く検出し、開発者の待ち時間を最小化します。
</details>Q2. 継続的デリバリー(Continuous Delivery)と継続的デプロイ(Continuous Deployment)の違いとして正しいものはどれですか?
- A) デリバリーはテストなし、デプロイはテストあり
- B) デリバリーは本番デプロイに手動承認が必要、デプロイは完全自動
- C) デリバリーはCIを含まない、デプロイはCIを含む
- D) デリバリーとデプロイは全く同じ意味である
正解: B
継続的デリバリーは「いつでもリリース可能な状態」を保つプラクティスで、本番へのデプロイは手動承認を経て実行します。一方、継続的デプロイはテストに通ったコードが自動的に本番環境にデプロイされます。どちらもCIが前提であ り、テストの自動実行を含みます。
</details>Q3. DORAメトリクスの4つのキー指標に含まれないものはどれですか?
- A) デプロイ頻度
- B) リードタイム
- C) テストカバレッジ
- D) 変更失敗率
正解: C
DORAメトリクスの4つのキー指標は「デプロイ頻度」「リードタイム(コミットからデプロイまでの時間)」「変更失敗率」「復旧時間(MTTR)」です。テストカバレッジは品質指標として重要ですが、DORAメトリクスには含まれません。
</details>Q4. カナリアデプロイの説明として正しいものはどれですか?
- A) 全サーバーを一斉に新バージョンに切り替える
- B) 新バージョンを一部のユーザーにだけ公開し、段階的に拡大する
- C) 旧環境と新環境を同時に用意し、ルーティングで切り替える
- D) 1台ずつ順番に新バージョンに更新していく
正解: B
カナリアデプロイは、まず少数のユーザー(例えば5%)にだけ新バージョンを公開し、問題がないことを確認してから徐々に対象を拡大する手法です。選択肢Cは Blue/Green デプロイ、Dはローリングデプロイの説明です。
</details>Q5. CIのアンチパターンとして最も問題が大きいものはどれですか?
- A) CIパイプラインの実行時間が1分以内である
- B) ビルドが壊れた状態を放置し続ける
- C) 1日に10回以上CIが実行される
- D) テストカバレッジが100%である
正解: B
ビルドが壊れた状態を放置することは、CIの最大のアンチパターンです。壊れたビルドの上に新しい変更が積み重なると、原因の特定が困難になり、CIの信頼性が失われます。CIが速いこと(A)や頻繁に実行されること(C)は望ましい状態です。
</details>Q6. GitHub Actionsの特徴として正しくないものはどれですか?
- A) GitHubリポジトリとネイティブに統合されている
- B) ワークフローはYAMLファイルで定義する
- C) パブリックリ ポジトリでは無料で利用できる
- D) セルフホスト型のみで、クラウド実行環境は提供されない
正解: D
GitHub Actionsは、GitHubが提供するクラウド実行環境(GitHub-hosted runners)を利用できます。Linux、Windows、macOSの各環境が用意されています。さらに、自前のサーバーで実行するセルフホストランナーも利用可能です。
</details>Q7. テストピラミッドにおいて、CIパイプラインで最も多く実行すべきテストの種類はどれですか?
- A) E2E(エンドツーエンド)テスト
- B) 結合テスト
- C) 単体テスト
- D) 手動テスト
正解: C
テストピラミッドでは、底辺に位置する単体テストを最も多く実行します。単体テストは実行が速く、コストが低く、問題箇所を特定しやすい特徴があります。推奨比率は単体テスト70%、結合テスト20%、E2Eテスト10%です。
</details>Q8. CI/CDにおけるサプライチェーンセキュリティ対策として適切でないものはどれです か?
- A) 依存パッケージのバージョンをロックファイルで固定する
- B) GitHub Actionsのアクションをバージョンタグで固定する
- C) Dependabotで依存関係の脆弱性を自動検出する
- D) GITHUB_TOKENに必要最小限の権限のみを付与する
正解: B
バージョンタグ(例: @v4)での固定は、タグが差し替えられるリスクがあるため、最も安全とは言えません。より安全な方法は、コミットSHA(例: @a12345...)で固定することです。A、C、Dはいずれもサプライチェーンセキュリティの適切な対策です。
結果
7問以上正解の場合
合格です。おめでとうございます。
Step 1「CI/CDの概念を理解しよう」を完了しました。 次は Step 2「GitHub Actionsワークフローを作ろう」に進みましょう。
6問以下の場合
もう少し復習しましょう。
間違えた問題の内容を、該当するセクションで復習してください:
| 問題 | 復習セクション |
|---|---|
| Q1 | step1_5 CI/CDのベストプラクティス |
| Q2 | step1_3 継続的デリバリー/デプロイ(CD) |
| Q3 | step1_1 CI/CDの全体像 |
| Q4 | step1_3 継続的デリバリー/デプロイ(CD) |
| Q5 | step1_2 継続的インテグレーション(CI) |
| Q6 | step1_4 CI/CDツール比較 |
| Q7 | step1_5 CI/CDのベストプラクティス |
| Q8 | step1_5 CI/CDのベストプラクティス |
Step 1 完了
お疲れさまでした。
学んだこと
- CI/CDの全体像とパイプラインの構成
- 継続的インテグレーション(CI)の原則とメリット
- 継続的デリバリー/デプロイ(CD)の概念とデプロイ戦略
- 主要なCI/CDツールの比較と選定基準
- CI/CDのベストプラクティスとアンチパターン
次のステップ
Step 2: GitHub Actionsワークフローを作ろう(4時間)
CI/CDの概念を理解した今、次は実際にGitHub Actionsでワークフローを作成します。
推定所要時間: 20分