MENU

CI/CDとは?どれくらい開発を効率化する?

今さらですが、CI/CDってなんだろう、と気になりました。とはいえ、がっつり掘り下げるのではなく、おさらいする感じで、以下について調べました。

  • CI/CDとは?
  • CI/CDはどれくらい開発を効率化する?
  • 理想的なCI/CDはプロジェクトに依存する?
目次

レポート

CI/CDとは?

Continuous Integration and Continuous Delivery or Deployment.の頭文字をとっています。
日本語だと「連続した統合と連続したデリバリー/デプロイ」?
ソフトウェアで言うDeliveryやDeploymentは日本語だと該当する言葉って多分ないですよね。

CIは、ローカルで行ったコードの変更をリモートブランチに高頻度 かつ 自動で統合する過程を指します。多くのチームでは、コードの品質水準を設けており、統合するコードはこれを満たしている必要があります(例, コーディング規約に則っていること、単体テストを実装していること)。高頻度でコードを統合する場合、コードの品質担保を手動で行うには手間がかかりすぎるため、自動テストや自動でのコードチェックを実装することで、コードの品質と短周期のリリースを実現します。

参照:Red Hat, What is CI/CD? 最終閲覧日:2026/11/3

Continuous Delivery/Deploymentは、CIを通過したコードを自動でリリースし、ユーザーが触ることができるようにすることを指します。例えば、Web APIをAzure Web Appにデプロイし、コード管理をGitHubで行っている場合、GitHubアクションで、コードのマージ時にデプロイするよう設定することで、自動でDeployすることができます。(私はやったことがないですが。。。)

CI/CDは、アジャイル手法のように、高頻度でユーザーからのフィードバックを得たい場合、特に恩恵を授かりやすいと思いました。

CI/CDはどの程度開発を効率化する?

1つ論文を調べました。

CIに関するレビュー論文

CIに関する101個の論文を参照し、CIの効果をまとめたものになります。概要しか読んでおらず、 かつ 手法まで読めていないのですが、結論としては以下となります。

CIに関する実証研究は近年増えている。私たちは、これまでの多くの論文で、CIがソフトウェア開発に良い影響をもたらしていることを明らかにしたこと、を発見した。しかしながら、CIはソフトウェア開発に技術的な困難ももたらしていることが分かった。全体的に、CIが良い影響を与えるという展望にも関わらず、これまでのCIの影響を測る実証研究に改善の余地があることを発見した。

拙訳 Conclusionから抜粋

※実証研究:実際の事例を対象にした研究。

基本的にはCIを整備することで、多くのプロジェクトは良くなるのですが、ある程度習熟していないと難しい部分がありますよ、という感じですかね。また、論文を詳しく読んでいないため、どの観点で効果を計測したかわからないのも抑えておくべきかと思いました。(例, テスト時/リリース後のバグ、工数)

理想的なCI/CDはプロジェクトに依存する?

ソフトウェア開発には、推奨される方法というのが多くありますが、そのどれもが、「但し、プロジェクトの状況を鑑みて適用すること」という注釈をつけます。

私個人の意見ですが、CI/CDも同様にプロジェクトの状況を鑑みて適用する必要があると考えています。
理由は、そもそもCI/CDやAgileは、ユーザーからの早期フィードバックを得ることに適したモデルで、要望抽出や要件定義の段階でそのあたりをしっかり詰められるようなプロジェクトであれば、ユーザーからの早期フィードバックは不要なためです。

また、ユーザーからのフィードバックが必要だとしても、1週間ごとなのか、1ヶ月毎なのか、独立したQAチームは存在するのか、で、適したツールやそれに合った方法が変わると考えたたためです。

まとめ

  • CI/CDは自動化されたコードの統合、リリース、デプロイの過程
  • 一般的にはプロジェクトに良い影響を与えるが、技術的な困難が発生することもある(Soares et al., 2022)
  • 各ステークホルダーの状況を鑑みた、適切な体制をとることが必要となる
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次