GWにGo言語で作ったMeetAppというサービスの開発記録
GWに2〜3日くらい本気だして、MeetAppというサービスをリリースしました。
フロントエンド&企画をやっていただいた@tejitakさんのブログに大体の概要が書いてありますので、こちらを併せてご覧いただければと。
GWハッカソンでMeetAppという趣味アプリ開発者のためのサービス作りました - TEJI TECH BLOG
自分の方は、Goの構成や使っているライブラリや開発中のTipsなどをまとめようかと思います。
Goの構成
使ったライブラリ
- guregu/kami : Webフレームワーク(先輩)
- unrolled/render : jsonやhtmlのレンダリング
- kyokomi/goroku : 今回作った(heroku用)
- gotsunami/go-cloudinary : CloudinaryのAPI
- gopkg.in/airbrake/gobrake.v1 : airbrakeのAPI
- gopkg.in/mgo.v2 : mongoDB
- gopkg.in/redis.v2 : Redis
- boj/redistore : redisでsession管理
- huandu/facebook : facebookのGraph API
- ChimeraCoder/anaconda : TwitterのAPI
- microcosm-cc/bluemonday : Markdown変換1(1と2セットで使う)
- russross/blackfriday : Markdown変換2(1と2セットで使う)
今回の開発過程で作ったライブラリ
kyokomi/goroku
herokuの以下アドオンをx/net/contextベースで利用できるライブラリ
- mongolab : 永続データ
- Redis To Go : ログインセッションとか
- Cloudinary : 画像アップロードと画像のリサイズ
- airbrake : エラー通知
作ったといっても、他のライブラリをラップしてherokuの環境変数を使うようにしているだけですが。
開発時のTipsとか
心がけたこと
- 汎用性 vs 開発速度(2対8くらいの割合)
- 読みやすいコード vs 捨てやすい/改修しやすいコード(4対6くらいの割合)
- パフォーマンス考慮できるならやるけど、少しでも複雑になるなら
// TODO:
残してサクッとスルーする - おれおれフレームワークとか作らない
- テスト書いたほうが開発が早くなるor画面上で動作確認が難しいテストのみ書くようにした
良かった点
- mongolab便利だった(管理画面でデータいじったりするの楽)
- Cloudinary便利だった(画像リサイズとかURLベースでやってくれる)
- CircleCIで自動herokuデプロイを組んでから開発速度が加速した(最初からやってもよさそう)
- 開発後半で、リファクタしたりよく使うコードとかを別パッケージにしたりする余裕があった
- 開発はほぼ2人だったのでコミュニケーションロスもほとんど無く、スピード感良い感じでスムーズに開発できた
おわり
引き続き改善していくつもりですが、x/net/contextベースで開発したため結構使いまわせるようになっているので次はもっと早く開発できそうですので新しく別サービス作るのもアリかなと思ってます。
一緒に作るのも面白かったので、またやりたい。