どうも〜、小トロです。
今回は技術的な話をしていこうかと思います。
注目するのはアジャイル開発の取り組みの1つである「CI/CD」について!
はじめに
この記事は、アジャイル開発でよく使われるCI/CDについて、まだよくわからないという方を対象に書いています。
この記事が絶対というわけではないですが、ある程度CI/CDについて勘違いをしてもらいたくないので、できるだけ説明していこうと思います。
そもそもCI/CDって何?
アジャイル開発やDevOpsをやっている方には馴染みがあると思いますが、一言で言うと「CI/CDは、システム全体で不具合がないかを常に確認し、常にデリバリー・リリースができるようにソフトウェアを構築するソフトウェア開発分野の1つ」のことを言います。
何を言っているのかを、細かく分けて説明します。
システム全体で不具合がないかを常に確認とは?
結論を言うと、自分が作ったテストのみをパスさせるのではなく、みんなが作った単体テストや結合テストを常に実行してリグレッションテストをすることになります。
何かシステムを設計・実装していく中で、アジャイル開発だと常に早いサイクルで実装とテスト、リリースを繰り返します。
そのサイクルを技術的負債なく維持するには、常にテストをしてプログラムが動いていること、自分の実装に間違いがあるかないかを見える化することが重要になってきます。
それをどうやって実現するかという話になって、テストを自動化する、テストの結果は自動的にメールに通知させると言った取り組みが盛んになっているというわけです。
CIという単語を聞いて、「あ、自動化でしょ?知ってる、知ってる。」というのは、本来のCIの説明やあり方としては間違っています。
自動化は手段なので、自動化を行った上でCIができているかはしっかりと見極めないといけません。
言い忘れていましたが、CIとは「継続的インテグレーション(Continuous Integration)」のイニシャルをとってこう呼ばれています。
常にデリバリー・リリースができるとは?
これはそのままの意味ですね。少し細かくすると「定期的にできるだけ早く、システムを動く状態でデリバリー・リリースさせる」ということになります。
(デリバリー・リリースの言葉は、本番だけではなく開発中の資産をデプロイすることも含んでいますが、本来は本番環境のみらしいです。)
そして、CDとは「継続的デリバリー(Continuous Delivery)」のイニシャルをとってこう呼ばれていますが、そもそもCDの話は、アジャイルソフトウェア開発宣言にも載っている、「包括的なドキュメントよりも動くソフトウェア」を実現させるために必要なことです。
動くソフトウェアを常にデリバリー・リリースすることができれば、開発者やその周りにいるチームメンバーは安心して次の設計・実装に移ることができ、ユーザからは新しいフィードバックももらえるのです。
CDはとてもイメージがつきやすいですね。
CI/CDができればどうなる?
システム全体で起こるバグはなくなり、機能を実装するたびにテストを増えることになるので、CIの質が向上しバグの発生も結果的に下がります。
大きな変更を加える際であっても、影響が起こるテストを対象に修正範囲が見えてくるので設計や実装方法の整理にも役に立ちます。
またCDができれば、システムをリリースする構成管理担当者(ライブラリアン)は必要なくなり、毎回のリリースに労力をかける必要もなくなります。
ただ、CI/CDの環境を作るには、それ相応の労力が必要です。
その労力は価値あるものだと理解できれば、あなたはCI/CDの理解者といっても過言ではありません。
具体的にCI/CDの環境はどう作るのか?
基本的には専用のツールやサービスの機能を使ってCI/CDの環境を作っていきます。
使うツールとして、有名どころを書きまとめます。
知っているものや名前を聞いたことがあるものが多少あるかと思います。
- AWS
- Code Build ※CIの部分
- Code Deploy ※CDの部分
- Azure
- AzureDevOps
- GCP
- Cloud Build
- Jenkins
- GitLab CI
- Concourse CI
- Travis CI
各ツールの使い方や特徴、構築の仕方は暇なときに書こうかと思います。
まとめ
いかがだったでしょうか?
まだ、言葉では説明しきれないようなことはたくさんあります。
ですが、何よりも重要なことは実際に自分でやってみること、近くに詳しそうな人がいるならその人から話を聞いてみる、など積極的に行動していくことが理解への近道です。
世間ではアジャイルをやれCI/CDをやれと叫ばれていますが、まずはそれって何だっけというところから理解して行かないと、間違った方向に行ってしまいます。
私も完璧ではないかもしれませんが、大体のことは実際にやったり、人から聴いたりして学んできました。
なのでまずは、本を読んでみる、研修に行ってみるでも良いので、自分から何かをやってみるのはどうでしょうか?
長々と失礼しました!
【関連記事】