個人プロダクトでCircleCIを導入する意味はあるのか


はじめに

FundastA Inc.の片田です!

今回はCircleCIについての記事を書いていきます。

最近趣味でやってるチーム開発や、個人開発でCircleCIを導入してみたのですが、果たしてこれは個人レベルのプロダクトに必要なのか?と疑問に思ったので記事にしつつ思考を整理してみよう!という魂胆です。

(あとなんかCircleCIのTシャツもらえるかもしれないらしいので笑)

これからCircleCIを勉強しようとしている方や、CircleCIの導入を検討している方の参考になれば幸いです。

CiecleCIとは何か

公式サイトはこちらです

簡単にいうと、CICD(継続的インテグレーション・継続的デリバリー)を実現するためのツールです!

。。。正直、何それって感じかと思います。

もっと簡単にいうと、ソースコードをGitにpushするだけで、自動でテストや静的解析を行ってくれるのでソースコードの品質が保たれたり、

自動でビルドしてデプロイするところまでやってくれるのでローカルでビルドして何かしらのGUIをぽちぽちする手間が省けちゃう

っていうツールがCircleCIです。

どうでしょう、何となくイメージ沸きましたか?

なぜCircleCIを使うか

CircleCIを使う理由は上述した通りです。

ソースコードをGitにpushするだけで、自動でテストや静的解析を行ってくれるのでソースコードの品質が保たれたり、
自動でビルドしてデプロイするところまでやってくれるのでローカルでビルドして何かしらのGUIをぽちぽちする手間が省けちゃう

ざっくりいうと手間を省くためだと思います。

毎回ローカルでビルドする手間か、CircleCIを組み込む手間か、どちらをとるか?というところで選択を迫られるように思います。

CircleCIを個人プロダクトで使ってみた

現在僕は、趣味でチーム開発と個人開発を同時進行しています。

チーム開発は、全員で5人のエンジニアが集まって一つのプロダクトを作成しております。

個人開発では、ReactNativeを使用してスマホアプリをちまちま作っている状態です。

そして両方のプロジェクトにCircleCIを組み込んでいます。

CircleCIの内容としては、下記の通りです。

  • チーム開発: APIの自動テスト(静的解析も含む)、フロントの自動テスト、自動ビルド、自動デプロイ
  • 個人開発: フロントの自動テスト、自動ビルド

CircleCIの導入にかかった時間は下記の通りです。

  • 公式ドキュメントをザーッと読む(1時間弱)
  • 公式のチュートリアルやってみる(30分くらい)
  • 自分のプロダクトにCIの部分を組み込む(1時間ちょい)
  • 自分のプロダクトにCDの部分を組み込む(3時間くらい)

僕の知識が少ないことと、あまり要領の良い人間ではないので上記のような時間感になってしまいましたが、参考にしていただければと思います。

ぶっちゃけ、CI部分(自動テスト、自動ビルド)はすぐできます。

CDの部分が、僕の場合AWSリソースへのデプロイだったのですが、なかなかうまくいかず苦戦しました。

ここでは細かい記述の話は省きますが、夜中の2時に作業を初めて、作業が終わる頃には近所のおじいさんがラジオ体操してました...。

CircleCIは個人プロダクトに必要か

最後になりましたが、今記事の本題です。

結論から言いたいので下記の表にまとめました。

CircleCIを触ったことがあるか プロダクトをグロースさせるか 結果
Yes Yes 必要
Yes No 不要
No Yes 必要
No No 不要

という結論になると僕は考えています。

CircleCIを導入するとなると、それなりに学習コストもかかるので、自分が作ろうとしているプロダクトによって、導入を検討する必要があるかと思います。

サービスとしてグロースさせるつもりなら、開発中だけでなく開発後もアップデートしていくことになるだろうし、

その場合は全部自動化しておいた方が楽ですしね。

ただ、学習コストに関して一点補足すると、

僕が業務で使用しているAWS CodePipelineというAWSのCI/CDツールよりは、CircleCIの方が少ない学習コストで導入ができます。

そこは個人的にはCircleCIの魅力かなあと思います。

おわりに

僕はCircleCIを実際に導入するまでは、

「なんか導入しないといけない雰囲気がする」

くらいにしか思っていませんでしたが、ある程度触ってみると自分のプロダクトに合わせて選択していくべきだなあと感じるようになりました。

クレジットカードもCircleCIも、ご利用は計画的に!