NEWSニュース&ブログ

新卒社員が地道に歩むクラウドエンジニアの道 その3

投稿日:2025/11/28

はじめに

 お久しぶりです、システムサポートの杉林です!前回から日が空いてしまい申し訳ございません。今回は、IaCの代表格であるTerraformと、「Terraformを使い始めたけどどうやって慣れていけばいいかわからない・・・」と苦慮した初心者の特訓方法についてお話しします。
前回の記事はこちら:新卒社員が地道に歩むクラウドエンジニアの道 その2

IaC/Terraformとは?

 最初に、今回の話題の核となるIaCとTerraformについて説明いたします。「1年目にそんなこと言われなくても分かってるよ!」と思った方は次の項まで飛ばしてしまってください。

 IaCとは、「Infrastructure as Code」の略称であり、直訳すると「コードとしてのインフラ」です。どういったものなのか簡単に説明すると、今までGUI形式で行っていたインフラ管理を、アプリケーションのようにソースコード主体で行うことです。インフラリソースの管理を管理コンソールサイトで行う際、ほぼ全ての操作を手作業で行う都合上、どうしてもミスが発生してしまいます。また、複数環境で同じようなインフラ構築を行おうとすると、各環境で全てのリソースを1つ1つ構築しなければいけないため莫大な工数と労力が必要になります。そういった多くの問題を解決してくれるのがIaCです。アプリケーションは1度作成すれば、そのすべてのコードとディレクトリ構成をコピーすることで理論上は完全なコピーを複数環境に作成できるうえ、一部だけをコピーしてほかのアプリケーションに流用することもできます。これと同じことをインフラでもできるようになるということがIaCによる大きなメリットとなっています。
 そして、IaCのための代表的なツールが「Terraform」です。このTerraformは前述したIaCの要件を満たしてくれるツールで、AWSやAzure、GCPだけでなく多岐にわたるクラウドをサポートしているうえ、作成前に現時点の環境との差分の確認ができたり、通常のアプリケーション開発と同じようにGitによるバージョン管理も容易となっています。このTerraformによって、クラウドインフラの効率的でミスの少ない管理が実現できます。

IaCのハードル

 IaCとTerraformについて説明しましたが、この夢のような技術には唯一といっても良い欠点があります。それは、「初心者の学習ハードルが高い」ことです。 元々クラウドエンジニアとしての知識や経験があったり、宣言系の言語(Terraformで使用されるHCLという言語は宣言メインです)に触れたことのある方は比較的早い段階でこのTerraformに慣れることができるかもしれません。しかし、インフラの知識もディレクトリ構成を含む規模の開発経験も無い私が甘い考えでIaCに触れると多くの苦労が付きまといました。
 私がぶつかった大きな壁は、「パラメータの内容が分からない」という問題です。Terraform自体の基本的なコマンドや構築方法を教えていただき、ディレクトリ構成についても何とか他の環境を倣う形で拙いながら再現できましたが、いざリソースを作成しようとするとパラメータを調べるのに多くの時間を割いてしまいました。最初の1,2歩目は踏み出せたものの、その後に躓いてしまっています。この悩みは第2回でも触れた内容で、私がTerraformを扱う中で殆どの時間はパラメータの意味を調べる時間でした。この記事の投稿時点ではTerraformの公式ドキュメントは日本語非対応となっているため、各パラメータの役割が判断しづらいことが多くあります。一目で何を指しているか分かるものもあれば、似たような値が多すぎてどれがどれだか分からなくなってしまうものもあり、翻訳で言葉の意味を調べてはコンソールサイト内からそれらしき単語を探していました。「逆にコンソールサイトの言語を英語にする」という方法も一度試してみましたが、残念ながらコンソールサイトの設定値名とTerraform内の名前は一致していないことが多いため余計に分からなくなっただけでした・・・インフラに限らず、GUIには「視覚的に分かりやすい」という初心者にありがたい要素があるため、どうしても甘えたくなってしまうのが実情です。
 そのような状況の中、私がどのようにパラメータ名の調査時間を減少させ、Terraformの学習に取り組んでいるかについて以下に記していきます。いつか数か月前の私のように「数歩目」で躓いている方が、この記事を読んで学習の手助けにしてくれればと思っております。

コンソールサイトとの組み合わせ

 現在私がTerraformの学習に利用しているのは「コンソールサイトで作成し、Terraformに取り込む」という方式です。最初の頃は1つ1つのパラメータをがむしゃらに調べながらリソースをTerraform上で設定しようとしていましたが、上述したパラメータの意味が分からない問題によって時間を無駄にしてしまいました。そこで有用なのが「取り込む」という部分です。Terraformには「terraform import(以下import)」というコマンドがあり、このコマンドを実行することで既存のリソースのパラメータを取り込む事ができます。公式ドキュメントの各リソースページの最下部にはimportコマンド用のテンプレートがあるので、リソース識別子の部分を書き換えて実行することでリソースの情報を取り込みます。この時、import先を設定するため、予めリソースの設定に最低限必要な値だけは記述しておく必要があります。そして、「terraform state show(以下state show)」という別のコマンドを実行することで、取り込んだリソースのパラメータをTerraform用に表示することができます。このパラメータについてidなどのリソース作成に必要のない設定値を取り除きながら各ファイルに展開し、「terraform plan」による差分が無くなれば完成です。先輩社員の方からこの方法を教えていただいて以降、それまでとは比較にならないペースでTerraformによる構築ができるようになりました。最初は分からないパラメータが出てきた時にのみこの方法をとっていましたが、今の私の知識量では初めて作成するリソースでは毎回この方法から入った方がよいという結論に至りました。

state show実行時の結果。理論上はこれをコピーし、一部パラメータを削除するだけでリソースを作成できます。

 この方法の良いところは、各パラメータの役割や形式をコンソールサイトと当てはめながら確認ができるところになります。まずは初心者に優しいGUIのコンソールサイトでそれぞれのパラメータを異なる値で設定すれば、一見複雑なCUI形式も自分の設定した値を頼りにTerraform上のパラメータ名とコンソールサイト上のパラメータ名を紐づけることができます。公式ドキュメントは日本語非対応であるものの、さっぱり内容が分からないというわけでは決してないため一度概要が理解できれば問題なく読み取ることができます。また、一部のパラメータは単なる1対1形式ではなく複数ブロックによる入れ子構造のようになっていることがありますが、state showはそういった表記の形式も含めて表示されるため記述の形式で躓くことも少ないはずです。

これからについて・おわりに

 今回記した方法によって作業のスピードはかなりマシになったものの、一々この方法を繰り返しているのでは限界があります。コンソールサイトでリソースを一度作成する分は余分な時間になっているからです。あくまで初めて構築するリソースについてこの方法を用いるのであって、その際にパラメータについての簡単な説明をコメントしておくことでいつでも確認できるようにし、2回目以降に自力で直接Terraformから作成できるようになるのが最終的なゴールです。もしも私と同じくリソースの設定値に悩んでいる方がいらっしゃったら、是非ご参考にしてみてください。次回もご一読いただければ幸いです!


杉林直樹(2003年生まれ 2025年入社)
株式会社システムサポート Future Innovation事業本部
ソリューションサービス事業部 インフラチーム所属。
既存環境のIaC化や機能追加を担当。
AWS・Azureの基本を学習中。