cangoxina

生産性向上見習いのブログ的な何かです

CI/CDのすゝめ

f:id:korosuke613:20190913175055p:plain

CI/CDってよく聞くけどなんなのかよくわかんない

という人に、Chrome拡張機能を題材に、CI/CDを浅く勧める...

ためのプレゼンのスライドです。

会社勤めの人にはものたりないと思う。


目次


発表スライド

www.slideshare.net

アジェンダ

  1. エンジニアは楽をしたい生物
  2. Chrome拡張はリリースがだるい!
  3. CI/CDとは?
  4. CI/CDを実践したChrome拡張リリース
  5. まとめ

以前、インターン先のLT会で発表した物と同じ内容です。

LT*1での発表で、発表5分質疑応答3分くらいだったと思うのですが、普通に発表に7分くらいかかりました。

解説

スライドの解説をしていきます。

エンジニアは楽をしたい生物

僕が思うに、ソフトウェアエンジニアは楽をしたい生き物です。

人間がしなくてもいいような作業は機械に任せて、コーディングだけしたい人が多いのではないでしょうか?

サービスは一般に以下のようなサイクルでリリースされます。*2

f:id:korosuke613:20190913164919p:plain

正直、手動だと、テストを走らせるのもデプロイをするのもめんどくさいです。

というわけで、めんどくさいことは自動化して、楽をしましょう!

Chrome拡張はリリースがだるい!

自動化するのに良い例がありました。Chrome拡張機能です。

Chrome拡張機能リリースまでの道のりは、普通、以下のようになっております。

f:id:korosuke613:20190913165334p:plain

正直、めちゃめちゃめんどいです!

今回はこの作業を自動化して、楽をします

CI/CDとは?

ここで、タイトルにもあるCI/CDを簡単に説明します。

厳密ではないCI/CDの説明

  • CI (Continuous Integration) - リポジトリを更新するたびにテストを行うこと
  • CD (Continuous Delivery) - リリースブランチ*3を更新するたびにデプロイを行うこと

厳密に言うと多分もっと違う意味だと思います。詳しくはこういう記事をご覧ください。

CI/CDを導入することで、人は、コーディングのみやっていれば良くなります。

f:id:korosuke613:20190913170959p:plain

CI/CDを行うためのWebサービスとしては、CircleCITravisCI、最近だとGitHub Actionsがあります*4

CI/CDを実践したChrome拡張リリース

CI/CDを導入すると、Chrome拡張機能のリリースを以下のように自動化できます。

f:id:korosuke613:20190913171833p:plain

自動化できた処理

  • テスト*5
  • バージョン書き換え
  • 圧縮
  • アップロード
  • 公開設定

CI/CDを使うことで、これだけのめんどくさい処理を自動化することができます!

コーディングに集中できてハッピーですね*6

設定ファイル

上の画像のようにするには、CI/CDサービス向けの設定をする必要があります。 ほとんどの場合、コードベースで設定することができます。

例えばCircleCIの場合、以下のようなymlを書くことで、自動で行う処理を設定できます。

最初は書くのが大変ですが、ちょっと勉強*7して慣れるとスラスラ書けるようになります。

まとめ

  1. めんどくさいことを自動化することで
  2. コーディングに集中でき
  3. テスト忘れも防ぐことができ
  4. 生産性向上品質向上を狙える!
  5. みんなハッピー!

おまけで、GitHubにバッジを貼りまくれます。(なんかかっこいい)*8

CircleCI Coverage Status

作った拡張機能

今回題材にした拡張機能がこちらになります*9

chrome.google.com

Amazonで本の情報を出してくれてかつコピペできるように選択済みにしてくれるChrome拡張機能です。

前々からほしかったのですが、このLTのために急いで作りました。

おわりに

CI/CDを知らない方向けにCI/CDの概要とメリットを紹介する内容でした。

僕は、だいたいなんでもかんでも作った物のテスト・デプロイは自動化します。慣れると簡単です。

みなさんも、ぜひCI/CDを導入して、生産性を上げてみてください。


*1:Light Talkの略。だいたい5分間で発表するんだとか

*2:要件定義やコードレビューは省いています。

*3:ここではリリースブランチと言いましたが、多くの場合masterブランチなのではないでしょうか

*4:僕は、CircleCIを好んでつかっています。仮想環境をDockerコンテナ上で構築できるためです。でも、GitHub Actionsも中々良くて、最近は両方使って比べています。

*5:回帰テスト

*6:本当なら適用前と適用後でかかる時間を比較するべきですが、めんどうだったのでやってません。

*7:各サービスのリファレンスや使ってみた記事を読もう!

*8:発表時はカバレッジが5%しかなかったので、質問で突っ込まれました笑

*9:ソースコード


スポンサーリンク