あるある共有サイト、ウチらのあるあるを作りました
サービスの内容的には、みんなが一度は体験したことがあるようなエピソードを共有してあるあるしあうというシンプルなものです。twitterのIDでログインして、twitterにシェアすることができます。
作った経緯は、社長がいきなり「あるある共有サイトが欲しいんだよねー。電車の中で女子高生たちがあるあるあるあるあるあるって言ってて、それを聞いて作りたくなった」みたいなことを言い出したのが発端です。しかも一週間でリリースしようとか言い出して、いつの間にか付き合ってしまった結果、サービスがリリースされました…。
http://uchiaru.okwave.jp/contents/131
実際は一週間なんてことはなく、プロトタイプ作成に2,3日かけて、そのあとOKが出たのでデザイン作ってもらう間にテストコード書いたりリファクタリングしたり別の仕事したりして、サーバ用意してもらったり利用規約作ってもらったり、プレスリリース書いてもらったりして、開発開始からちょうど二週間でした。
とりあえず作ってこのあとどうなるのか……は置いといて、今回はウチらのあるあるで使ってるものとかの技術的な話をします。
開発
Rails3.0.9でやってます。Rails3.1でやっても良かったんですが、ちょっと時間的な余裕がなかったので止めました。
使ってるGemは下のような感じ
- omniauth
- kaminari
- whenever
- haml
kaminari
kaminariはページネートを簡単にできるようになるやつ。
昔はwill_paginateがよく使われてたようですが、kaminariの方がview周りを簡単にカスタマイズ(もっと見るみたいなのとか)できるのがイイネ。
ちなみにautopagerizeみたいなのは、jQueryのautopger.js*1ってのを使ってます
whenever
wheneverはcrontabの書き方をいつまでたっても覚えられない人にオススメ。
capistranoでデプロイするときにも便利。
DB
MySQLじゃなくMongoを使いたかったけど、運用さんのスケジュールを考えると新しいことを試すのがつらそうだったので諦めました。
バージョン管理
数カ月前までレガシ〜なSVNを使ってたんですが、我慢できなくなってようやくGitに移行しました。リモートリポジトリはGitosisを使ってやってます。
Gitのブランチ運用は自由すぎてよくわからなかったので、先人にならってA successful Git branching model*2にならってやってます。この方法を手助けしてくれるgit flow*3というツールが便利です
テスト
テスト環境は上記のリンク先とほぼ同じ構成でやってます。
テストデータの作成はFactoryGirlでやってます。FactoryGirlは最近新しいシンタックスができるようになってよくなりました*4。
あとはcoverageにcover_meというGemを使ってます。ruby1.9系ではrcovが動かないのでこれにしました。ただsporkと組み合わせて動かしているとなぜかうまく動かないので微妙な気がします。
sporkじゃなくてprefetch-rspecを使うのもあったんですが、prefetch-rspecは毎回読み込み直すのに時間がかかるのがいらついたのでやめました。
デプロイ
本番はnginx + Passengerの組み合わせでやってます。
デプロイはcapistranoでさくっとやってます。
bundleとかwheneverとかもうまいことやってくれるので助かってます。
capistrano_colorsとcapistrano-extも必須ですね
まとめ
世の中便利なライブラリがいっぱいあるので、Rails使って1年の僕でも一人で二週間かからずにさくっとwebサービスが作れるいい世の中になりましたね!!!