開閉ボタン
ユーザーメニュー
ユーザーメニューコンテンツ
ログイン

  • 2022/03/01

CI/CDとは何かをわかりやすく図解、具体的なツールや取り組み方とともに紹介する

デジタルトランスフォーメーション(DX)を推進する中で、最も具体的な取り組みがアプリケーション開発だろう。先駆けとなったUberやAirbnbなどではアプリケーションそのものが「革新」だからだ。こうしたDXアプリケーションの特徴の1つがアジャイル開発によるものであることだ。そして、それを実現する手段として開発と運用を一体として考えるDevOpsが普及。そこからさらにそのためのツールとして、CI/CD(継続的インテグレーション/継続的デリバリー)が注目を集めている。ここでは、自動化の考え方を取り入れて、リリース頻度を高めるCI/CDについて、基礎から主要ツール、活用事例まで、わかりやすく解説する。

執筆:友永 慎哉

執筆:友永 慎哉

製造業向け基幹系システムの開発を経験後、企業ITの編集、ライター業に従事。ファイナンス、サプライチェーンなど、企業経営の知識を軸にした執筆に強みを持つ。インダストリー4.0など新たな技術による製造業の世界的な変革や、Systems of Records(SoR)からSystems of Engagement(SoE)への移行、情報システムのクラウドシフトなどに注目する。GAFAなど巨大IT企業が金融、流通小売り、サービスといった既存の枠組みを塗り替えるなど、テクノロジーが主導する産業の変化について情報を収集・発信している。

photo
CI/CD パイプラインのイメージ(あとで詳しく解説します)

CI/CDとは何か

 CI/CDとは「Continuous Integration(継続的インテグレーション)/ Continuous Delivery(継続的デリバリー)」の略称。CI/CDは、何か特定の技術を指すものではなく、ソフトウェアの変更を常にテストし、自動で本番環境に適用できるような状態にしておく開発手法のことをいう。CIとCDそれぞれについて見ていこう。

・CI
 CIとは継続的インテグレーションという名の通り、開発者にとっては自動化のプロセスを指す。

 アプリケーション開発で言えば、バラバラに稼働している複数エンジニアのソースコードを継続的に統合(インテグレーション)し、正常に動作することを確認するために検証する取り組みのことである。

 新たなソースコードの変更を、定期的に、あるいは毎日でもビルドおよびテストし、共通のリポジトリに統合する。

 CIは、アプリケーションに問題がないかを調べるために、クラスや各種のモジュールなど構成するすべての要素に対して実施するテストを自動化できる。そのため、プログラムの不具合をより早く見つけ、すぐに修復できるのである。

 なお、CIを用いない場合は、通常、手作業で実施しなくてはならないとされる。

・CD
 CDとは継続的デリバリーという名の通り、ユーザーに継続的にアプリケーションを提供することを指す。提供とはすなわち、本番環境にアプリケーションを載せ、顧客がいつでも新たなアプリケーションを利用できるようにすることである。

 CDでは、検証済みコードのリポジトリへのリリースを自動化する。コード変更のマージから本番環境に対応するためのビルドのデリバリーまで、すべての段階でテストとコードリリースを自動化する。これにより、運用チームは本番環境にアプリケーションをすぐにデプロイできる。

photo
CI/CDとはDevOpsを実現するツールでもある

なぜCI/CDが必要なのか?背景にあるアジャイル型開発へのシフト

 では、なぜCI/CDが必要なのか。ビジネス環境は常に変化しており、それに合わせてアプリケーションには変更、差し替え、新規作成、あるいは削除など変化が求められることが背景にある。

 従来、多くの企業が、ウォーターフォールモデルでアプリケーションを開発してきた。これは要件定義、基本設計、詳細設計、テストといった開発工程を、滝のように上から下へと一方向に流すものである。

 検収やスケジュール、計画、工数見積もりなどがしやすいなどの利点があり、金融業界など品質を重視する現場で採用されてきた。

 だが、ウォーターフォールモデルには、要件を固めて工程を進めるため、途中での変更が難しいという欠点がある。ビジネス面やシステム面などの事情で仕様変更が発生した場合、大きな手戻りが発生してしまう。

 一方で、DXとはいわば、“ビジネスを革新する何か”を模索する取り組みと言っていい。そのため、開発するアプリケーションの仕様が明確になっていないケースがあったり、開発を進めながら明らかにしていくことがあったりするため、要件を事前に漏れなく定義することが難しい。

 そこで、アジャイル開発、DevOps、そしてCI/CDという新たな開発手法が採用されるようになったのである。

 競合他社の動きなどに合わせて、すばやくアプリケーションを開発し、統合、デリバリーすることにより、市場が求めるニーズを満たすアプリケーションを維持し、競争力を保つことになる。

CI/CDへの取り組みの全体像

 CI/CDの実践のために必要なステップを自動化したものを「CI/CD パイプライン」と呼ぶ(以下図)。

