San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
DevSecOps

Wallarmが解説する継続的インテグレーション(CI)とは

DevOpsチームは、製品拡大とリリースのスピードが増す中、頻繁な問題に対応しなければなりません。QA環境を最適な状態に保つにはどうすればよいでしょうか。継続的インテグレーションやアジャイル開発において、テスト体制が十分に機能しているかが問われます。

後者の問いに対する答えは、多くの企業や従来のQA手法の観点からすると、十分でない可能性があります。自動化や機械学習だけではなく、探索的テストも依然として重要ですが、事業拡大と効果的なテスト運用の中で両者の組み合わせと最適化が求められます。

近年、CIは急速に普及し、ほぼすべてのアプリソフト企業で採用されています。開発者はJenkinsなどのCIサーバーに頼り、GoogleのKubernetes向けなど、オープンソースのCIツールも存在してパイプラインの自動化を実現しています。

Wallarmが解説する継続的インテグレーション(CI)とは

継続的インテグレーションとは

継続的インテグレーションは、ソフトウェア開発においてコードを中央リポジトリに定期的(できれば一日に何度も)に統合する方法を指します。この仕組みにより、自動ビルドと自動テストで各統合の安定性が確認されます。自動テストは厳密にはCIの一部ではありませんが、一般的に実施されています。頻繁な統合により、問題を早期に発見し原因を特定しやすくなるのが大きな利点です。 

多くの変更が比較的小さいため、バグの原因となった変更を追跡するのは容易です。近年、ソフトウェア開発ではCIが標準となっており、いくつかの基本原則に基づいて運用されています。ソースコードの管理、自動ビルド、テストなどがその例です。

最適な実装により、いつでもアプリを展開でき、変更があれば速やかに本番環境へ反映されます。この仕組みにより、チームは迅速に動きながらも自動チェックで高品質を維持できます。CIはバグを完全にはなくしませんが、発見と修正を容易にする点が大きなメリットです。

継続的インテグレーションの基本

CIは以下の原則に基づいて行われます。

  • ソースコードの管理
  • ビルドの自動化
  • 自己検証システムの構築
  • 全員が日々基盤に変更をコミットする
  • 基盤へのコミットメントのための確固たる基礎
  • 迅速なビルドの進行を維持すること
  • 品質確認には本番環境のレプリカを使用する
  • 出来上がった成果物へ容易にアクセスできるようにする
  • 最新のビルド成果を誰でも確認できるようにする
  • 自動デプロイの仕組み

継続的インテグレーションの重要性

CIがなければ、エンジニアリンググループは分断され、コミュニケーションが不足しがちです。これにより管理コストの増加、コードリリースの遅れ、失敗率の上昇が生じます。新たな変更の取り込みが困難になるため、リリース予定の見積もりも立てにくくなります。

継続的インテグレーションは、開発者だけでなく企業全体の透明性向上にも寄与します。この仕組みにより、チームが計画を効果的に実行するための資源が整い、全体の計画も円滑に進みます。

適切に実施されれば、CIは品質を損なうことなく予定通りのリリースを実現するための多くの目的をサポートします。複数の開発者がひとつのリポジトリに貢献するチームでは、CIは欠かせません。

以下に、CIが重要で有益な要素をいくつか挙げます。

  • CIを導入することで、コードリポジトリは常に最新の状態に保たれる
  • チームは常にメインブランチの状況を把握できる
  • メインブランチの問題は速やかに通知される
  • ビルド失敗の原因となった変更が明確になり、問題の根源が特定しやすくなる
  • 開発者が最新のメインブランチに同期する手間が省ける
  • 不具合が発生した時点で発見されるため、開発後半で突然問題が発覚することがない
  • 後工程でのバグ修正やコンフリクト解消の時間が大幅に短縮される
Continuous Integration workflow
Continuous Integration workflow

継続的インテグレーションの仕組み

ソフトウェアの全コードは、全開発者が各自のコンピューターでチェックアウトできる中央リポジトリに保存されます。変更に納得すれば、更新後のコードをリポジトリにプッシュします。その後、自動CIサーバーがビルドを行い、ユニットテストや統合テストでコードが正しく動作しているか確認します。ビルドが失敗した場合、どこでエラーが発生したかが報告され、チームが速やかに対処できるようになります。

このCIプロセスは毎日繰り返されるため、新コードが常にビルドされテストされます。DevOpsチームは、更新したソフトウェアを手動でリリースするか、システムによる自動デプロイでさらに効率化するかを選択できます。

