「そこにピンがあるから、」で学んだこと
この記事は、「そこにピンがあるから、」 の開発が一区切りついたため、学んだこと等をまとめた記事です。
当初は自分の考えや経験を整理することを目的としていたので読みにくいかもしれないです
プロジェクトについて
プロジェクト発足
このプロジェクトを一緒にした @masterka さんと初めて開発をしたのは 4月にあった、クックパッドさんが主催する 開発コンテスト24でした。
その反省会を5月にした際に、またなんかやりますかーってことになったのがことの発端です。
はじめは益孝さんが、こんなものがしたい、という形で箇条書きしたデータがきまして、そのなかで絞ったのがこの「そこにピンがあるから、」の原案でした。
スケジュール
月 | 工程 | 自分が使った主な技術等 | |
5月 | 企画 | Skype MTG | |
6月 | 設計 | redmine | |
7月 | 開発 | Node.js, MongoDB, Git | |
8月 | 開発 & 中間テスト | ||
9月 | 開発 | Rails, MySQL | |
10月 | 1st リリース | illustrator, さくらのVPS |
今後は、利用者の様子をみつつ改良を加えていくつもりです。
学べたこと
会議はSkype だけでも意外といける!チケットドリブン開発イイネ!
ミーティングは毎週木曜日の夜に1時間行いました。
このとき以外は、原則として Redmine でチケットを飛ばし合いました。
Skype 音声ミーティング以外では、益孝さんと会って開発の話をしたことはないです。
週1回の音声会議と、チケットでの会話以外はコミュニケーションはしませんでした。
Skypeではいきなりチャットをするということもありませんでした。
これはいま思えば結構重要なことで、フロー状態を保てたり、ログではなくて、みやすい形で記録がのこったりと、いいことでした。
議事録の付け方や、チケットの書き方、wikiのフォーマットとかも学べてこれも一種の成果かなと。
新しい技術に触れられた
開発開始時の僕のスペックは、主に Linux + Apache + MySQL + PHP + Cぐらいを知ってる資格オタクなエンジニア(仕事は SQL + Perl のログ集計系エンジニア)でした。
バージョン管理は、git を使ってみようと思いました。
git の存在はもちろん知っていましたが、二人以上で使ったことがなかったので、とてもいい実践の機会になりました。
また API 側は Node.js と MongoDB を使ってみました。
え、ここで Node.js ? 完全に興味本位です。こういうのにも、寛大にOKだしてくれた益孝さんに感謝。
結果として、僕の小さい頭ではハンドリングできるレベルに達しなかったので、8月中旬あたりに戦略的撤退をして、Rails と MySQL に変更しました。この変更のせいで少しリリースが遅れてしまいました。益孝さんすみみません。
Rails はこれまで使ったことがなかったですが、 Ruby on Rails 3 アプリケーションプログラミング を読んだら結構かけるようになりました。
PHPでMVCフレームワークの経験がある方が rails を学ぶんであれば、この本はとってもおすすめです。
この期間はこの開発では Rubyを、会社では Perl, Shell, sed, awk をばりばりつかっていたのでいろいろ覚えました。
というわけで、ただの PHPer 資格ヲタエンジニアから、LL + 資格ヲタ エンジニアくらいにはなれたかなと。
すみません、調子のりました。精進いたします。
Rails イイネ!
前述のとおり、Rails はじめて使ったんだけどいいですね
思想がすぐれていて、短くかけるし、DBテーブルを管理するMigration はとってもよい機能ですね。
ORM の ActiveRecord は趣味とかで使うだけならいいとは思うけれど、大規模になってくるとパフォーマンスどうなのかなーと思いました。書き方によっては、プロパティ呼び出すごとにDBクエリなげてるようだったので、、、
さくらのVPS イイネ!
これまで serversman@vps を利用していましたが、思い切って さくらのVPSを契約してみました。
serversman@vps よりもさくさくっすね!!!
OS焼き直しもすぐできてとっても便利!!!!!!!!!!!
serversman は、redmine, git サーバ兼結合テスト環境なんですが、遅すぎるので、近々、さくらをもうひとつ借りて移行したいと思います。
開発環境、結合試験環境、本番環境 の構築と運用フローの経験ができた
開発環境とは、ソースを操作する環境です。原則、ここ以外の環境ではソースを書いたりはしません。
自分は local の MacOS X としました。MySQLとRails をインストールして、rails server コマンドだけです。
ここで開発が完了したものは、git push します。
結合試験環境とは、masterka さんが開発する Android のテストを行う環境です。
API と Andriod クライアントアプリがここではじめて結合されて、試験が行われます。
Rails の実行には、Apache + Passenger を利用しました。
開発環境で git push されたものをgit pull して展開します。毎回 pull するのは面倒なのでフックを書いて自動でデプロイするようにしました。
本番環境とは、Android market からダウンロードしたアプリを使う方々向けのAPI環境です。
結合試験環境でのテストをクリアしたときは、本番環境に手動でデプロイします。ここでバグが見えると、JI☆KO(事故)となり、益孝さんに怒られます。
ここは原則、結合試験環境と同じ環境となります。
今回できそうだったけど、やらなかったことを箇条書き
次回はやりたい。
- テストドリブン開発
- サーバ監視
- 環境デプロイを便利に行うシステムがあるようだ
- git のブランチを活用した開発
- RDoc
今後の予定
そこにピンがあるから、の開発は今後も続けていきます。まだまだ荒削りですので。。
バグフィクスはもちろん、画像や音といったメディアを含めたり、同じプラットフォームで違うコンセプトでリリースとかもしたいですね。
地域活性化の鍵を握るようなソーシャルウォークラリーサービスにする予定です。
また、違うアプリ開発として、ユーザが増えつつある haretsutter や countter の改良をしたいと思っています。
あと、Androidとか、ユーザが使うようなフロントエンドの開発もしてみたいっすね。
あとあと、自分があたためてるものもぜひつくりたい
あとあとあと、学生と一緒にやってみたりしたいなー
というわけで、やりたいことはたくさんあります!
そういえば、ふたつ以上のことを並行してできないっていうことも今回知ったことでした。
(お誘いをうけて断ったり、一時停止してしまったプロジェクト関係者には大変ご迷惑をおかけしました。)
さいごに、募集、、というかお願いが、、、
農業とか地域活性化に興味のあるエンジニアいらっしゃいましたら、twitter (@isseium) までご連絡ください!
この分野に興味あるんですけど、なかなか身近にいないので、、、、ぜひいろいろお話ししてみたい!
ではでは