Wantedlyのサマーインターンに参加した

8/20〜9/21までの5週間、Wantedlyのサマーインターンに参加しました。

wantedlyinc.com

本来は9/7までの予定でしたが、期間を延長していただきました(後述)。

やったこと

パフォーマンスの改善

Wantedly Peopleのoptionsという設定値を管理するマイクロサービスのパフォーマンスを改善することになりました。 optionsについては資料が公開されています。

speakerdeck.com

最初の1週間はoptionsに慣れるためにリファクタリングのようなことをして、その後の2週間でボトルネックの調査と実装をしました。 optionsはDBとのラウンドトリップタイムがボトルネックになっていたので、DBのスキーマやクエリを改善していきました。 optionsはGoで書かれていますがDBのマイグレーションRubyでされていたので、Rubyバッチ処理を書いたりもしました。

Rubyを書いた経験は高専1年生の時に2、3日でTwitter APIRailsを使ったwebアプリを作った程度でしたが、なんとかなりました。

最後にmasterにマージされ、本番環境でoptionsのレスポンスタイムが約1/2になりテンションが上がりました。

また、最後の週にメンターさんからインターンを延長しないかと誘われたので、インターンを2週間延長することに決めました。

マイクロサービスへの切り出し

延長した2週間のインターンでは、Wantedly VisitとWantedly PeopleのRailsアプリに実装されている機能を共通のマイクロサービスに切り出すタスクに取り組みました。 1週間でWantedly Visit、People、ChatのRailsアプリの切り出す機能のコードを読み、マイクロサービスのAPIを設計しました。特にWantedly Visitは、Wantedlyの歴史が積み重なったモノリシックで巨大なRailsアプリなので、読み応えがあります。

最後の週でマイクロサービスのAPIを実装に取り掛かりました。 この時に、DBマイグレーションツールの ridgepole を新しく導入してみました。 ridgepole はRubyDSLでDBのschemaを書けばいい感じに差分を見てマイグレーションしてくれるので、シンプルで使いやすいかなと思います。 また、ORMには SQLBoiler を使いました。

最後の2日でWantedly VisitとPeopleのRailsアプリを一部書き換えてデモ動画を撮影し、金曜日の全社員ミィーティング「Demo Day」で発表させていただきました。

ご飯

オフィスのある白金台はおしゃれな飲食店が多いです。ちょっと値段が高いので気をつけましょう。 f:id:gedorinku:20180930180325j:plain

時々オフィスで夕ご飯が食べられるので、ほぼ毎回食べてました。 f:id:gedorinku:20180930180122j:plain

まとめ

最初の3週間はほとんどずっとコードを書いていて、その期間だけで200 commitsくらいできたし、ちゃんと動けばproductionに反映されるのですごく楽しかったです。 f:id:gedorinku:20180930172204p:plain

また、インターン中にSQLBoilerのバグを踏んだので、帰ってからプルリクエストを出したらマージされました。

github.com

このインターンでは交通費と宿泊場所と日給1.5万円がいただけました。メンターさんも1人か2人につき1人ついていただけて体験が良かったと思います。 学校に募集が来る会社以外でインターン先を探すプロラボ部員とかは、検討してみてください。

最後に、5週間メンターをしてくださった @izumin5210 さんありがとうございました。