エンジニアがコードの不具合箇所を遡る手間が省けるため、DevOpsチームは多くの時間と労力を節約できます。また、継続的なプロセスにより、古いコードでの作業や、締め切りに追われた急速なアップデートのリスクも減少します。

CIを活用すれば、開発者はコンテナや仮想マシン上でテストとビルドを並行して実施し、時間のかかる作業を自動化できます。その結果、システムが背景で動作している間に他の業務に専念でき、ビルド合格後にのみ変更が統合されるため、メインコードが壊れるリスクも低減されます。

継続的インテグレーションのメリットとデメリット

CIはリリースプロセスの効率化や生産性向上など、開発全体に多大な影響を与えます。以下にそのメリットとデメリットを簡単にまとめます。 

メリット

  • バグ修正の迅速化

コードの更新を頻繁に行い自動テストを継続することで、バグの発生が抑えられます。変更差分が小さいため、問題の原因特定が容易になり、結果的にQAがより効率的かつ効果的になります。

  • チームの信頼感を高める強固なコード

大量のコードを一度にリリースするストレスが軽減され、無数の潜在的な問題に悩まされることがなくなります。各開発者は、頻繁かつ小規模な変更のコミットで、自身の修正点と発生する問題をしっかり把握できます。

  • 反復的なアプリ開発の促進

問題の迅速な解決により、実用的なアプリの開発とリリースに割ける時間が増加します。主要な関係者は既存機能のアップデートや改善を定期的に受け取ることができ、CIの導入により貴社はより柔軟に対応できます。

  • 生産性と効率の向上

CIによりチームの効率が向上し、定期的なアップデートの計画が立てやすくなります。コードのコミットや問題の負担が軽減されることで、より迅速なソフトウェア開発が可能となり、テスト時間も短縮されます。これにより、QAよりも新機能の開発にリソースを振り向けやすくなります。

  • 全体的な自動化の推進

この手法により、テストだけでなくビルドやパイプライン管理にもCIソリューションの活用が奨励されます。結果として、コードや製品の品質が向上し、チームの柔軟性も増します。

デメリット

  • すべてのユーザーが頻繁な変化を好むわけではない

CIでは、データベースや業務プロセスの変更など、ユーザーからは見えない部分で多くの変更が行われます。機能名の変更、メニューバーの再構成、長年続いた手順の変更など、UXに影響を与える変更は必ずしも歓迎されません。UXの変化は速やかに伝え、可能であれば画面上でのヘルプを提供する必要があります。 

段階的な開発により、ヘルプデスクスタッフとエンドユーザー双方に今後の変更を周知できます。CIと継続的デリバリーを重視する環境では、サポートチームがユーザーからの問い合わせや苦情に迅速に対応する準備が求められます。ヘルプデスクを継続的インテグレーションのパイプラインに組み込み、リリース前にスタッフからのフィードバックを得る工夫が必要です。

  • マイクロサービスの変更が波及する

CIや継続的デプロイが標準となっているマイクロサービス環境では、1つの変更が複数のサービスに大きく影響する場合があります。ある変更が1つのサービスを改善しても、別のサービス群に悪影響を及ぼす可能性があります。オーケストレーションと構成管理により、1つのマイクロサービスへの変更が他に波及しないように調整され、万一の際には対処しやすくなります。

  • 変更には監視と報告が必要

CI/CDの変更は、実装先プラットフォームにも影響します。即時の監視と報告により、問題を迅速に把握し修正できます。不具合が発生した場合、問題が拡大しヘルプデスクに問い合わせが殺到する前に直ちに把握する必要があります。

  • リソース管理は柔軟でなければならない

十分なテストが行われないと、CI導入時のリソースやパフォーマンスへの影響が顕在化するまで気づかない恐れがあります。レシピやマニフェストを活用してワークロードの準備・配置を可能な限り自動化する必要があります。オーケストレーション技術は、ITプラットフォームの継続的な監視と、自動的な対策(コンピュートやメモリの追加、処理の制御、マイクロサービスやアプリの再配置、起動・停止、または手動介入のフラグ付け)を支援します。

CI と継続的デプロイ、そして継続的デリバリーの違い

自動リリースパイプラインには常にこの3つの段階が含まれます。ソフトウェアが最初から最終段階へ進む過程は、これら3つのプロセスの共同の責任です。

CI と継続的デプロイ、そして継続的デリバリー

