本日で3ヶ月間の試用期間を終了し、正式雇用になった。
上の写真はトレタのオフィス。いつもはエンジニアがカウンターの上にPCを置いて立って仕事したりしている。
年度末という訳でもないのだが、いい区切りなので、入社してからの3ヶ月でこれまでに自分がやったことを振り返っておく。
やったこと
開発フロー整備
- サーバーサイドチームのslack channelを作った
- 開発支援用のhubotを導入して以下のpluginを入れて開発支援に使うようにした
- サーバーサイドチーム定例会を導入した(ついでに議事録のフォーマットも決めて定例会までに各自の進捗を記入しておく運用にした)
- 一人だけが担当していたレビューをチーム全員で分担してやるようにした(前述の
hubot-reviewer-lotto
で公平に割り当てている) - 不定期だったデプロイを週1回決まった曜日の決まった時間にやるようにして、いつまでにマージされたPRがいつdeployされるのかを明確にする1周間単位の開発フローを整備した
- 既存コードのspecの書き方が微妙だったのでrspecガイドラインを書いてrspec3な書き方をメンバーに啓蒙した(あとDRYにして再利用性を高める方法も)
- jenkinsで
[ci skip]
ってcommit logに入れたらbuildをskipするplugin入れた(GitHub pull request builder plugin
を使ってなかったので) - CI時にCoverageレポートを残すようにした
Railsのコード整備
- Bugsnag入れてRailsのエラーを通知するようにした
- rails-erdを導入してER図を生成してesa.ioに置いてあるdocumentに貼り付けた
- bulletを導入してスロークエリを駆逐した(あまり無かったけど)
- specでviewの内容をほとんどチェックしていなかったのでrspecのconfigで
render_views = true
にしてviewでエラー出ていないかだけでも検知するようにした - 多言語対応のサポートのためにi18n-tasksを導入してlocaleの設定漏れを検知できるようにした
- ローカル環境でメール本文をチェックする方法がなかったのでletter_opnerを導入してブラウザでメール本文を確認できるようにした
config/*.yml
系の設定ファイルを整理してRails.envごとにどの値が使われているかわかりやすくした- json生成にjbuilderを使っていたのでactivemode-serializerを導入して新規に作るjsonについてはこちらを使うようにした
機能開発
- sidekiq-cron + SNS + SQS + shoryukenで非同期で複数サーバでの分散処理を行うバッチを書いた
- 特定のmodelが更新されたらsidekiqでSNSにpublishするconcernを書いた
- Bugsnag入れて見つけたバグを結構なおした
- 管理画面がいろいろ危なかったのでsubmitボタンに
data: {confirm: '消していい?'}
とかdata: { disable_with: '送信中...' }
みたいなのを入れまくって安全にした - 管理画面からシステム系の設定を色々いじれる画面を追加した
- 手運用でサポートしていた社内業務のいくつかを管理画面からできるようにしてエンジニアの負担を減らした
その他
- 新機能の要件定義や設計
- 営業同行して、実際の営業でどのようにお客様にトレタを説明しているかを見せてもらった
- サービス連携している他社との打ち合わせに出て連携部分の仕様調整とかをした
- 「SEOみたいにwantedlyの求人タイトル変えてみたら何かいいことあるかも」という雑な提案をして文言変えたらちょっとPVと応募が増えた
- slackに黄色い象さんのアイコンを追加した
仕事以外
- shoryukenをいじっていてqueueの名前にsymbolを使うと挙動がおかしくなったので簡単なPRを出して無事マージされた(これが人生初のOSS contributeになった)
- railsのソースを読んでいて思いついたgemを2個納品した github.com github.com
commit logや日報を見ながらまとめてみた。
この3ヶ月という期間だけ見ると、受託開発をしていた頃と比べるとコードを書く量は減った印象で、代わりに開発体制の整備やこまごまとしたコードの整備をしている時間が結構長かった。自由にやらせてもらえたので「これやっといた方がいいな」と思うことは一通りやっておいた。
トレタのサーバサイドチームは現在正社員3名 + 業務委託1名の計4人のメンバーで開発している。 自分が入る前は3人だったから、まだチームとしての開発体制が確立していないようだったので、今後人数が増えても破綻しないように開発フローの整備もやらせてもらった(というか勝手にやったw)。3ヶ月あれこれやってみて、今はだいぶ以前と比べるとチーム全体のスループットが上がったのではないかと思う。今後も継続して開発チームの仕組みづくりの改善をしていきたいと思う。
自分が入社する少し前まで、トレタは主なクライアントであるiPadアプリの機能開発やUI改善を中心に開発が行われてきたが、今年に入ってからはサーバサイド側で完結する開発タスクが増えてきている。サービスの成長と開発チームとしての成長の両面に貢献しながら、気を抜かずにこれからもがんばっていきたい。