CI/CDツールの機能の全体像
CI/CDツールの機能を比較する前に、全体の流れを押さえておくと、自社に必要な機能を判断しやすくなります。ここでは、CIとCDの役割の違いと、各機能をつなぐパイプラインの仕組みを紹介します。主な機能は下の一覧のとおりです。
- ■自動ビルド
- コードの変更をきっかけに、プログラムを動かせる形にまとめる機能
- ■自動テスト
- ビルドしたプログラムが想定どおり動くかを自動で確認する機能
- ■自動デプロイ
- テストを通過した成果物をサーバーなどに配置する機能
- ■並列実行
- 複数の処理を同時に進め、全体の処理時間を短くする機能
- ■通知・可視化
- 実行結果を関係者に知らせ、状況を画面で確認できるようにする機能
CIとCDの役割の違い
CIは継続的インテグレーションの略で、開発者が書いたコードを頻繁に統合し、そのたびにビルドとテストを自動で行う考え方です。不具合を早い段階で見つけ、修正の手間を小さくすることを目指します。
CDは継続的デリバリー、または継続的デプロイメントの略です。テストを通過したプログラムを、いつでも本番に反映できる状態に保つ、あるいは自動で反映する取り組みを指します。CI/CDツールは、この2つを一連の流れとして自動化するための製品です。
パイプラインで機能をつなぐ仕組み
CI/CDツールでは、ビルドやテスト、デプロイといった処理の順番をパイプラインとして定義します。各処理はジョブやステップと呼ばれ、前の処理が成功したら次へ進むという流れで実行されるのが基本です。
パイプラインの定義方法は製品によって異なり、YAMLと呼ばれる形式の設定ファイルに書く方法や、画面上で処理を組み立てる方法があります。設定をファイルで管理できると、変更の履歴が残り、チームでの見直しも進めやすくなります。
ビルドとテストを自動化するCI/CDの機能
CIの中心となるのが、自動ビルドと自動テストの機能です。開発者がコードを登録するたびに確認が走るため、問題の発見が早くなることが期待できます。比較の際は、処理の起動条件や対応する実行環境の違いに注目しましょう。
コード変更をきっかけにした自動ビルド
自動ビルドは、プログラムを動かせる形に自動でまとめる機能です。GitHubやGitLabなどのリポジトリ(ソースコードの保管場所)にコードが登録されたことをきっかけに動きます。手作業でのビルドと異なり、毎回同じ手順で処理されるため、作業者による違いが出にくくなります。
比較の際は、どのような操作をきっかけにビルドを始められるかを確認しましょう。コードの登録時だけでなく、決まった時刻に実行する予約実行や、画面からの手動実行に対応しているかも、運用のしやすさに関わります。
自動テストの実行と結果の表示
自動テストは、ビルドしたプログラムに対して、あらかじめ用意したテストを自動で実行する機能です。CI/CDツールはテストを実行する場と結果をまとめる仕組みを提供し、テストの中身は開発チームが用意します。
テストに強いかどうかを比べる際は、失敗したテストの一覧や原因の箇所を画面で確認できるか、過去の結果と比較できるかに注目しましょう。テスト結果を一定の形式で取り込み、グラフで表示できる製品もあります。
ビルドとテストを動かす実行環境
ビルドやテストは、ランナーやエージェントと呼ばれる実行環境で処理されます。提供会社が用意したクラウド上の環境を使う方法と、自社のサーバーを実行環境として登録する方法があり、対応状況は製品によって異なります。
使用するOSやプログラミング言語、必要なメモリの量によって、選ぶべき実行環境は変わります。特殊な開発ツールを使う場合や、社内ネットワーク内のシステムに接続してテストする場合は、自社の実行環境を使えるかを確認しておきましょう。
デプロイとリリースを管理するCI/CDの機能
テストを通過したプログラムを本番環境へ届けるのが、CDにあたるデプロイとリリース管理の機能です。自動化で作業を速くするだけでなく、本番への反映を安全に進める仕組みがあるかが比較のポイントです。2つの機能を紹介します。
環境ごとの自動デプロイ
自動デプロイは、テストを通過した成果物を、開発環境や検証環境、本番環境などの配置先へ自動で反映する機能です。環境ごとに設定値を切り替えられれば、同じパイプラインで複数の環境を扱えます。
製品を選ぶときは、自社のデプロイ先に対応しているかを確認しましょう。クラウドサービスやコンテナ基盤(アプリと動作環境をまとめて動かす仕組み)、オンプレミスのサーバーなど、配置先によって必要な連携方法が異なります。デプロイに失敗した場合に、以前のバージョンへ戻す手順を組めるかも重要なポイントです。
承認フロー付きのリリース
承認フローは、本番環境へ反映する前に、責任者が内容を確認して承認するまで処理を止めておく機能です。自動化を進めながらも、本番への反映には人の判断を挟みたい場合に役立ちます。
製品によって、承認者を複数指定できるか、承認の期限を設定できるか、承認の記録をどこまで残せるかが異なります。監査対応が必要な企業では、承認の履歴を後から確認・出力できるかも比べておきましょう。承認者が不在の場合の代理設定も、運用を止めないための確認項目です。
ITトレンドでは、最新の製品・サービスを多数比較・掲載しています。まず資料請求して、さまざまな製品の機能や特徴を比較してみてください。忙しい業務時間内でも、各社に問い合わせる手間なく、たった1回の入力(約60秒)でCI/CDツールの一括資料請求が可能です。浮いた時間で、じっくりと製品を比較検討し進めましょう。
並列実行で処理時間を短くするCI/CDの機能
テストの数が増えたり、複数の環境向けにビルドしたりすると、パイプライン全体の処理時間が長くなる場合があります。並列実行は、こうした待ち時間を短くするための機能です。仕組みと、比較時に確認したい上限や費用の考え方を解説します。
ジョブの並列実行の仕組み
並列実行とは、互いに依存しない複数のジョブを同時に動かす機能です。例えば、画面のテストとデータ処理のテストを別々の実行環境で同時に進めれば、順番に実行するより全体の時間を短くできる可能性があります。
大量のテストを複数のグループに分けて同時に実行し、処理時間を短縮する機能を持つ製品もあります。ただし、ジョブ同士が同じデータベースやファイルを使う場合は、処理が干渉しないよう設計する必要があります。
マトリクスビルドとキャッシュ
マトリクスビルドは、複数のOSやプログラミング言語のバージョンの組み合わせを一度に指定し、それぞれのビルドやテストを並列に実行する機能です。複数の環境で動作を確認したい場合に、設定の手間を減らせます。
キャッシュは、前回のビルドで使ったライブラリ(共通で使うプログラムの部品)などを保存して再利用し、処理を短縮する機能です。並列実行と組み合わせると、待ち時間をさらに減らせる場合があります。キャッシュの保存容量や有効期限は製品ごとに確認しましょう。
並列実行の上限と費用の関係
同時に動かせるジョブの数は、プランごとに上限が決められている場合があります。上限を超えたジョブは順番待ちとなるため、開発者が多い企業では待ち時間が発生することがあります。
上限を引き上げるには、上位プランへの変更や追加料金が必要な製品があります。自社の実行環境を追加して並列数を増やせる製品もあるため、クラウドの実行環境と自社環境を組み合わせた場合の費用も比較しましょう。繁忙期だけ並列数を増やせるかどうかも、確認しておくと安心です。
CI/CDのビルド結果を通知・可視化する機能
CI/CDツールの効果を高めるには、実行結果を関係者がすぐに把握できることが大切です。失敗に気づくのが遅れると、修正までの時間が長くなります。通知と可視化の2つの機能について、比較のポイントを紹介します。
チャットやメールへの通知
ビルドやデプロイの成功・失敗を、メールやSlack、Microsoft Teamsなどのチャットツールに通知できる製品があります。失敗したときだけ通知する、特定のチャンネルに送るといった細かな設定ができるかを確認しましょう。
通知が多すぎると、重要な失敗を見落とす原因になる場合があります。通知の条件や送り先をパイプラインごとに設定できるかも比較のポイントです。標準の連携機能がない場合でも、Webhook(特定の出来事を外部へ自動で知らせる仕組み)を使って通知を送れる製品があります。
ダッシュボードとレポート
ダッシュボードは、パイプラインの実行状況や成功率、処理時間の推移などを一覧で表示する画面です。どのパイプラインで失敗が続いているか、処理時間が延びていないかを把握する手がかりとして役立ちます。
表示できる指標や期間、チームごとに表示を切り替えられるかは製品によって異なります。経営層や他部門に報告する場合は、レポートを出力できるか、外部の分析ツールにデータを渡せるかも確認しておくとよいでしょう。
自動化機能の範囲で比較したいCI/CDツール
ビルドからデプロイ、通知までの機能を比べる際の候補として、CI/CDツールを紹介します。並列実行や承認フローの対応範囲は製品によって異なるため、資料で確かめましょう。
CircleCI (CircleCI)
- コード変更ごとに自動テストで品質を検証
- クラウド・サーバー版で多様な開発環境に対応。
- ワークフローとキャッシュでパイプラインを高速化。
Travis CI (Travis CI GmbH)
- CI/CDパイプラインの短時間構築
- 並列処理や多環境ビルドに対応
- GitHub等と連携し、コード変更時にビルドとテストを自動実行
GitHubActions (ギットハブ・ジャパン合同会社)
- 豊富な公式・コミュニティ製アクションで簡単に自動化
- YAMLファイルでワークフローをコードとして管理
- GitHub連携で開発プロセスを自動化
Jenkins (CloudBees, Inc.)
- ビルドとテストを自動化し継続的に変更検証。
- パイプライン定義で標準化CI/CDフロー構築。
- 豊富なプラグインで多様なツールや環境と連携可能。
AWSCodePipeline (アマゾンウェブサービスジャパン合同会社)
- リリースプロセスのステージ定義と合理化
- 新機能を迅速にリリースし、フィードバックを繰り返し反映
- ニーズに合わせて独自のプラグインを使用
OctopusDeploy (Octopus Deploy)
- 多様な技術・プラットフォームに対応
- 自動デプロイ、リリース管理、環境設定、セキュリティ制御機能
- 数千組織の利用で、ソフトウェアデリバリーパイプラインを効率化
BitbucketPipelines (アトラシアン株式会社)
- 100超のテンプレートとワークフローを提供。
- クラウドでスケール、CI/CDを組織全体で一元管理。
- 設定とログ監視でデプロイ状況を可視化し迅速対応
AWS CodeBuild (アマゾン ウェブ サービス ジャパン合同会社)
- 自動スケーリングで無駄なくビルドを実行
- 使用した時間に対する分単位の従量課金制
- 独自のキーによる暗号化で情報を保護
まとめ
CI/CDツールの主な機能は、自動ビルド、自動テスト、自動デプロイをパイプラインでつなぐことです。製品ごとの違いは、実行環境の選択肢や承認フローの細かさ、並列実行の上限、通知と可視化の設定範囲に表れます。自社に必要な機能を一覧にし、どのプランで使えるかを確認しながら比較しましょう。機能を比べながらCI/CDツールを選びたい方は、ITトレンドの資料請求を活用してください。