画像
CI/CD パイプラインのイメージ
(出典:NRI digitalの資料を参考に筆者が作成)

CI/CD関連ツール13選

 CI/CDパイプラインを構成するために、さまざまなツールが存在している。以前から広く活用されているオープンソースソフトウエアのCIツール「Jenkins」やソースコードなどの成果物を管理する「GitHub」などもその1つだ。

 以下の表では、主なツールを機能別に紹介する。

種類 機能 主なツール
CIツール コードに変更があると、ビルドやテストを実行するため各種ツールにコードを連携する Jenkins
Travis CI
AWS CodeBuild
GCP Cloud Build
CircleCI
Wercker
Codeship
ソースコードリポジトリ ソースコードなどの成果物を管理 GitHub
Git
Subversion
構成管理 システム基盤の構築を自動化など Ansible
Puppet
Chef
ビルド ビルドの処理を自動実行 Ant
Gradle
Maven
テスト 操作、負荷などのテスト UFT One
TestComplete
Silk Test

マイクロサービス化とCI/CD

画像

 ここまで見てきたように、企業に求められるDXに対して、ウォーターフォールモデルの限界が露呈、そこで解決策としてのCI/CDへの期待が高まってきていることが分かる。

 ただし、この動きは以前からあった。2000年代前半から半ばにかけて登場したSOA(サービス指向アーキテクチャー)がその1つだ。

 そのSOAの進化形として、いま注目を集めているアプリケーション開発手法がマイクロサービスアーキテクチャーである。

 マイクロサービスでは、アプリケーションの機能を複数の「サービス」として切り分けて、部品のように使えるようにしている。サービス間をAPIで連携させ、ネットワーク上で通信しながら1つのアプリケーションを構築する。

 米タクシー業界にゲームチェンジを起こしたUberは、GPSやクレジットカード、地図などのサービスをAPIで「手軽に」組み合わせ、影響力の大きなビジネスを作り上げた事例として語られることが多い。

 身の回りでも、各金融機関が公開しているAPIを活用することで、自分が持つ複数の銀行口座の内容を参照できるアプリなど、多様な連携で付加価値を届けるサービスは探すとすぐに見つかる。

 こうしたダイナミックな変化に対応できるアプリケーション開発を支えるうえでCI/CDは必要なのである。

コンテナへの期待とそれを支えるCI/CD

 マイクロサービスを実装するインフラとして、仮想マシンや、仮想マシンの1つの形態とも言われるコンテナがある。

 特に、コンテナは、動作の軽さなどの面でマイクロサービス開発とデプロイの手段として優位性を持っているため、次世代のアプリケーションを管理する手法として最有力と言われている状況だ。

 コンテナを開発、配置、実行する場合の具体的なソリューションとして、よく知られているのがOSS(オープンソースソフトウェア)のDockerである。Dockerにより、DXを想定したアプリケーションをすばやく構築する動きが今後広がっていくと予想されている。そして、コンテナによるアプリケーション開発でも、CI/CDの開発手法を最大限に用いることが求められるのである。

DXアプリケーションをさらに進化させる連携ツールも

 さらに、テクノロジーは進化を続けている。Dockerなどで構築したDX向けアプリケーションを、既存の基幹システムと統合できるシステムが登場している。

 たとえば、VMwareは、コンテナ化されたワークロードやサービスを管理するOSSであるKubernetesの新たな提供形態として「Tanzu」をリリースした。

 最大の特徴は、企業が長年かけて構築してきた仮想マシンと、新たなアプリケーションであるコンテナを一元管理できることである。これにより、歴史ある仮想マシンベースのシステムとコンテナベースのアプリケーションが共存するハイブリッド環境を、共通した仕組みで管理できるようになる。

 結果として、新たな「DXアプリケーション」を単独で使うだけでなく、ERPなどの基幹システムに保有している過去の取引データや顧客に関連するデータを交えて考えられるようになるため、DXアプリケーションの品質を高められる。

 システムインテグレーション最大手のNTTデータは、自社にKubernetesを採用し、コンテナの効果を検証している。そこから得た成果を、顧客企業へのDX支援の新たな提案とする考えだ。この取り組みをグローバルで推進するとしている。

 DXの要請という新たな要因に対応するために、アプリケーション開発は既存の基幹システムとコンテナベースのマイクロサービスなどの新しいアプリケーションの連携を含めた新たな局面を迎えている。

 その中で、すばやくアプリケーションをリリースしていくという命題を満たすために、アジャイル開発とDevOpsの重要性は増し、それを実現するためのCI/CDの利用拡大が継続的に見込まれる状況なのである。

開発総論 ジャンルのセミナー

開発総論 ジャンルのトピックス

開発総論 ジャンルのIT導入支援情報

PR

ビジネス+IT 会員登録で、会員限定コンテンツやメルマガを購読可能、スペシャルセミナーにもご招待!