この投稿はmixiグループ Advent Calendar 2015の19日目の記事です。
最近一人でぽちぽちアプリ書いてて良かった、ぼっちでも楽しくなる開発手法について紹介します。
1. GitHubの導入
GitHubは差分が見やすく、他のサービスと連携し易い点でよく使ってます。
またChrome拡張を使うとより一掃使いやすくなります。僕がよくお世話になってるのは、WIPをマージできないようにするDo Not Merge WIP for GitHub、差分をより見やすくするPretty Pull Requests (Github)、リポジトリのwikiを検索できるGitHub Wiki Search(一人だとあまり使わないかも)をよく使っています。
あと、僕は使ってないですが、ZenHub for GitHubはIssueをそのままカンバンにできて良さそうです。
2. 開発用のSlackチャンネルを作る
Slackはチャットツールですが、連携機能が強力で沢山のサービスと連携することができ、テスト結果の通知やデプロイ通知などしてくれます。ちなみに僕のSlackはアニメ管理もしてくれます。
もちろんGitHubとの連携もあり、PRのコメントやコミットの通知などの新着管理ができます。また、後ほど紹介するCircleCIやTravisCIといったCIサービスのビルド結果やHerokuへのデプロイログなども残すことができます。
BotやIntegrationが増えると1人のSlackでも賑やかになります。やったね、たえちゃん。
3. CIサービスと連携させる
CircleCIやTravisCIと言ったCIサービスを使うことで最新のコードのビルドを行った結果をPRに表示したり、masterへマージ後デプロイしたりできます。
僕はPrivateリポジトリが無料なCircleCIが好きでよく好んで利用しています。先日行われたmixi git challengeでもこのCircleCIを利用しておりました。
4. SideCIと連携
SideCIはHoundCIのようにRubocopやJSHintのコーディンスタイルの警告をPRにコメントをしてくれるサービスです。また様々なLintを利用できるのもこのサービスの特徴です。
かわいい女の子のbotにコメントさせたりするとSlackにも表示されるので開発モチベーションがちょっとだけ上がります。
またどう直せばよいかのリファレンスが付いているのでとても便利です🍣🍣
5. Herokuにデプロイ
Herokuはゴミみたいなプロダクトでもいくつでもローンチできるぼっち開発者にとてもフレンドリーなサービスです。ステージング環境やプロトタイピング環境にはすごい便利です。
HerokuはGitHubのリポジトリをそのままデプロイする機能があります。
また、ブランチを監視してコミットされるとそのブランチを自動的にデプロイしてくれる機能があります。僕はよくステージング環境と本番環境を用意して、staging
ブランチにコミットがあるとステージングデプロイが始まるようにして、master
ブランチには本番デプロイが始まるようにしています。こうすることによって、PRをマージする前にstaging
にマージして動作を確認した後に、PRをマージしてmaster
が更新されるとそのまま本番デプロイが走るようにしています。
これでデプロイ作業を意識せず開発に専念することができます。
任意のブランチを指定することができるのでお使いの開発フローに合わせることもできますね。
6. PR駆動開発
個人開発では、masterを常にデプロイできる状態にするGitHubFlowを取り入れています。また、CI機能が整ったのでPR駆動+TDDでの開発スタイルを利用しています。
1つの機能ごとにPRを作成し、タイトルに[WIP]
をつけた状態ではじめ、本文にはTODOを書いていきます。これによって誤マージやオペレーションミスをなくしていきます。
PRベースで開発を行うとコミット単位でLintやテストが走るため不慣れな言語の場合は正確なレビューをしてもらえるので勉強としてはとても最適です。
マージする前にstaging
ブランチに差分を適応し、ステージング環境で確認することも可能です。(この辺はHerokuのパイプラインを使うと綺麗にできるようですが、僕はいまいち使いこなせてないので誰かおしえてください)
7. DeployGateでデプロイ
iOSアプリやAndroidアプリの場合はdgを使って配布します。dgはapkやipaを1コマンドでdeploygateに配信できる超便利コマンドです。
まだCircleCIに取り入れていませんがクライアントのリポジトリがmaster
へマージしたタイミングで自動的に配信するような仕組みを考えています。
えっ、1人なのに誰に配布するのって?他に人が増えた時にだよ!!
8. その他
CIサービスには他にもカバレッジ計測のCIサービスのCoverallsや脆弱性診断のCIサービスのVaddyなどといったものがあります。
まとめ
GitHubを始め、CIサービスやSlack,Herokuなどを使って一人ぼっちでも楽しい開発方法を紹介しました。またbotを挟むと賑やかになるので楽しいです。これらは基本的に無料で使えるので本当に凄い。
次の日はKuniwakくんの「総行数57,000の巨大CSS群をLessに書き換えた軌跡」です。