【入門編】CircleCI設定の基礎:config.ymlの書き方と必須キーワードを徹底解説 – バージョン管理・CI/CD活用バイブル

こんにちは!開発の現場で「お、今日もコード書くぞ!」と意気込んだはいいものの、プルリクエストを出したあとのテスト待ちや、手動でのデプロイ作業でげんなりしていませんか?

「テストは機械に、人間はクリエイティブなことに集中する」
これを実現するのがCI/CD(継続的インテグレーション/継続的デリバリー)であり、その世界への最高のパスポートがCircleCIです。

今回は、CircleCIの心臓部である `.circleci/config.yml` の書き方と必須キーワードを、明日から即戦力として使えるレベルまで徹底的に紐解いていきます。これをマスターすれば、あなたの開発ライフサイクルは劇的に滑らかで、心地よいものになりますよ。

—

1. CircleCIって、そもそも何をしてくれるの?

一言で言えば、「あなたがGitにコードをプッシュした瞬間から、裏で自動的にテストやビルド、デプロイを完璧にこなしてくれるロボット執事」です。

ローカル環境では「動いた!」のに、本番環境やチームメンバーのPCで「動かない…」という現象、ありませんか? CircleCIは、クリーンな仮想環境(コンテナ)上で毎回まっさらな状態からビルドとテストを実行するため、「環境依存のバグ」を徹底的に排除してくれます。

—

2. config.ymlの全体像を掴む(4つの基本要素)

CircleCIの設定は、プロジェクトのルートディレクトリにある `.circleci/config.yml` というたった1つのYAMLファイルで制御します。

初心者の方がいきなり複雑な設定を見るとめまいがしてしまうかもしれませんが、安心してください。CircleCIの構造は、ロシアの民芸品「マトリョーシカ」のように、綺麗に階層化されています。

まずは、絶対に覚えておくべき4つの必須キーワードを頭に入れましょう。

1. `workflows`(オーケストラ全体の指揮者): どのジョブを、どの順番で、どのタイミング(mainブランチへのマージ時など)で動かすかを制御します。
2. `jobs`(作業員チーム): 「テストをする」「ビルドをする」といった一連の作業単位です。
3. `steps`(作業員がやる具体的な手順): 各jobの中で実行する具体的なコマンドのリストです(「コードをチェックアウトする」「依存関係をインストールする」「テストを実行する」など)。
4. `executors`(作業員が働く環境): DockerイメージやMac環境など、ジョブが実行される実行環境を定義します。

この関係性を図解すると、こうなります。

workflows (全体統括)
└── job A (テスト)
└── executor (Docker環境)
└── steps (具体的な手順 1, 2, 3…)
└── job B (デプロイ)

—

3. 【実践】精度高い「Hello World」を書こう

百聞は一見にしかず。実際に動く、極めてクリーンでモダンな `config.yml` を見てみましょう。Node.jsのプロジェクトを想定した、最も美しく無駄のない構成です。

プロジェクトのルートに `.circleci/config.yml` を作成し、以下のコードを貼り付けてみてください。

CircleCIのバージョン指定。常に最新の「2.1」を指定するのが鉄則です。
version: 2.1

1. executors(作業環境の定義)
ジョブで使うDockerイメージを指定します。今回は公式のNode.js環境を使います。
executors:
node-executor:
docker:

  • image: cimg/node:18.16.0

working_directory: ~/project

2. jobs(具体的な作業の定義)
jobs:
build-and-test:
executor: node-executor # 上で定義した環境を呼び出す
steps:
# ステップ1: GitHubからソースコードを仮想環境に持ってくる(必須!)

  • checkout

# ステップ2: Node.jsの依存関係をインストールする
# キャッシュを活用して高速化する工夫もできますが、まずは基本のinstallから

  • run:

name: 依存関係のインストール
command: npm ci

# ステップ3: テストを実行する

  • run:

name: ユニットテストの実行
command: npm test

3. workflows(実行のタイミングと順序の制御)
workflows:
# 「ci-pipeline」という名前のワークフローを定義
ci-pipeline:
jobs:

  • build-and-test

たったこれだけの記述で、あなたがGitHubにコードをプッシュするたびに、CircleCIが自動でNode.jsの環境を立ち上げ、`npm install`(正確にはクリーンインストールである `npm ci`)を行い、テストを走らせてくれます。

—

4. 現場で役立つ!保守性の高いconfigを書くためのベストプラクティス

先輩エンジニアとして、これからCircleCIを触るあなたに、のちのち絶対に役立つ「綺麗な書き方のコツ」を3つ授けましょう。

① `run` ステップには必ず `name` をつける

CircleCIのWebダッシュボードを見たとき、ステップ名が単に `run: npm test` だと、何が失敗したのか一目でわかりません。
`name: ユニットテストの実行` のように、日本語で何をしているのかを必ず明記しましょう。ダッシュボードの視認性が爆発的に向上します。

② 依存関係のキャッシュを意識する(高速化の第一歩)

プロジェクトが大きくなると、`node_modules` や `vendor` のインストールに時間がかかるようになり、CIの待ち時間がストレスになります。
CircleCIには「キャッシュ機能」があり、依存関係が変わっていない場合は前回のインストール結果を使い回すことができます。慣れてきたら `restore_cache` と `save_cache` の導入にチャレンジしてみましょう。

③ 再利用可能な「Orbs(オーブ)」を知る

CircleCIには、世界中の開発者が作った設定のパーツ(テンプレート)を共有する Orbs(オーブ) という仕組みがあります。
例えば、AWSへのデプロイやSlackへの通知などは、自分で長々とYAMLを書かなくても、公式のOrbsを1行読み込むだけで実現できます。

—

5. さあ、最初の一歩を踏み出そう

ここまで読んだあなたなら、もう `config.yml` は怖くないはずです。

1. GitHubにリポジトリを作る
2. `.circleci/config.yml` を配置する
3. CircleCIにログインしてプロジェクトを「Set Up Project」する
4. コードをプッシュして、緑色のビルド成功(Success)の文字に感動する!

この快感を一度知ってしまったら、もう手動でのテストやデプロイには戻れなくなります。
自動化されたパイプラインは、あなたの開発を何倍もスピーディーで、安心できるものに変えてくれますよ。

さあ、今日からあなたのプロジェクトにも、優秀なロボット執事を迎え入れましょう!

タイトルとURLをコピーしました