IaC(Infrastructure as Code)は、サーバーやネットワークなどのインフラの構成を、コードで書いて管理する考え方です。クラウドの広がりとともに、インフラの構築や運用の当たり前のやり方になりつつあります。
ここでは、IaCとは何かを、手作業での構築との違いと仕組みから解説します。TerraformやAnsibleなどの主なツールと選び方に加えて、インフラエンジニアがIaCを学ぶ進め方もまとめました。
この記事で分かること
- IaCとは何か、手作業での構築との違いとメリット
- 宣言型と手続き型の違いなど、IaCの仕組みと考え方
- TerraformやAnsibleなどの主なツールと、選び方・学び方
IaCとは?
インフラの構成をコードで管理する考え方
IaCとは、サーバー、ネットワーク、ストレージなどのインフラの構成を、設定ファイル(コード)に書いて、ツールで自動で作る考え方です。
これまでは、手順書を見ながら、画面を操作したりコマンドを1つずつ入力したりして構築するのが一般的でした。IaCでは、「どんなインフラにしたいか」をコードに書いておき、ツールを実行すると、その内容どおりのインフラが作られます。
手作業での構築との違い
| 項目 | 手作業での構築 | IaC |
|---|---|---|
| 手順の残し方 | 手順書(文章やスクリーンショット) | コード |
| 作業の進め方 | 1台ずつ、人が操作する | ツールで、まとめて自動で作る |
| 同じ環境の作り直し | 手間がかかり、ミスも起きやすい | 同じコードから、何度でも同じ環境を作れる |
| 変更の記録 | 作業記録に頼る | Gitなどで、いつ・だれが・何を変えたかが残る |
| 変更の確認 | 作業のあとに確かめる | 実行の前に、何が変わるかを確かめられる |
手作業では、手順書と実際の環境がずれていくことがよくあります。IaCでは、コードがそのまま「今の環境の正しい姿」になるため、ずれが起きにくくなります。
IaCのメリット
| メリット | 内容 |
|---|---|
| 作業のミスを減らせる | 人が手で入力する作業が減り、設定の打ち間違いを防げる |
| 速く構築できる | 何十台のサーバーでも、コードを実行するだけで同じように作れる |
| 同じ環境を再現できる | 開発・テスト・本番の環境を、同じコードからそろえて作れる |
| 変更を管理できる | コードをレビューしてから反映でき、問題があれば前の状態に戻しやすい |
| 属人化を防げる | 構成がコードに残るため、担当者が替わっても引き継ぎやすい |
インフラエンジニアにとっては、「手を動かす作業」から「仕組みを設計し、自動化する仕事」へと役割が移っていく、その中心にある技術です。
仕事の変化については、[インフラエンジニアの将来性]で解説しています。
IaCの仕組みと考え方
宣言型と手続き型
IaCのコードの書き方には、大きく2つの考え方があります。
| 書き方 | 考え方 | 例 |
|---|---|---|
| 宣言型 | 「最終的にこうなっていてほしい」という完成形を書く | サーバーを3台、このネットワークに置く |
| 手続き型 | 「この順番で、こう操作する」という手順を書く | パッケージを入れて、設定を書き換えて、再起動する |
宣言型では、今の状態と完成形の差をツールが調べて、足りない部分だけを自動で作ったり直したりします。TerraformやCloudFormationは、宣言型の代表的なツールです。
何度実行しても同じ結果になる
IaCで大切な考え方が、「何度実行しても同じ結果になる」ことです。これを冪等性(べきとうせい)といいます。
たとえば、「Webサーバーを1台作る」というコードを2回実行しても、サーバーが2台になるのではなく、1台のままになります。すでに完成形どおりなら、何も変えません。そのため、安心して何度でもコードを実行できます。
IaCで変更を反映する流れ
| 流れ | やること |
|---|---|
| 1. コードを書く | 作りたいインフラや、変えたい内容をコードに書く |
| 2. レビューする | Gitで変更を共有し、ほかのメンバーに確かめてもらう |
| 3. 変更の内容を確かめる | ツールで、実行したら何が作られ、何が変わるかを事前に表示する |
| 4. 反映する | 問題がなければ実行し、インフラに反映する |
アプリの開発と同じように、コードのレビューや自動のテストをインフラにも取り入れられるのが、IaCの大きな特徴です。
主なIaCツールと選び方
主なIaCツール
| ツール | 得意なこと | 書き方 |
|---|---|---|
| Terraform | AWS・Azure・Google Cloudなど、さまざまなクラウドのリソースを作る | 宣言型(HCLという言語) |
| OpenTofu | Terraformから分かれたオープンソースのツール。Terraformとほぼ同じ書き方で使える | 宣言型 |
| AWS CloudFormation | AWSのリソースを作る。AWSが提供するツール | 宣言型(YAML・JSON) |
| Azure Bicep | Azureのリソースを作る。Microsoftが提供するツール | 宣言型 |
| Ansible | サーバーやネットワーク機器の中の設定を整える | 手続き型に近い(YAML) |
Terraformは「インフラを作る」、Ansibleは「作ったサーバーや機器の中を設定する」のが得意です。実際の現場では、Terraformでクラウドのサーバーやネットワークを作り、Ansibleでサーバーの中のソフトを入れて設定する、という組み合わせもよく使われます。
ネットワーク機器の自動化にも使われる
IaCは、クラウドだけでなく、ルーターやスイッチなどのネットワーク機器の設定にも使われています。とくにAnsibleは、多くのネットワーク機器に対応していて、何十台の機器の設定をまとめて変えたり、設定のずれを確かめたりできます。
2027年2月に始まるCCNAの新しい版でも、Ansibleによる構成管理が出題範囲に入るとされています。
詳しくは、[CCNA v2.0とは]で紹介しています。
ツールの選び方
| 状況 | おすすめのツール |
|---|---|
| 複数のクラウドを使う、どのクラウドでも使える力をつけたい | Terraform(またはOpenTofu) |
| AWSだけを使っている | AWS CloudFormation、またはTerraform |
| Azureだけを使っている | Azure Bicep、またはTerraform |
| サーバーの中の設定や、ネットワーク機器の設定を自動にしたい | Ansible |
最初の1つに迷ったら、Terraformがおすすめです。求人で挙げられることが多く、クラウドを問わずに使えるため、身につけた力をほかの現場でも活かせます。
AWSで働くエンジニアの仕事は、[AWSエンジニアとは]で紹介しています。
IaCの学び方
| ステップ | やること |
|---|---|
| 1. 手作業で一度作ってみる | クラウドの画面で、サーバーやネットワークを手で作り、仕組みを理解する |
| 2. 同じものをコードで作る | 手で作ったものを、Terraformのコードで作り直してみる |
| 3. Gitで管理する | コードをGitで管理し、変更の記録を残す |
| 4. Ansibleで中身を設定する | 作ったサーバーに、Ansibleでソフトを入れて設定してみる |
IaCは、インフラの仕組みを知っている人ほど、早く使いこなせます。何を作っているのかが分かっているからです。サーバーやネットワークの経験は、そのままIaCの土台になります。
IaCでよくある疑問
プログラミングができなくても使える?
使えます。TerraformやAnsibleのコードは、プログラミングの言語というより、設定を決まった形で書いたファイルに近いものです。ただし、繰り返しや条件の書き方など、少しずつプログラミングの考え方も出てくるため、シェルスクリプトやPythonに触れておくと理解が早く進みます。
シェルスクリプトについては、[シェルスクリプトとは]で紹介しています。
TerraformとAnsible、どちらから学べばいい?
クラウドのインフラを作る仕事をしたいならTerraform、サーバーやネットワーク機器の設定を自動にしたいならAnsibleから始めましょう。どちらか1つを使えるようになると、もう1つも学びやすくなります。
IaCがあれば、手作業の仕事はなくなる?
すべてはなくなりません。障害の原因を探る作業や、IaCを導入する前の古いシステムの運用など、人の判断が必要な場面は残ります。ただし、くり返しの構築や設定の作業は、少しずつIaCに置きかわっていきます。
オンプレミスの環境でも使える?
使えます。Ansibleは、オンプレミスのサーバーやネットワーク機器にも使えます。Terraformも、VMwareなどの仮想化の基盤に対応しています。オンプレミスの運用を自動化する第一歩として取り入れる現場も増えています。
IaCとDockerは、何が違う?
IaCは、サーバーやネットワークなどのインフラを作る考え方です。Dockerは、アプリとその実行環境をコンテナにまとめる技術です。どちらも「コードやファイルで環境を再現する」点は共通していて、IaCで作ったサーバーの上でDockerのコンテナを動かす、という組み合わせもよく使われます。
Dockerについては、[Dockerとは]で解説しています。
まとめ
IaCは、インフラの構成をコードで書いて管理し、自動で作る考え方です。
この記事のポイントは次のとおりです。
- IaCとは
サーバーやネットワークの構成をコードに書き、ツールで自動で作る考え方。 - メリット
作業のミスを減らし、同じ環境を何度でも再現でき、変更をコードで管理できる - 仕組み
完成形を書く宣言型と手順を書く手続き型があり、何度実行しても同じ結果になる。 - 主なツール
インフラを作るTerraformやCloudFormation、サーバーや機器の中を設定するAnsible。 - 学び方
手作業で一度作ってから、同じものをTerraformで作り直し、Gitで管理する。
IaCは、インフラエンジニアの仕事を「手を動かす作業」から「仕組みを設計し、自動化する仕事」へ広げる技術です。まずはクラウドの無料枠で、手で作ったサーバーをTerraformで作り直すところから始めてみましょう。

