2022年8月18日
Continuous Integration
継続的インテグレーションは、開発者のエクスペリエンス や開発者の生産性を向上させるなど、多くのメリットを誇ります。詳しくはこちら。

Forrester 社のアナリストである Chris Condo 氏によれば,「金融サービスのようなリスクを嫌う業種であっても,すべての組織がソフトウェアをより速く提供する必要性を感じている」そうです.
この言葉は実に的を射ていると思います。大きな絵に論理を加えてみましょう。どの企業も、自分たちがやっていることで一番になろうと努力するものです。そして、より優れた(あるいは最高の)ソフトウェア企業になるためには、CIを実施する必要があります。
「でも、なぜ?」と聞かれるかもしれません。そし て私はこう答えるでしょう。「信頼できるソフトウェアをより速く提供できるからです。すると、次のような反論が返ってくるかもしれません。「規制市場や高度なコンプライアンスの枠組みを持つ企業は、そう思わないかもしれません。規制された市場や高いコンプライアンスに対応しなければならない企業は、トラブルに巻き込まれる前に慎重に計画を立て、納品するべきだと考えているのです」。そして私は、「また間違っている!」と答えるでしょう。
だから、クリス・コンドウは、「金融サービスのようなリスクを嫌う業界の人たちも」という注意書きを付け加えたのだろう。なぜなら、現実の世界とは異なり、ソフトウェアの世界では、スピードはセキュリティと品質を意味し、遅さはビジネスを殺すからです。すべてのソフトウェア会社の最終目標は、開発者が反復可能で検証可能なプロセスを確保し、高速かつ軽量に実行することによって、迅速に行動することです。これにより、新しい変更の統合が負担ではなく、むしろ歓迎される風となることを保証します。モダンCIはそれを担っている。
この記事では、なぜCIが重要なのか、そしてなぜCIがソフトウェアを効率的に提供する企業にとって大きな価値をもたらすのかについて掘り下げていきます。しかしその前に、CIが初めての方は、「Continuous Integrationとは何か」ブログをお読みください。このブログでは、継続的インテグレーションの長所と短所についても触れています。

非常に高いレベルで、CIの利点は、開発者の生産性、短いフィードバックループ、およびCD(現代のソフトウェア開発の聖杯)への最初の確実なステップと簡潔に説明することができます。
自動化は、最新のCIツールおよびプロセスが提供する最も直接的なメリットと考えられている。開発者に、ソフトウェアコード が簡単に実行できる、堅実で、再現可能で、検証可能なプロセスを提供することによって、彼らの焦点は、彼らが得意とするコードベースへの付加価値から離れることはないのである。最新のCIツールは、ポリシーをすべてのパイプラインに簡単に拡張し、コンプライアンスとセキュリティを確保することで、これらの利点を提供します。そして、開発者はセルフサービスで、エフェメラルでクラウドネイティブなプラットフォーム上で実行することができ、あらゆるキャパシティ要件をカバーするために弾力的に拡張することができます。基本的に、モダンCIは、信頼性と拡張性の高いビルド自動化プロセスを提供し、開発者の生産性を驚異的に向上させます。モダンCIが導入されると、開発者は定期的にマージを行います。
しかし、CIは一方通行のメカニズムではありません。最近のCIは、ビルド時に、統合される新しいコードが安全で、コンプライアンスに適合し、実際に問題を解決しているかどうかを検証するためにテストを実行する。ビルド時にこれを行うことは、品質向上の基本である。実行時のバグフィックス、ネガティブな結果、手動タスクは、本番環境でエラーが発生したときに、常に解決が厳しくなります。 (もしもの時はHarnessでカバーしますので、ご安心ください)。このようなフィードバックの仕組みは、開発者の信頼を得るために非常に重要であり、頻繁にテストを行うことは、すべてのビルドを重要視する唯一の方法です。
問題は、通常、テストスイートが管理できなくなったときに発生します。パイプラインはよりもろくなり、テストは不安定になり、テストスイート全体が毎回実行するモンスターとなる。最新のCIツールは、より失敗しやすいテストを最初に実行することで、自動ビルドにおけるテストを効率的なプロセスにすることができる。これは開発者に即時のフィードバックを提供し、障害切り分けや、最終的には手動テストへのフォールバックに関わるステップを減らすことができる。さらに、CIパイプラインは効率的にテストを行うべきである。すなわち、変更されたテストのみを実行し、変更されたコードに対してのみテストを実行する。一言で言えば、最新のCIツールはテストスイートをインテリジェントに実行する。
継続的インテグレーションと継続的デリバリーは密接に関係しているというのが、最新のCIツールを使ってすぐに実感できることだ。自動的にビルドされ、自動的にデリバリーされるソフトウェアは、より優れたソフトウェアである。自動テストを含むビルドステージは、開発者だけでなく、プロダクトマネージャやデザイナーなど、ソフトウェアリリースプロセスに深く関わるすべての人に利益をもたらす、すべてのソフトウェアプロジェクトの基本的な部分となるのです。継続的デリバリーは、継続的インテグレーションによってよ りよく実現されます。
より広いレベルでは、最新のCIは会社全体に予期せぬ利益をもたらす。私は、変化とソフトウェア開発のベストプラクティス採用の原動力としての、DevOpsにおけるCIの性質について話しているのです。CIがハードルでなくテコになれば、開発者は自信を持ってより速く、より頻繁に、高品質のコードを提供できるようになります。また、DevOpsエンジニアにとっても、開発プロセスのメンテナンスではなく、他の分野に集中できるメリットがあります。
しかし、CIユーザーとして最初に「ハッ」としたのは、最新のCIが持つ圧倒的なアウトプットでした。開発プロセス、少なくともビルドプロセスに含まれる部分は、電光石火の速さである。コードの変更から自動テストまで、最新のCIツールは開発チームに新たなアウトプットのレベルを提供する力を与えてくれる。CIを利用するエンドユーザーである開発者が最初に驚くのは、その能力である。時間が経つにつれて、継続的インテグレーションの利点はますます明白になっていきます。