【CI/CD】違いも含めて初心者でも分かるように説明したい

IT知識
この記事は約7分で読めます。

どうも、こんばんは。

たこやき後輩
たこやき後輩

転職してコンサルタントになったたこやき後輩です。

 

中途未経験コンサルとして、その一週間で感じたことを自分の反省も含めて記事にしてみようと思います。新たに覚えたワードを一つとりあげて、誰にでも理解可能な言葉で説明できるようになるのが目的です。

先月からIT系の案件になり、いわゆるモダンな開発環境に身を置き、飛び交う用語についていくのに必死な毎日です。今までに使ったことのないツールやサービスも多々扱うので慣れるのに一苦労してます!ww

それを自分の中に落とし込んで人に説明できるようになるのが今の目標という感じですね!

 

参考までに僕の今までの経歴を簡単に書いておきます。

2017/3:大学(農学部)を卒業

2017/4:IT未経験で独立系のSIerに就職

2021/7:独立系のSIerを退職

2021/8:未経験でコンサル会社に就職 ← イマココ

 

7週目は案件が変わってから二週目で、まだまだついていくのに必死でしたw

【Docker】IT初心者でも分かるように説明したい
どうも、こんばんは。 たこやき後輩 転職してコンサルタントになったたこやき後輩です。 中途未経験コンサルとして、その一週間で感じたことを自分の反省も含めて記事にしてみようと思います。新たに覚...

 

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

 

たこやき後輩
たこやき後輩

CI/CD~!!!

モダンな開発環境(新しめの開発技術をつかってシステム開発を行うこと)では、もはや当たり前のワードになっておりますが…w「何のために取り入れるのか」は漠然とわかるのですが、「どの範囲がスコープなのか」がいまいち理解できておりません( ;∀;)

CI

一つずつ見ていこうと思うのですが、まずはCIから!

CIとは、Continuous Integrationの略で、継続的インテグレーションと呼ばれています。

CI(継続的インテグレーション)では、開発者が自分のコード変更を頻繁にリポジトリにマージし、その度に自動化されたビルドとテストを実行します。小さなサイクルでインテグレーションを繰り返し行い、インテグレーションのエラーを素早く修正することによりチームは統合されたソフトウェアをより迅速に開発できるようになります。

引用サイト:https://www.techmatrix.co.jp/product/cisolution/cisolution1.html

 

よく使われるツールやサービスとしては以下が挙げられます。

・Jenkins

Jenkins
Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software

・Circle CI

最先端の CI/CD ツール
CircleCI のクラウドCI CD ツールまたは自社のインフラで、あらゆるプラットフォームに対応する最適な継続的インテグレーション & 継続的デリバリー(CI/CD)を実現できます。

・Travis CI

Homepage | Travis CI – Start building today!
Travis CI is a continuous integration tool that test and deploy your projects with ease. Sync your build projects with Travis CI in minutes!

・Drone.io

Drone CI – Automate Software Testing and Delivery
Drone is a self-service Continuous Delivery platform for busy development teams

 

 

基本的には無料で使えるものが多く、使い方さえ学べば導入が可能となっています。今や使って当たり前のツールになりつつありますので、有名なJenkinsCircleCiあたりは学んでおくと役に立つことが多いと思われます。

この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

Jenkins
Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software

・Circle CI

最先端の CI/CD ツール
CircleCI のクラウドCI CD ツールまたは自社のインフラで、あらゆるプラットフォームに対応する最適な継続的インテグレーション & 継続的デリバリー(CI/CD)を実現できます。

パソコンを使う男性会社員のイラスト | かわいいフリー素材集 いらすとや

こちらのCDに関しても基本的には無料で使えるものが多く、使い方さえ学べば導入が可能となっていますので、何かしらのツールやサービスに関わる機会は持っておくとよいと思います。

上記中な難しそうな意味ではありましたが、結局のところCDは、CIを拡張した手法で、ビルドやテストだけでなく、リリースプロセス全体も自動化する手法のことです。

実施の目的はCIと同様で、開発ペースやリリーススピードを上げることで、素早く市場からフィードバックを得られ、ソフトウェアに反映させることです。

 

コンピューターを使いこなす子供のイラスト(男の子)

CI/CD

と上でCIとCDを見てきましたが、何か感じませんか?

たこやき後輩
たこやき後輩

結局何が違うの??

 

 

そう、二つを見てみましたが結構重複した内容書いてません??ツールやサービスに至っては思いっきり被ってるしwww

これは私の勘違いに基づいた解釈なのですが、CIとCDってカバーしてる範囲がすみ分けられてるのではなくて、CIがCDに包含されているんですよね。

図でいうとこんな感じw↓

部分集合 - Wikipedia

 

Aに該当するのが「CI」でBに該当するのが「CD」ですね!

 

CI/CDがどちらもシステム開発の工程を自動化によって効率化を図る手法だと分かったところで、結局このCI/CDを取り入れる1番のポイントは、品質の向上と開発の効率化を同時に達成できる点です。

現代のような将来の予測が困難になっている変化の激しい社会(VUCAと呼ばれたりする)においては、ソフトウェア開発においても迅速な変化への対応が非常に重要となってきます。

迅速な変化に対応するためにシステム開発に当たる人のスキルやIT予算投資を増やして、CI/CDのような高速開発を行っていくのは今後避けられない流れなのではないかと思います!

まとめ

  • CIは従来かかるビルドやテストの時間を大幅に短縮し開発効率を上げること
  • CI/CDはともにステム開発の工程を自動化によって効率化を図る手法で自動化範囲が異なる

 

以上が、私が中途未経験コンサルとして8週目に新たに学んだことです。

最近では当たり前であるCI/CDの考え方ですが、言葉や自分の解釈として説明しろと言われるとうまくできそうになかったので記事にしてみました!!参考になれば幸いです。

実際に紹介したサイトに登録したり、YOUTUBEなどで初心者向けの動画を見たりするとより具体的なイメージがつかめるのではないかと思います!

 

来週もがんばっていきます。

では、今回はこんなところで!!

 

 

※本記事では解釈を間違えている場合もありますがそこはご了承ください。

可能であればコメントにてご指摘いただけますと幸いです。

 

 



コメント

タイトルとURLをコピーしました