Continuous IntegrationContinuous DeploymentContinuous Delivery
Continuous Integration (CI) is a software development strategy that is used in DevOps. This practice allows developers to integrate their code changes into a common repository so that automated builds and tests can be executed on the code.Continuous Delivery (CI) is a practice within DevOps that refers to the process of developing, testing, and delivering enhancements to the software code. The fact that the code is always in a state that may be deployed is the component of the CD that is considered to be the most essential.Continuous Deployment, abbreviated as "CD," is the final stage in the pipeline, and it refers to the process of automatically releasing any changes made by developers from the repository to the production environment.

Continuous Integration and Delivery
Continuous Integration and Delivery

ベストプラクティス

継続的インテグレーションの利点と、プラットフォームエンジニアリングチームにもたらす恩恵を理解することは重要です。同時に、統合テスト、テストスイート、主要な指標、依存関係、チュートリアルなどの適切なベストプラクティスを学ぶことも大切です。以下に、その一部を詳しく見ていきます。

  • テストを通じた開発

自動テストを組み込んだCIパイプラインが整ったら、テスト範囲の拡大と改善が不可欠です。継続的インテグレーションのコードが正しく機能しているか、テストで確認する時期となります。

テスト駆動開発(TDD)の一環として、実装前にテストケースが作成されます。TDDでは、開発者とプロダクトマネージャーが必要事項や仕様について話し合い、その内容を基にコードのチェックリストが作られます。

  • ロボティックプロセス自動化の導入

テストとビルドの自動化は大幅な時間節約になります。現在、自動ビルド環境は開発プロセスの標準的な一部です。JavaのAnt、UnixのMake、GitHub、Docker Hubなどを利用して環境を構築できます。ソースを実行可能なシステムに変換する作業は複雑なため、可能な限り自動化することが望ましいです。

  • プルリクエストとコードレビュー

プログラマーがメインリポジトリに新たなコードを追加する際、プルリクエストを送信します。これにより、同僚に新しい変更が反映可能であることが通知され、あらかじめ決められた承認手続きが自動的に実行されます。さらに、手動のコードレビューも行われ、コードの品質と有用性がより正確に評価されます。

コードレビューとプルリクエストは、エンジニア間の知見共有を促進します。

  • パイプライン速度の向上

CIパイプラインの実行速度は常に最適化する必要があります。高速なパイプラインにより、プロジェクトのフィードバックサイクルが早まり、開発者は容易に更新を提出し新たなアイデアを試すことができます。その結果、欠陥の修正も発見直後に迅速に実施されます。

パイプラインの処理速度向上は、競合に対する優位性獲得と、顧客へのより良い体験提供に直結します。

継続的インテグレーションツール

継続的インテグレーションツールは、コードの統合、ビルド、テストを効率化するソフトウェアです。他のDevOpsツールと同様、コードのコミットによって起動され、バージョン管理システムやコードリポジトリと連携します。

  • Bitbucket Pipelines

Bitbucket Pipelinesは、Atlassianが開発したCIソリューションで、Bitbucketのクラウド版バージョン管理プラットフォームに組み込まれています。プロジェクトが既にBitbucket上にホストされている場合、Bitbucket Pipelinesを使ったCIの導入は簡単な次のステップとなります。パイプラインはコードとして扱われ、定義の共有やビルドの開始が迅速に行えます。また、継続的デリバリーも利用可能で、プロジェクトを本番環境へ展開することもできます。

  • CircleCI

CircleCIは、Githubとシームレスに連携するCIツールです。多様なVCS、コンテナ、デリバリー手法に対応できるため非常に柔軟で、ローカルでもクラウドでも実行可能です。

  • Gitlab

最新のCIツールの一つであるGitlabは、包括的なDevOps環境を提供します。Githubの更なる向上を目指して誕生し、先進的なUIとコンテナサポートを備えています。

継続的インテグレーションの始め方

バージョン管理システム(VCS)はCIの基盤です。CI対象のコードベースにVCSがない場合は、まず導入してください。その後、ホスティングプラットフォームを選びます。現代の多くのVCSホストはCIをサポートしており、Bitbucket、Github、Gitlabが代表的です。

バージョン管理の導入後、承認ステージを組み込みます。自動統合テストは非常に重要であり、自動テストには追加コストがかかるものの、開発者はテストコードやテストケースの作成を行います。CIはエンジニアリングのみならず、マーケティング、セールス、プロダクトチームにも役立ちます。

結論

継続的インテグレーションを貴社に合った形で活用するには、環境やチームに合わせて柔軟かつ現実的に進める必要があります。CIが初めての場合は、経験豊富なチームの意見を参考にするのも有用です。

FAQ

参考資料

最新情報を購読

更新日:
April 6, 2025
学習目標
最新情報を購読
購読
関連トピック