個人アプリを複数人で開発することになった。研究室用のグループウェアで、学科の友達と2人で今月いっぱいでリファクタリング作業を行うつもり。https://github.com/r7kamura/mio複数人開発の環境、今まで1度も自分で構築したことがなかったので、どうしたらいいか分からなくて困ってる。世の中アジャアジャ騒いでいて、RedmineとかGitHubとかtravis-ciとか、グループ開発に便利なツールが沢山あるけど、個人がMacbookだけで適当に開発していたものにいきなり適用するにはかなり面倒だし、2人程度だと手に余る。30分程度で環境整えて、1時間ほど作業した。下手に共同開発はじめようとするとどんな感じになるのか、あんまりそういう情報見たことない。「稚拙な感じで共同開発進めようとするとこんな感じになるのかーひどい感じだなー」ということを共有したい。後々環境が整備されていったときに、あの頃はこうだったが、今はこうなった、というのを確認したい。GitHubと、はてなグループと、Skypeと、Twitterだけで繋がってる。進捗管理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機能」と一言で呼べるぐらいの粒度にしてる。向いたときそのうちよく分かってくるだろうことが目に見えてるし、いまこれを気にするべきではない。はてなグループドキュメントと進捗を管理するのに、はてなグループを使うことにした。複数人で何か書くのに1番手軽で、必要な機能が全て揃っていて、グループ感を意識させつつ、学習コストが最も低いと思った。使い込んでる方ではないけど、はてなグループのシンプルさ美しい。どんな感じで使うのがいいか見当つかなかったので、とりあえずリファクタリングが必要な項目洗い出して、ここにまとめることにした。基本的にrefactor-listというキーワードしか見る必要がなくて、補足が必要になったら別のキーワードにリンク貼るみたいな感じになってる。http://mio.g.hatena.ne.jp/成果1時間リファクタリングしたのだけど、デプロイ周りの不具合を発見して、修正出来た。アプリを起動してもらおうと思って、git-cloneしてサーバ起動しても起動しないという問題が発生して、インストール作業の説明がないことや、設定ファイルのサンプルが明らかに間違っていることが分かって、簡単に修正した。小一時間でかなり適当にやったわりに、わりと建設的な感じの環境っぽかった。段々足場組んでいきたい。あと、いい意味で適当にやりたい。適当に文章書いたけど、見返したらわりと酷い感じだ...。