bitbucket
Githubは無料アカウントで非公開Repositoryを作成できないので、個人の開発はBitbucketを使っていたので今回もBitbucketを利用した。
Githubにある機能はだいたい揃ってると思う。少なくとも機能面で劣っていて困ることはなかった。
※最後ここだけ確認出来れば終わりにしようっていうときに ブラウザでアクセスしている Bitbucketの画面上から Pull Request や Pull Request Update を送る処理がなかなか終わらなくてヒヤヒヤしたことはあった。
今回の開発で3Repository使った。
- server
- Vagrantfile + chef-soloのrecipe
- vagrant-box
- Vagrantで使用するベースとなるboxファイル (Ubuntu12.10ベース)
- boxファイルを一度渡してしまえば変更することはまず無いのでbitbucketでなくとも良かったかも。
- app
Pull Request 運用
最初はmasterブランチに直接pushしてた。ハッカソン2-3日前から自分用にforkしてそこから Pull Request する運用に変更。 普段 仕事で使っているのは Gerrit というコードレビューシステムで、Pull Request とは違った運用スタイル。 Pull request に慣れていなかったので、Fork した自分のリポジトリにpushしたあとに git commit --ammend してしまってぐぬぬぬ となることが何度かあった。
wiki
server、app 共に環境構築やコマンドの情報共有で Bitbucket の機能の1つである wikiを使った。 Repositoryをひとつ作ると(wikiを有効にすると、かな?)wiki用のgit Repositoryが作られる。 ちょっとした修正なら、ブラウザからフォーム入力でも良いが、 新規ページを作る場合 hoge.md.md のような重複した拡張子のファイルが出来てしまって、数回修正する手間が発生してしまった。 git clone して修正すると、ページ内にUIイメージの画像を挿入するなども可能。 MacのMarkdownエディタがリアルタイムにプレビューしながら書くことができて便利だった。 - Mou.app - Markdown Pro.app
CakePHP
2人共通の得意言語が無かったが、友人が前にPHPを使っていたのを思い出してPHPにさせてもらった。
素のPHPでなんとなくオレオレフレームワーク にしてしまうよりは、公開されているドキュメントやライブラリのあるフレームワークを使うのが良いだろう、Ruby on Rails にインスパイアして作られたという CakePHPなら似ているところも多く理解しやすいだろう、というチョイスだった。
PostgreSQL
最終的にHerokuにデプロイしたいという話になっていて、DBは何を使うのが良いのだろう?と相談した時に、コーディネーターの島田さんからHerokuならPostgreSQLがオススメと聞いたので、という理由で採択。 自分自身は、7.2や7.3の頃ぶりで数年のブランクがあったので必死で思い出して使っていた感じ。 PostgresSQLには Sequal Pro.app のようなステキなGUI ツールで簡単に使えるものが見つからなくて、phppgadmin でDB操作・確認などを行なっていた。PostgreSQL特有の問題なのか、phppgadminの機能不足が原因なのかわからないちょっとした不自由がいくつかあった。
Vagrant + chef-solo
今までなら自宅のサーバーの環境を使って開発をすれば、VirtualHostの設定、DB作成、(必要に応じてDNS設定)をすればよかった。
最近Vagrant で環境構築の勉強をしていて、今回のような共同作業をするときにも力を発揮できるのではないかと思った。
- CakePHPとPostgreSQLを使って開発がスタート出来るだけのrecipe一式を1Repositoryにして、Bitbucketで共有
- opscodeのcookbook
- cookbookの主要部分。
- バージョン指定したいものが殆ど無かったので、ほぼデフォルト状態で使用している。
- develop cookbook
- その他開発に必要な細かいものをインストールする
- appの動作に必要な処理をまとめた app cookbook
- Virtualhost設定
- DB作成、DBユーザ作成
- app/Config/database.php にDB設定値を挿入して設置
- 作成したアプリのソースコードは share_folderでマウントするようにした
- 環境構築の手順を bitbucket のwiki で共有
heroku
ある程度完成したらherokuにデプロイすることを想定していたので、必要なツール類と確認用のアプリを用意したが ハッカソンではデプロイするところまで至らず。