酷い感じの共同開発環境整えた

初めて個人アプリを複数人で開発することになった。研究室用のグループウェアで、学科の友達と2人で今月いっぱいでリファクタリング作業を行うつもり。

https://github.com/r7kamura/mio

複数人開発の環境、今まで1度も自分で構築したことがなかったので、どうしたらいいか分からなくて困ってる。世の中アジャアジャ騒いでいて、RedmineとかGitHubとかtravis-ciとか、グループ開発に便利なツールが沢山あるけど、個人がMacbookだけで適当に開発していたものにいきなり適用するにはかなり面倒だし、2人程度だと手に余る。

とりあえず30分程度で環境整えて、1時間ほど作業した。下手に共同開発はじめようとするとどんな感じになるのか、あんまりそういう情報見たことない。「稚拙な感じで共同開発進めようとするとこんな感じになるのかーひどい感じだなー」ということを共有したい。後々環境が整備されていったときに、あの頃はこうだったが、今はこうなった、というのを確認したい。

GitHubと、はてなグループと、Skypeと、Twitterだけで繋がってる。

  • GitHub
    • コード共有
    • チケット管理
  • はてなグループ
    • ドキュメント管理
    • 進捗管理
  • Skype
    • 会話(※ただしテキストチャットに限る)
  • Twitter
    • 遅刻連絡とか

進め方

とりあえず2人で主要なところからコードを見て入ってる。2人で全く同じコード見ながら、自分が説明する。説明してたら、おのずと口からぽろぽろバグが出てくるので、さらっとグループに書いてふわっとチケット化してる。相手はRails初級者で、このやり方がかなり良さそうなので、当分これが続きそう。

Skype

テキストチャットだけで意思疎通してる

  • HHKBの音がうるさい
  • 好きな音楽が聴きたい
  • ログが残るのでコピペしてグループに貼るだけで良い

Twitter

連絡が取りにくい状況で1番連絡が取りやすい。とりあえず毎日夜に1時間やることにしてて、遅刻しそーなら適当に連絡する。2時間ぐらい連絡なかったら、ああ死んだか、という感じ。

GitHub

コードの共有と、チケット管理に使ってる。

相手のGitHubアカウント聞いて、レポジトリのCollaboratorに追加するだけだし簡単。お互いにGitの知識浅いので、branchを沢山切ってバリバリ開発したりするのはまだ先の話になりそう。お互いにGitのモデルの理解進めたらトピックブランチ切るようにしたい。インクリメンタル開発〜。

現状はmasterブランチとrefactorブランチの2本だけで作業してる。コードの変更は後者で行って、なんとなく良さそうだったらmasterにmergeする。masterにmergeする作業は自分がやってる。

あと意識高いのでチケット駆動開発することにした。チケットになりそうな、明らかに必要な変更をIssuesに登録して、どちらかにassignしてる。チケット切る作業は自分がやってる。初めてチケットとか作ったけど、とりあえず3つ問題出た。

  • どんな問題がチケットになり得るのか
  • どんな大きさの問題を1つのチケットに対応させるのが良いか
  • いつチケットを作るのが良いか

現状、明らかに変更が必要そうと分かった問題だけチケット切ってる。チケットの粒度、ぶっちゃければ適当で、「xxx機能」と一言で呼べるぐらいの粒度にしてる。チケット切るタイミング、まだ3枚しか切ってないけど、思い起こすと以下のタイミングで切ってた。

  • 作業開始時
  • 作業終了時
  • 気が向いたとき

そのうちよく分かってくるだろうことが目に見えてるし、いまこれを気にするべきではない。

はてなグループ

ドキュメントと進捗を管理するのに、はてなグループを使うことにした。複数人で何か書くのに1番手軽で、必要な機能が全て揃っていて、グループ感を意識させつつ、学習コストが最も低いと思った。あまり使い込んでる方ではないけど、はてなグループのシンプルさ美しい。

どんな感じで使うのがいいか見当つかなかったので、とりあえずリファクタリングが必要な項目洗い出して、ここにまとめることにした。基本的にrefactor-listというキーワードしか見る必要がなくて、補足が必要になったら別のキーワードにリンク貼るみたいな感じになってる。
http://mio.g.hatena.ne.jp/

成果

1時間リファクタリングしたのだけど、デプロイ周りの不具合を発見して、修正出来た。とりあえずアプリを起動してもらおうと思って、git-cloneしてサーバ起動しても起動しないという問題が発生して、インストール作業の説明がないことや、設定ファイルのサンプルが明らかに間違っていることが分かって、簡単に修正した。

小一時間でかなり適当にやったわりに、わりと建設的な感じの環境っぽかった。段々足場組んでいきたい。あと、いい意味で適当にやりたい。
適当に文章書いたけど、見返したらわりと酷い感じだ…。