フィリピンでWebエンジニア 2014
縁あって、またフィリピンでインターン的なことしています。3週間経ったところです。
経緯
- 花粉疎開でセブにいたらオファーがあった
- RubyConf Philippinesで再会して話を聞いた
- 前回はできなかったチーム開発ができそう
- フィリピントップクラスのOSSエンジニアが参加している
ということで面白そうだったので、期間を決めてやってみることにしました。
開発環境
- GitHub(git-flow with PR)
- Wercker(CI), Code Climate(品質チェック), Slack(コミュニケーション)
- Rails, PostgreSQL, RSpec, Cucumber
- AWS, Ansible, Capistrano
割とモダンな環境といえるかと思います。チームは自分含め6-8人体制です(流動的)
やったこと
- 新規開発者向けドキュメント整備
- Guard/Springによる自動テスト導入
- ParallelTestsによる分散テスト導入
- Rails4.0 -> Rails4.1アップグレード
その他、ある大枠の機能をアサインされ地道に開発してました。
知見など
- Railsで階層化したModelは規約から外れるため避けたほうがいい
- foo_barsテーブルからはFooBarモデルが期待され、Foo::Barモデルではない
- 変数名や関連名にnamespaceを付けるかどうか悩むことになる
- 統一性のためすべてにnamespaceを付けたが長ったらしくなってしまった
- Rails4.1.1はControllerを特殊な使い方するとvariant絡みでエラーになる
- PostgreSQLのhstoreは文字列のみのハッシュなため使いどころが限定されそう
- Redisのモック用gemはFakeredisよりもMockRedisが良さ気
ツール雑感
Cucumber
いやー、しんどいですね。ステップ定義が別ファイルなのが。共通化するとgrepで探しづらくなりますし、逆にしないとファイルが別な意味がない。クライアントの要望もあって採用しているようですが、開発者だけで完結するのであればRSpecのfeature specがいいと思います。
Wercker
プライベートリポジトリでも無料で使えるCIサービス。ただ重めのテストが増えてきたせいか、コード以外の要因でよく失敗するようになりました。その都度Rebuildするのは不毛ですし、もはや無視するレベルになりつつあります。軽いテストしかないのであれば信頼したまま使えるかもしれません。そうでなければJenkinsを建てたほうがいいと思いますし、現プロジェクトも移行予定です。
Slack
チームに特化したコミュニケーションツール。無料。Mac/iOS/Androidアプリあり。チャンネルによる話題の分散と、豊富なAPI連携。PRやCIを通知してます。Skypeの煩わしさをすべて解決したような使用感で、かなり気に入りました。ただ1チームで1ウインドウのようなかたちになっているため、複数のチームで同時進行するような場合はやや使いづらいかもしれません。
全体雑感
ツール類はモダンなんですが、開発フローやソースコードは未熟な点が多いように見受けられます。PRはするものの2人以上LGTMでマージOKみたいなルールはなく、メインブランチで普通にテストが落ちたり、デバッグのputsが紛れ込んだこともあります。これにはフィリピン人の気質だったり会社のゆるい文化的なものが背景にあるかもしれません。
英語
相変わらず伸びてません。チャットだとなんとかなるんですが、会話だと聞き取れなかったりスムーズに伝えられなかったりということがあります。
また、なんとなく英語でツイートすることにしてみました。そしたらWerckerに[ci skip]がない件を拾ってもらえて本体に実装されたり*1、Ansibleの開発者からメンションきたり*2ということがありました。おそらく日本語だとスルーされたかもしれませんが、こういうやり取りできることが普通と思えるくらいまで続けてみたいですね。
やりたいこと
やはり開発フローの改善でしょうか。朝会/日報による見える化、ふりかえり/KPTによる改善、複数人でレビューする習慣、など。数カ月前にとてもいいチームで開発ができていた経験を、少しでも共有できたらと思います。あとは英語を話す機会を増やす意味でも、社内勉強会的な場で発表とかしてみたいですね。残りは1ヶ月ほどですが、積極的に動いてみたいと思います。
コミット数も上位キープしてみたいですね!
おまけ
Slackの体験、また他のコミュニティの活用例に感化されて、Idobataルームをつくってみました。
mtsmhack / lounge - Idobata (for Guest)
みたいな感じにできたらと思います。入退室/発言は自由なのでお気軽にどうぞ!