【採用担当が学ぶエンジニアリング #2】CI(Jenkins、CircleCI)について学ぶ
昨日に引き続き第2回となります。今回は、CIについて学びます。一応毎日投稿で、知識を底上げしていくつもりです。
主に自社の募集要項を深掘りしていき、非エンジニアなりにも理解を深めていこうという試みです。
自分メモ用として機能させるため、内容に不足があったり、認識が足りていない部分もあったりします。
1 . CIとは何か?
参考サイト
・CI/CDを知らないおじさんにCI/CDを説明した話~CI編~
CIは、Continuous Integrationの略です。日本語に直すと、継続的インティグレーションとのこと。
継続的インテグレーションを一言で言うと、「ソフトウェアのリリーススピードの向上」を目的とするソフトウェア開発の手法の1つ。頻繁に、ビルドとテストを実行できるが特徴。
私のような素人にはこの辺が限界だけど、もう少しエンジニア的な説明を調べてみます。
ソフトウェア開発のプロセスを自動化することで、開発者がソースコードをコミットし、共有しているリポジトリにマージされることで、ビルドとテストが自動的に実行される手法のこと。
じゃあ、CI =継続的インテグレーションで得られる利点は何?
ソフトウェアのバグを早期に発見し対処することができ、チーム開発のスピードを上げ、コードの品質を保証することが可能となる。
2 . Jenkinsとはなんぞや?
参考サイト
Jenkinsを一言で言うと、「継続的インテグレーション(CI)/継続的デリバリー(CD)実現のためのツール」とのこと。
さっき勉強した、CI(自動化やらなんやで、開発スピードを上げる手法)を実現するツールなんですね。
Jenkinsの特長
継続的インテグレーション(CI)/継続的デリバリー(CD)のツールがたくさんある中で、JenkinsはシェアNo.1のツールらしい。(すごい。)
なぜかと言うと、汎用性が高いという大きな長所を持っているため。具体的に言うと、Javaが動く環境であれば、Windowsでも、Linuxでも動作するらしい。
コミュニティが大きいこともあり、プラグインが豊富で、1400以上のプラグインを利用可能とのこと。
利用者が多いので、情報の手に入れやすさや勉強会が多いのも、日本人にとっては大きなメリット。
2 . CircleCIとはなんぞや?
参考サイト
CircleCIもJenkinsと同じく、継続的インテグレーションができるサービス。参考サイトによると、コミットからデプロイまでのパイプラインを作成し、継続的な統合/配信を使用してソフトウェア開発プロセスを自動化可能とのこと。
Jenkinsとの違いは?
ここで気になったのは、「Jenkinsと同じじゃないの?」です。Jenkinsが自前でサーバを立てる必要があるのに対し、CircleCIはWebサービスであるため、登録するだけで使えるのが特徴。
Jenkinsに対する利点
① Jenkinsサーバの運用コストがない。(これはありがたい。)
② Jenkinsは属人化しやすい。
Jenkinsの不便なところ
① Jenkinsより任意のタイミング実行には向いていない。(GitHubのPush/Pull Requestに反応して、ジョブが動きだすため。)
JenkinsもCircleCIも利点があり、欠点もありなんですね。
最後に
今日は、CIについて学びました。基本的には、参考リンクの情報をまとめているだけなので、詳しくは参考リンクをご覧ください。
広く浅くがテーマなので、うわべの情報を拾いつつ、今後も徐々に知識を深めていく予定です。
サポートいただけると嬉しいです!励みになります。