独学文系エンジニアな日々

機械音痴な文系大学生が独学でプログラミングを学んだブログ

【フリーランス】も知っておきたい!CI/CDの仕組み

f:id:sooriy25:20210306195208p:plain

自動化が求められる昨今、チーム開発ではテストやリリースの自動化が進んでいることが多いです。

今回は、「ビルド、テスト、デブロイ」を自動化するCICDと呼ばれる仕組みについて解説していきます。



こんな人向けの記事になっています。

読んでみて ・「CI/CD、名前は知ってるけど導入したことない」
・「導入してみたいけどイメージわかない」
・「そもそもCI/CDってなに?」

フリーランスとして一人で開発していたりするとなかなかCICD導入までいたらなかったりするのではないでしょうか?
この機会に是非勉強するきっかけとしてみてください。




CI/CDって何?

継続的インテグレーション、CI(英: continuous integration)とは、すべての開発者の作業コピーを定期的に共有されたメインラインにマージすることである。1日に数回行われるのが一般的である

引用:

ja.wikipedia.org


継続的デリバリー(英語: Continuous delivery, CD)とは、チームが短いサイクルでソフトウェアを生産し、いつでも確実にソフトウェアをリリースできるようにし、ソフトウェアをリリースする際には、手動で行うソフトウェアエンジニアリングのアプローチである[1] [2]。

引用:

継続的デリバリー - Wikipedia


CIとは継続的インテグレーションCDとは「継続的デリバリー」の略です。

要するにビルド、テスト、デブロイを自動化し開発の高速化、高品質を担保しようという取り組みです。


例えばソースをGithubで管理しているなら、PullRequestをマージしてからリリースするまでの手順を全て自動的にシステムにやらせるようなことをします。


これまで、「ある機能だけを追加/修正したつもりが全然関係ないところでバグっていてリリースするまで気がつかなかった。」
なんてこともあったと思います。

毎回、機能を追加する度に、テスト、リリース作業に何時間も取られていたらバカらしいなと思いませんか?

これを自動化しましょうと言うことでもあります。

自動化を行う上で大事な考え方もあります。

5時間かかる仕事があるなら10時間かけて自動化し、次からは数分で終わらせる。

何度も発生する作業ならば、少し時間がかかっても自動化を実現させる動きを考えるようにしましょう。


自動化しておくメリット  新しく機能追加してもある程度は自動で品質を担保してくれる
 リリースが気軽に行えるようになるため高速でリリースができる



では具体的に仕組みがあるのか解説していきます。

パイプラインの具体例:

f:id:sooriy25:20210306192909p:plain

例えば上記のような構成もCICDと呼べます。



この例ではエンジニアがgithubに対しマージを行います。
その後、マージをトリガーにしてユニットテスト、E2Eテストと順番に実行していきます。 テストが失敗すればデプロイは行われません。
成功したらいつでもデプロイできるようにスタンバイまたは自動にしている場合はそのままデプロイを実施します。


おすすめの本を紹介

今回、CICDについて書いていますが、
昨今よく取り入れられているDevOpsという「開発」と安定した品質を担保する「運用」で協力し合いながら、 サービスの質をあげていく開発手法の中でもとても重要な仕組みになります。

就活の際に以下の本を取り上げて話を取り上げて話したらとても盛り上がりました。
CICDについてもDevOpsについても解説してあるので個人的にとてもおすすめです。
一度読んでみてください。

DevOps導入指南 Infrastructure as Codeでチーム開発・サービス運用を効率化する [ 河村 聖悟 ]

価格:3,300円
(2021/3/6 19:05時点)
感想(0件)

サービスの紹介

さて、CICDを実行するツールはいくつかあります。
今回はよく使われるメジャーなCIツールを3つ紹介したいと思います。


Jenkins Jenkins

昔からあるJava製のCIツールです。
無料で利用可能です。自由度が高い分設定などが結構細かかったりプラグインも多い分使いこなすのが難しいです。
また、自前でサーバーを用意する必要があります。
大手企業ではセカンダリサーバー(タスクを並列に動かすための)が多くなりすぎてメンテナンスが大変になったりするケースもあります。


Circle CI 最先端の CI/CD プラットフォーム | CircleCI - CircleCI

コンテナ数が複数になると有料になりますが、
クラウドサービス(Saas)なので自分でサーバー管理しなくて良いです。
ymlファイルに情報を記述すれば勝手に動いてくれるのでとっても便利です。


Travis CI Travis CI - Test and Deploy Your Code with Confidence

CircleCiと同じく、コンテナ数が複数になると有料になりますが、
クラウドサービス(Saas)なので自分でサーバー管理しなくて良いです。
ymlファイルに情報を記述すれば勝手に動いてくれるのでとっても便利です。
OSS版があり、自前でサーバーを用意すれば自社で使えます。


個人的なおすすめは、会社がSaasサービスを許すならCircleCIかTravisCIです。
みなが可視化しやすく、管理も楽な方が何かと便利です。

まとめ

これを機に、フリーランス、まだ導入してないエンジニアの皆さんも 自動化にチャレンジしてみてはいかがでしょうか。
作業効率がグーンと伸びるかもしれません。




副業始めるなら!!おすすめのワードプレスサーバー

Wordpressを契約するために必要なWebサーバーはさくらレンタルサーバーやエックスサーバーが簡単です!

みなさんもサーバーを契約してWordpress案件をこなしてみましょう!