CI(Continuous Integration、以下CI)とは、継続的インテグレーションのことです。Integrationは統合という意味で、継続的に統合・結合を行うことをCIと呼びます。
継続的インテグレーションは開発者のコード変更を中央サーバー(共有リポジトリなど)に定期的にマージし、その度に自動化されたビルドとテストを実行するソフトウェア開発手法です。アジャイル開発などでよく用いられます。
CIの重要性
CI以前は開発者が長期間にわたって独立して作業を行い、完成した後に変更点をマスターブランチへ一度にマージするという開発手法でした。このような開発手法では蓄積したコード変更をマージする作業はコンフリクト(コードの競合)が起きやすく、解消に相当な労力が必要でした。バグが発生した場合も複数の変更点が混在するため影響が広範囲に及び、原因究明までに膨大な時間がかかるとともに膨大な数のコードを精査しなければなりませんでした。
CIを使用した開発手法はこれらの問題点を解消します。リポジトリにコミットを行うだけでバグなどの問題点が発見され、開発者にフィードバックされます。開発者はフィードバックを基に問題点を修正し、再度コミットを行えば迅速に問題解決が行えます。
CIの仕組み
- 開発者はGitなどのバージョン管理システムを使い、作成したコードの追加や変更を共有リポジトリに時には一日に何回もコミットします。
- コミットされたコードを基にCIシステムでビルドプロセスが実行され、その後に自動テストが実行されます。
- CIシステムでエラーが発生した場合、開発者にフィードバックされます。エラーが発生しなければビルドが成功し、コードがステージングサーバーへプッシュされた事が通知されます。
- 検証が完了したら開発者は新しいブランチのコードを本番環境にマージできます。
CIのメリット
CIを導入することで次のようなメリットがあります。
-
開発者の生産性向上
今まで開発者自身で手作業で行なっていた作業が自動化され、コードレビューの労力削減やこれまでは最終段階で見つかっていた問題が早期に対処できるなど開発チームの生産性が向上します。
-
運用の標準化
自動化や構成管理が適切に行われるようになり、運用のルール化を行えます。
-
品質向上
テスト頻度が上がることでバグの早期発見・修正によるバグ解決数が増加するので、品質の高い製品をリリースできます。
-
顧客満足度の向上
これらの作業効率化・生産性向上により顧客への新機能のリリースも早くなるため、顧客満足度の向上に繋がります。
CI/CD
CIでビルドやテストを自動化し、完了したコードをCD(継続的デリバリー・継続的デプロイ)で本番環境にマージ・デプロイすることを合わせてCI/CDといいます。次の記事に詳細に解説があります。 https://envader.plus/article/44
まとめ
今回はCI(Continuous Integration)について解説しました。
CIとは開発者のコード変更を定期的にマージし、その度に自動化されたビルドとテストを実行するソフトウェア開発手法です。
ポイントはコード変更を定期的にマージし、それを継続的に行うことにあります。CIを導入しない場合ビルドプロセスの実行やテストを手動で行い、バグが発生した場合は複数の変更点があるため原因究明にも膨大な時間がかかります。CIによりこれらの問題の大半は解消され生産性・品質向上に繋がるので、開発環境を整える際は導入を検討しましょう。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.08.19
プログラミング学習って独学できる?結論から言うと可能、ただし
今回はエンジニア初学者の方に向けて「プログラミング学習を独学でする方法」を解説します。他にも「学習の流れ」や「独学で必要なスキル」「スクールとの比較」も紹介しているので、ぜひ参考にしてくださいね。
- プログラミング
- キャリア・学習法
2024.03.25
API開発ツール「Postman」とは? 導入手順や利用料金について解説
PostmanはPostman社が提供を行うAPIプラットフォームです。
- プログラミング
2023.04.24
Amazon CodeWhispererの特徴とは?VSCodeへの導入方法と合わせて解説
Amazon CodeWhispererとは、オープンソースリポジトリやAmazon内部のリポジトリ、APIドキュメントなどから収集した数十億行のソースコードを機械学習させ、自動でコードを生成および提案してくれるサービスです。
- AWS
- プログラミング