icare-dev team
194
2
0

Carelyの開発環境について

Published at October 22, 2019 2:34 p.m.
Edited at October 22, 2019 4:13 p.m.

株式会社iCAREのエンジニアの安田です。

前回記事では、弊社サービスCarelyのサーバーサイドアプリケーションでどんなRuby Gemを利用しているかを紹介しました。

今回は、開発環境面について記載したいと思います。

Github flow

弊社ではCarelyのレポジトリとしてgithubを利用しています。
githubでのフローは概ねGitHub flowに則っています。

メンバーは通常、developブランチからフィーチャーブランチをチェックアウトし、developブランチに対してPRを出し、レビューをします。
developブランチにマージされる際に、CircleCIを経由して検証環境にプログラムがデプロイされるので、そこで動作検証をします。
基本的な開発作業は上記を繰り返しますが、本番環境へのリリースは週2回定期的に行い、緊急性のあるバグ修正等の場合は、随時リリースをしています。
本番環境へのリリースも、developブランチからmasterブランチにマージされたタイミングでCircleCIから自動デプロイされるように設定されています。

PR、レビュー

PRは他のメンバーもしくは技術顧問にしっかりレビューしてもらえるようにPRの粒度を意識しています。
PRのコード量が多すぎるとどうしてもレビューが粗くなってしまうため、一つの機能がある程度のコード量になりそうな場合は、フィーチャーブランチからさらにフィーチャーブランチを切って、その親子間で適切な粒度のPRを複数作っていくことで、しっかりとレビューできるようにしています。

リリースサイクル

どんな感じの機能がどれくらいのスパンでリリースされているかは
リリース情報
をご覧いただけると、おわかりいただけるかと思います。

CI

CIは上記しましたとおり、CircleCIを利用していて、フィーチャーブランチがgithubにpushされるごとに各種LintおよびRSpecが実行されます。
Lintの警告やRSpecのエラーがあるとPRはマージすることが出来ないので、コードの品質はそこでも担保されます。

作業環境

CarelyのレポジトリにはDockerfile, docker-composeファイルが含まれており、docker-composeで、作業マシン上に各種ミドルウェアをインストールせずに、開発作業をすすめることが出来ます。とはいえ、Docker環境を挟まずに直接ミドルウェアをマシンにインストールしたほうが処理速度が早いためDocker環境を利用せずに、自己責任において作業環境をセットアップするエンジニアもいます。そのあたりは各エンジニアの裁量に委ねらられております。

IDE, エディタ

正確には把握していないですが、利用率はおそらくvscode, vim, RubyMineの順番かと思わます。
ここもエンジニアが自由に選択し、同じ IDE, エディタを使っているエンジニア間で情報共有し合ったりアドバイスし合ったりしています。有償のIDEを利用する場合は、会社側で費用を提供してくれます。