CI(継続的インテグレーション)とは?
継続的インテグレーションとは、開発者のコード変更を定期的にマージし、自動かつ定期的にテストおよびビルドを行うものです。
英語では「Continuous Integration」なので略してCIと呼ばれます。
インテグレーションという言葉には「統合」といった意味があり、それを継続的に行うものとなります。
導入の目的としては、リリース時間の短縮やコードの品質維持などが挙げられます。
今まで手動で行っていた作業がCIの導入により自動化することが可能です。
また、定期的に自動でテストを行うため、バグを迅速に発見することも可能になります。
これにより開発者の生産性向上が実現できるのです。
単体テストでは各々うまく動作していたはずが、結合テストでバグを出してしまう、といったことはCIによって解決させることができます。
リポジトリにコミットしてすぐにCIツールが自動テストを行い、開発者にフィードバックを行ってくれるので、後々バグを洗うのに膨大な時間を費やすといったことがありません。
すぐバグに気づいて問題を最適化することができます。
なぜCI(継続的インテグレーション)が必要なのか?
CI(継続的インテグレーション)が必要な理由は、チームで開発を行っている場合に開発の生産性を大幅に向上させるためです。
大きな結果をもたらすのはバグが発生してしまったときです。
従来はある程度個人でコードを書いて、ある程度完成したら中央ブランチにマージといった方法でした。
この流れは、実は小さなバグが発見されず、どんどん蓄積されてしまう原因につながります。
後の方の工程で結合し、バグが確認されたら原因究明までに膨大な時間がかかり、精査しなければならないコードの範囲がとても広くなります。
最悪の場合、障害の発見がリリース後になってしまう可能性も高くなります。
ですが、CIを導入するとリポジトリにコミットするだけでバグなどの問題点が発見され、開発者にフィードバックされます。
開発者はフィードバックの問題点を修正し再度コミットすれば、上のようなバグの原因究明は必要なくなるのです。
では、具体的にCI(継続的インテグレーション)を導入するメリットを、次項では3点紹介します。
CI(継続的インテグレーション)の3つのメリット
①コードの品質維持
リポジトリへのコミット時に自動テストが行われるため、後々にバグに気づくといったことがありません。
よって、バグが累積することなく質の高いコードで開発していくことが可能になります。
また、チェックツールを組み込めば、その後の工程で発生する可能性のある問題を発見することができるため、保守性の向上にも繋がります。
②リリース時間の短縮
CIで可能になるのは自動テスト&自動ビルドです。
これは手動でやるよりも時間がかからない上に、その間エンジニアは別の作業に専念することができます。
上記で述べた「コードの品質維持」に通ずるものがありますが、バグの原因究明のためのソースコード精査が少なくなるため、その分の時間を別のことに当てられます。
また、継続的インテグレーションの拡張に継続的デリバリーというものがあります。
ここでの詳しい説明は省きますが、簡単に言うと環境構築&デプロイなどリリースの手順を自動化してくれます。
自動化できるところはすべて自動化させることによって、開発者は次の行動に移ることができるので、結果的に大幅な時間短縮に繋がります。
③生産性の大幅向上
従来の方法でチーム開発を行う場合は、最新の情報共有が必須です。
Aさんが修正したコードをBさんが別のコードで上書きしてしまい、不具合や意図しない挙動を引き起こしてしまう可能性があります。
また、新しいファイルを古いファイルで上書きしてしまい、更新したコードが無駄になってしまうことなどがあれば時間の浪費でしかありません。
実際の現場でそのようなことはまず無いとは思いますが、時間の無駄になってしまっている作業は少なからず存在はしていると思います。
それらの作業をCIによってカットできるので、生産性の大幅向上が期待されます。
継続的インテグレーションを実現するための代表的ツール
①Jenkins
Jenkins(ジェンキンス)は、企業や個人事業主など数多くの方々に使われています。
特徴としては、ブラウザのダッシュボードが用意されていることです。
GUIで直感的な操作のため、初めてCIを扱う方でも使いやすいです。
複数のプロジェクトをひとつのJenkinsで管理することが可能です。
また、プラグインというもので機能の拡張が容易に行えます。
さまざまなバージョン管理システムに対応しているので、多くのチームで採用されています。
②TravisCI
TravisCI(トラヴィスシーアイ)は、コードのテストをTraviceCIで行うため、最小限の環境構築のみで使用することができるといった特徴があります。
オープンソースのソフトウェアであれば、無償で使用することができ、ソースコードはGitHubにて公開されます。
プライベートリポジトリと連携させる場合には有料になります。
最小限の環境構築で使用が可能なため、小規模のチームや初めてCIを導入するといった場合におすすめです。
③Circle CI
Circle CI(サークルシーアイ)は、ビルド&テスト&デプロイが最小限の環境構築で可能です。
1コンテナかつ1000分のビルドまででしたら無料枠で利用が可能です。
Jinkinsはサーバーに導入させるツールでしたが、こちらはSaaS型になります。
SaaS型というのは「Software as a Service」の略で、パッケージ販売するのではなく、機能をインターネットを通じて提供する形態を指します。
FacebookやSpotifyなどの有名企業もCircle CIを採用しています。
まとめ
いかがだったでしょうか。
専門用語が多く混乱された方もいらっしゃるかと推察しますが、要はCIを導入することでチームの効率化が図れるようになり、今までの作業を圧倒的に効率化することができるようになるのです。
今後、CIを導入する場合は、プロジェクトの途中から導入しても混乱を招く恐れがあるので、新しプロジェクトから導入を進めてみてはいかがでしょうか。
Awesome Ars Academia(オウサムアルスアカデミア)は、グローバルIT専門学校です。
中高生から社会人まで、幅広い層の方々に「英語でのプログラミング学習」の場を提供しています。
興味のある方はぜひ、実際にAwesome Ars AcademiaのIT留学卒業生のインタビュー記事をご覧ください。
15歳の高専生がセブ島IT留学へ!初海外、新たなチャレンジで得たものとは?
アメリカの大学でビジネスを学んだ後にセブでIT留学! 文系大学生がセブ島IT留学を決意したわけとは?
また、Awesome Ars Academiaでは、英語で学ぶオンラインプログラミング無料講座も多数開講しております。
英語とプログラミングの必要性が叫ばれる今、ぜひ英語とプログラミング学習のファーストステップとしてご活用ください。
LINEからの簡単問合せはこちら ⇒ LINEでのお問い合わせはこちら
無料カウンセリング予約はこちら ⇒ https://awesome-ars-academia.net/online-counseling/
Awesome Ars Academiaへのお問い合わせはこちら ⇒ https://awesome-ars-academia.net/contact/
Awesome Ars Academiaの資料請求はこちらから ⇒ https://awesome-ars-academia.net/material/