# IaC — インフラをコードで書いて自動構築する

> レベル: 初級 ／ 対象: 大人
> 出典: Kotowary — https://kotowary.com/learn/units/iac?level=beginner&audience=adult
サーバやネットワークを用意するとき、管理画面を **手でポチポチ設定** していくと、手順が人の頭の中にしか残らず、次に同じものを作るとき必ずどこかずれます。これを解決するのが **IaC（Infrastructure as Code）** です。

## これは何をする係？

IaC は、サーバ・ネットワークといった **インフラの構成をコードで書き**、ツールに **自動で構築させる** 考え方です。

料理でたとえると、勘で味付けするのではなく **レシピ（※1 設定ファイル）に分量を書き残す** イメージ。レシピどおりに作れば、誰が作っても・何度作っても同じ料理になります。

手作業との違いはここです。

- **手作業** — 画面を操作。手順は記憶頼み、人によってばらつく
- **IaC** — 構成をファイルに記述。**そのまま再現** でき、履歴も残る

**登場人物メモ**:

- **※1 設定ファイル** — 望むインフラの構成を書いたコード。これが「レシピ」になる
- **※2 プロビジョニング** — コードに従ってサーバ等を実際に用意する工程

## 仕事の流れ

1. 望むインフラの構成を **ファイルに書く**（サーバ何台・ネットワークはこう…）
2. ツールにそのファイルを **読ませる**
3. ツールが構成を **自動で構築**（※2 プロビジョニング）する
4. 同じファイルを使えば、別の場所でも **同じ環境が再現** される

ポイントは、作業の中身が **文章として残る** こと。次の人はその文章を読めば、何がどう作られているか分かります。

## コード化でうれしい理由

- **再現できる** — 同じコードから同じ環境が何度でも作れる（開発用・本番用をそろえやすい）
- **履歴が残る** — 「いつ・誰が・何を変えたか」がコードの変更として追える
- **レビューできる** — 変更を出す前に、他の人が内容を確認できる

手順が人の記憶から **コードへ移る** ので、属人化（その人しか分からない状態）が減ります。

## ⚠️ うまくいかないとき

- **手で直してずれる** — コードを通さず画面で直すと、コードと現実が食い違う
- **コードのミスが全体に波及** — 間違ったまま流すと、全環境に同じ間違いが広がる
- **消す操作も自動** — 「消す」もコードどおり実行されるので、書き間違いに注意
