seri::diary

プログラミングのこととかポエムとか

トレタに入社してから3ヶ月経ったので所感など

f:id:serihiro:20160203125035j:plain

本日で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のエラーをslackに通知するようにした
  • 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についてはこちらを使うようにした
  • やたら時間がかかるspecを特定してファイル分割したりテスト内容を最適化するなどして高速化した
  • 時間帯とか条件に応じてたまに落ちるspecを修正した

機能開発

  • 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改善を中心に開発が行われてきたが、今年に入ってからはサーバサイド側で完結する開発タスクが増えてきている。サービスの成長と開発チームとしての成長の両面に貢献しながら、気を抜かずにこれからもがんばっていきたい。

トレタは3,000万人の予約を支えるRailsエンジニアやインフラエンジニアやiOSエンジニアを募集しています。

www.wantedly.com www.wantedly.com www.wantedly.com