コベリンの開発環境を紹介

はじめまして。 合同会社コベリンの山口と申します。

私の仕事はコベリンの開発環境をより良くして開発効率を上げることです。

ここ一ヶ月ほどで急激に開発環境が整い、効率が目に見えて上がってきたので、現状のコベリンの開発環境を紹介いたします。

登場人物の紹介

Github

octcat

コード、Issue管理はこいつに任せています。 コベリンでは Private プランを契約して使っています。

Jenkins

jenkins

24時間働いてくれます(時々メンテナンスが必要)。 コベリンでは iOS アプリをテストする関係上、使わなくなった Mac Book Pro を Jenkins サーバー機として使っています。

HipChat

HipChatIcon

社内のコミュニケーションツールです。 会話だけでなく、様々な通知を受け取るのにも使っています。

エンジニア × 3

忘れていましたが、社員は全員で3人、全員が開発を行っております。

コベリンの開発環境

covelline_development_env

見た瞬間、分かります。現代的な開発環境になっています!!

これがやりたくて会社を作ったようにものです。

作業の流れ

ざっくりと説明すると以下のようになります。

  1. 自分の作業を Github に Issue として登録
  2. 自分の作業をこなす
  3. Pull Request を行う
  4. Jenkins が勝手にテストする
  5. Jenkins からテスト結果の通知が来る
  6. 誰かがコードレビューを行う
  7. 問題なければマージする
  8. 1から繰り返す

細かい説明

1でやってる Issue を登録する作業ですが、短期的なマイルストーンを作るときに全員で集まり時間を取って Issue を一気に作っています。この時立てる Issue は粒度は粗めですが、どのぐらいの時間が掛かりそうな Issue なのかを気にして作っています。

その後は、各々細かい Issue が湧き出してくるので、必要に応じて Issue を作っています。

コベリンでは Issue を立てないで作業をし続けていると山口が怒鳴りこみに行くことがあります。 コミュニケーションの始まりの部分なので、ここは厳密に管理していきたいと思っています。

4の Jenkins にテストしている部分ですが、 Github で Pull Request を行うと自動的に Jenkins がテストを実行してくれます。

Github から 社内にある Jenkins にトリガする方法がないので、Jenkins に Github をポーリングさせています。 (Jenkins で使用している plugin などは別の機会に紹介させていただきます)

Jenkins が Pull Request を検出すると最新のコードをダウンロードしてテストを実行してくれます。

その結果は以下の3種類の方法で通知されます。

  1. HipChat (Jenkins HipChat Plugin)
  2. Google Chrome (Jenkins Notifier for Chrome)
  3. 音声 (自前のコマンド)

3の音声ですが、成功時には可愛い声でお知らせしてくれるのでエンジニアのモチベーションが上がります。 但し、失敗時には緊急事態っぽい音が流れるのでびっくりします。

良い所

  1. 楽しい ✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
  2. テストが確実に実行されるので安心 (自動テスト)
  3. 他の人がやってることが分かる (Issue)

なんといっても自動化などでハックしている感じがして楽しいです。 それと、テスト項目がどんどん増えていくのが楽しいです。

課題

  1. 学習コストが少々高い
  2. あれやこれやとやりたいことが出てきてしまう
  3. 作業のオーバヘッドが大きそうに見えてしまう

1は Git やらなんやらイロイロなツールを使っているので、それらを使っていない人にとっては大変だと思います。

幸いなことにすぐに慣れてくれたような気がします。

2 はハックし始めると時間を忘れてしまいますよね...

3 に関してですが、Issue を立てたりするのが面倒臭がられることが多いです。

でも最近は Issue を立てててから作業をしたほうが結果的に作業効率が高いことが分かったので、 Issue は出来る限り立てるようにお願いしています。 (開発が佳境に入っててんやわんやし始めると Issue の有り難みがよく分かります)

普段の会話で「あんな機能も付けたいよねー」 とか 「こんな機能も付けたいよねー」といったものが出てきたらそれも忘れないうちに全部Issueとして書いておいたほうがいいです。

やるのかどうかは別としてどこかに書いてないとすぐに忘れてしまうので、これは癖にしておいたほうが良さそうです。

おわりに

そんな感じで、ざっくりですがコベリンの開発環境を紹介してきました。

これから何回かに分けてそれぞれのツールをどのように使っているかを紹介していきたいと思います。

また、現状コベリンでも、この開発環境に満足はしていないので改善を続けていきたいと思っています。