作業分担
半ば無理してCakePHPを使うことにさせてもらったので、PHP的な処理は自分が担当 友人はマスターデータ作成、さいころを振るなどのUIまわりをお願いした。
CakePHP
ベースは CakePHP 2.3.0。アイディアソンの5日前にリリースされたばかり採用するのを一瞬ためらったが、どのバージョンにしても直近数バージョンの変更点を気にしながらドキュメントを読む必要があるのはかわらないので思い切って2.3.0にした。
利用したプラグイン
- https://github.com/cakephp/DebugKit
- 定番なので何も言うことなし
- https://github.com/slywalker/TwitterBootstrap
- おなじみのTwitterBootstrap のデザインを利用するためのプラグイン
- デザイナーがいなかったので、とりあえずそれっぽいデザインを当てるために利用
https://github.com/CakeDC/migrations
- Migration Plugin
- 良い評判は聞いていたが実際に使うのは初めてだった
ロケタッチPlugin (自作)
- 今回のアプリのためにフルスクラッチ
- OAuth2.0部分の処理をする ロケタッチComponent
- OAuth2.0なのでほとんどハマりどころもなく、APIドキュメントに書いてあるとおりに実装したらすんなり動いた
- ロケタッチ認証で AuthComponentを使ってログインさせるための ロケタッチAuthenticate
- 認証に使用したユーザデータを保存する Userモデル
- 用意していたがApp側に別途モデルを作成して使ったので実際には使われていない
ハッカソンでやったこと
ハッカソンで実際に手を動かせる時間が4時間程度しかない。 この4時間で何をやるのか、できるのかを考えた。
これまでの経験上、アプリの肝となる部分を作る前にユーザ認証のところを用意してるあたりで萎えてしまうことが多かったが、認証部分で挫折するなんてことは絶対に避けなければならない。 幸いロケタッチAPIは OAuth2.0 なので API ドキュメントを読んで素直に実装したらそのまま認証できて助かった。Authenticate を作成するときにリダイレクトループになってしまって少しハマったくらい。そうして、3日くらい前までに ロケタッチPlugin の認証部分は完成していた。
おかげでハッカソン当日は、アプリの一番おもしろいところに着手できたので正解だったと思う。
予想外だったのは Migrations プラグイン。友人とそれぞれが別な vm で作業しているので、テーブル追加などDBへの変更が入ると同じように適用してもらわなければならない。その管理を行なってくれるのが この Migrations プラグイン。今回初めて使ったので勝手がわからず、1テーブル追加したのを記録したいだけなのに、変更点が出力されなかったり、別なテーブルの変更が混ざってしまったり、最終的に最初から順番に変更を当てていっても期待通りの構造を再現できなくて、直接 Scheme 変更をしてもらう事態になってしまった。Gitの運用方法と並んで時間を取られてしまったものの1つだった。非常に便利な Plugin だと思うので、研究して使いこなせるようになりたい。
成果発表
他のチームの発表を聞きつつも最後の悪あがきをして臨んだ成果発表。 サービスの肝となる部分はほぼ完成して画面を動かしながら特にトラブルもなくデモンストレーションすることができたのは良かった。
- ロケタッチ認証
- グループ名を決める
- 出目表を表示
- さいころを振る
- 行き先決定
リハーサルには余念が無かったが、アイディアソン・ハッカソン通じての感想を述べるとところが頭のなかで整理できていなくて、 言いたかったことの半分くらいしか言えなかったのが残念。
ハッカソンおかわり(!)
ハッカソンと成果発表も終わって解散になったのが16:30頃、せっかくだからもう少し作業して完成に近づけたいと思った。こんなときこそコワーキングスペースの出番だと思うのだが、近くに都合良く使える場所が無かったので、会社の会議室を借りる事にした。 そんなにおなか空いていないと言いながらコンビニで軽食を買い込んで友人と2人で会社へ行った。
Migration 失敗が原因で期待通りの動作をしなくなってしまった、Bitbucket のところにも書いた Pull Request 操作に時間がかかった、最後に開発環境で確認するために入れていたコードを消したのが原因で確認作業で期待通りの動作をしなくなっていた、と最後の最後に問題が重なって、"もうちょっと" のつもりが結局終電近くまでかかってしまった。
ふりかえると日中のイベントと同じくらいの時間の延長線をしていたので、疲れが出てきていたのかもしれない。
成果発表の時までに手を付けられなかった "達成判定して次の目的地を決める" の機能が理論上完成し、多少の不便はあるにせよ必要最低限の機能は実装できた満足感は大きかった。