どうも、こんばんは。

転職してコンサルタントになったたこやき後輩です。
中途未経験コンサルとして、その一週間で感じたことを自分の反省も含めて記事にしてみようと思います。新たに覚えたワードを一つとりあげて、誰にでも理解可能な言葉で説明できるようになるのが目的です。
先月からIT系の案件になり、いわゆるモダンな開発環境に身を置き、飛び交う用語についていくのに必死な毎日です。今までに使ったことのないツールやサービスも多々扱うので慣れるのに一苦労してます!ww
それを自分の中に落とし込んで人に説明できるようになるのが今の目標という感じですね!
参考までに僕の今までの経歴を簡単に書いておきます。
2017/3:大学(農学部)を卒業
2017/4:IT未経験で独立系のSIerに就職
2021/7:独立系のSIerを退職
2021/8:未経験でコンサル会社に就職 ← イマココ
7週目は案件が変わってから二週目で、まだまだついていくのに必死でしたw

8週目を見ていきましょう!!今回説明できるようになりたいワードはこちら!!

CI/CD~!!!
モダンな開発環境(新しめの開発技術をつかってシステム開発を行うこと)では、もはや当たり前のワードになっておりますが…w「何のために取り入れるのか」は漠然とわかるのですが、「どの範囲がスコープなのか」がいまいち理解できておりません( ;∀;)
目次
CI
一つずつ見ていこうと思うのですが、まずはCIから!
CIとは、Continuous Integrationの略で、継続的インテグレーションと呼ばれています。
CI(継続的インテグレーション)では、開発者が自分のコード変更を頻繁にリポジトリにマージし、その度に自動化されたビルドとテストを実行します。小さなサイクルでインテグレーションを繰り返し行い、インテグレーションのエラーを素早く修正することによりチームは統合されたソフトウェアをより迅速に開発できるようになります。
引用サイト:https://www.techmatrix.co.jp/product/cisolution/cisolution1.html
よく使われるツールやサービスとしては以下が挙げられます。
・Jenkins
・Circle CI

・Travis CI
・Drone.io
基本的には無料で使えるものが多く、使い方さえ学べば導入が可能となっています。今や使って当たり前のツールになりつつありますので、有名なJenkinsやCircleCiあたりは学んでおくと役に立つことが多いと思われます。
このCIを導入することでどんなメリットがあるのかというと、従来かかるビルドやテストの時間を大幅に短縮することができ、開発ペースを上げることができます。
私は前職のときに、CIツールを使ったことがなかったのですが、このツールを使わないとプログラミングを改修してマージをするたびに手動でマージして、ビルド、テストを実施していたのでものすごく時間がかかっていました。
CD
CDとは、Continuous deliveryの略で、継続的デリバリーと呼ばれています。
チームが短いサイクルでソフトウェアを生産し、いつでも確実にソフトウェアをリリースできるようにし、ソフトウェアをリリースする際には、手動で行うソフトウェアエンジニアリングのアプローチである。
ソフトウェアの構築、テスト、リリースをより迅速かつ頻繁に行うことを目的としている。このアプローチは、運用中のアプリケーションをより段階的に更新できるようにすることで、変更を提供するためのコスト、時間、リスクを削減するのに役立つ。
引用サイト:https://ja.wikipedia.org/wiki/%E7%B6%99%E7%B6%9A%E7%9A%84%E3%83%87%E3%83%AA%E3%83%90%E3%83%AA%E3%83%BC
よく使われるツールやサービスとしては以下が挙げられます。
・Jenkins
・Circle CI

こちらのCDに関しても基本的には無料で使えるものが多く、使い方さえ学べば導入が可能となっていますので、何かしらのツールやサービスに関わる機会は持っておくとよいと思います。
上記中な難しそうな意味ではありましたが、結局のところCDは、CIを拡張した手法で、ビルドやテストだけでなく、リリースプロセス全体も自動化する手法のことです。
実施の目的はCIと同様で、開発ペースやリリーススピードを上げることで、素早く市場からフィードバックを得られ、ソフトウェアに反映させることです。
CI/CD
と上でCIとCDを見てきましたが、何か感じませんか?

結局何が違うの??
そう、二つを見てみましたが結構重複した内容書いてません??ツールやサービスに至っては思いっきり被ってるしwww
これは私の勘違いに基づいた解釈なのですが、CIとCDってカバーしてる範囲がすみ分けられてるのではなくて、CIがCDに包含されているんですよね。
図でいうとこんな感じw↓
Aに該当するのが「CI」でBに該当するのが「CD」ですね!
CI/CDがどちらもシステム開発の工程を自動化によって効率化を図る手法だと分かったところで、結局このCI/CDを取り入れる1番のポイントは、品質の向上と開発の効率化を同時に達成できる点です。
現代のような将来の予測が困難になっている変化の激しい社会(VUCAと呼ばれたりする)においては、ソフトウェア開発においても迅速な変化への対応が非常に重要となってきます。
迅速な変化に対応するためにシステム開発に当たる人のスキルやIT予算投資を増やして、CI/CDのような高速開発を行っていくのは今後避けられない流れなのではないかと思います!
まとめ
- CIは従来かかるビルドやテストの時間を大幅に短縮し開発効率を上げること
- CI/CDはともにシステム開発の工程を自動化によって効率化を図る手法で自動化範囲が異なる
以上が、私が中途未経験コンサルとして8週目に新たに学んだことです。
最近では当たり前であるCI/CDの考え方ですが、言葉や自分の解釈として説明しろと言われるとうまくできそうになかったので記事にしてみました!!参考になれば幸いです。
実際に紹介したサイトに登録したり、YOUTUBEなどで初心者向けの動画を見たりするとより具体的なイメージがつかめるのではないかと思います!
来週もがんばっていきます。
では、今回はこんなところで!!
※本記事では解釈を間違えている場合もありますがそこはご了承ください。
可能であればコメントにてご指摘いただけますと幸いです。
コメント