Gunosy Tech Blog

Gunosy Tech Blogは株式会社Gunosyのエンジニアが知見を共有する技術ブログです。

Gunosy に転職して 1 年経ったので振り返っていく

はじめに

こんにちは、広告技術部の fujishiro です。

ゼルダの伝説 ティアーズ オブ ザ キングダムが発売されましたね。私は乗り遅れてしまっていて、そもそもゼルダの伝説をやったことがないのですが、今作は盛り上がりがすごいので気になっています。

さて先日、私が Gunosy に転職して 1 年が経ったので、転職してからの 1 年間の振り返りとしてこれまで取り組んできたことをざっくりとご紹介できればと思います。

広告技術部での初めの 1 年間はこんな感じでしたよということをふんわり知っていただければ幸いです。

Gunosy に転職した理由

まず、Gunosy での取り組みの前に、Gunosy に転職した理由について簡単にご紹介します。

転職前の自分は、主に Laravel、CakePHP と React を使った Web アプリケーションの開発を約 2 年ほどしていたのですが、自分の中でもっと深い知識や触ったことのない技術を学びたいという思いが強くあり、転職を考えるようになりました。

転職を考えるようになってからは色々な企業の求人を見ましたが、その中で Gunosy に転職した理由としては以下のようなものがあります。

  • Golang を使った高トラフィックなアプリケーションに対する知見が豊富
  • Kubernetes を使ったインフラの知見が豊富
  • 小規模ではなく大規模なアプリケーションをインフラからフロントエンド、CI/CD などに至るまで幅広く触れる
  • 自分が成長できる環境だと感じた

特に今まで自分が触ったことのない技術を深く扱っている企業であれば、その分自分の知らない考え方や知識を持っている人が多いと感じましたし、転職後にたくさんの発見があるのではないかと感じていました。 そして、面接のタイミングで今のチームメンバーと話をしていく中で自分が成長できる環境だと感じたので、Gunosy で働きたいと思い、転職を決めました。

今は実際に転職してみて自分の中で日々成長できる環境だと感じていますし、目標となるエンジニアやお手本となる方が社内にたくさんいるので、これからもより成長できる環境であると感じています。

Gunosy での取り組み

ここからは Gunosy に転職してから今までやってきたタスクや参加したプロジェクトで私が印象に残っているものをざっくりと時系列で上げていこうと思います。

ちなみに、私は 5 月の半ばから入社しているので、5 月の半ばから約 1 年間の話になります。

5 月 - 6 月

Gunosy Ads 管理画面の React の TypeScript 化

この期間では色々広告技術部の仕事について把握しながら、弊チームが管理している Gunosy Ads の管理画面の React の TypeScript 化を行いました。

広告主様が広告の入稿をおこなう Gunosy Ads の管理画面を弊チームは管理しており、バックエンドが Ruby on Rails でフロントエンドが全画面ではないですが一部 React で書かれています。

しかし、React に関してはこの時はまだ一部 JavaScript で書かれており、ちょうど弊チームが TypeScript に移行作業をおこなっているタイミングだったので、これが私の Gunosy での初タスクになりました。

React は前職でも少し触っていたので全くの初見というわけではなかったですが、TypeScript 自体は初めて触ったので「TypeScript なんもわからね〜!」と叫びながらやっていたことを今でも覚えています。

ちなみにこの期間に プログラミングTypeScript を購入して読んでいたのですが、この本がとてもわかりやすく、タスクを進める上で非常に参考になりました。

www.oreilly.co.jp

また上記のタスクとは別に、チームメンバーが私のオンボーディング用にチームで管理している大半のリポジトリを触れるタスクを用意してくれていたので、色々なリポジトリに触れながら、広告技術部の仕事について大まかに把握することができました。

6 月 - 9 月

この期間で印象に残っているタスクとしては、広告フィードバック機能と管理画面の GitOps 化、それと管理画面のフロント画面 React 化モブプログラミングです。

広告フィードバック機能の開発

広告フィードバック機能は、現在 auサービスToday とニュースパスで導入されている機能で、表示されている広告に対してユーザーがフィードバックを送ることができるものです。 今まで広告に対してフィードバックを送る機能は弊社になかったので、この開発で初の導入となりました。

ここでは自分は広告技術部としてアプリチームのメンバーと連携をとり、広告フィードバック機能の開発を進めていきました。 アプリチームとは非常に綿密にコミュニケーションを取って開発を進めることができたので、 Gunosy に転職後、これが初のチーム外との連携プロジェクトだったのですが、安心して開発を進めることができました。

管理画面の GitOps 化

次に印象に残っているタスクとして、管理画面の GitOps 化があります。 これは Gunosy Ads の管理画面の CI の実行時間が長いことによる緊急時の対応のしづらさなどの問題を解決するためにおこなったもので、Argo CD を導入して GitOps 化をしました。

具体的な GitOps の詳細については以前チームで記事を書いているので、そちらを読んでもらえるとイメージがつきやすいかと思います。

tech.gunosy.io

tech.gunosy.io

tech.gunosy.io

私が GitOps について全く知識がない上に Kubernetes もよくわかっていなく、このタイミングで初めて Kubernetes のマニフェストファイルをしっかり触ったので、 Argo CD の導入ってなんなんだろう...? という状態でした。 そこから GitOps についての勉強をしつつ、チームメンバーに助けてもらいながら自身のできる作業を進めていきました。

また、CI/CD 周りもしっかり触るのが初めてだったので、このタスクを通して学ぶことがとても多かったです。

管理画面のフロント画面 React 化モブプログラミング

そして、この期間に印象に残っているもう一つのタスクとして、管理画面のフロント画面 React 化モブプログラミングがあります。

これは、管理画面のフロント画面の React で書かれていないページを React で書き直すというタスクで、このタスクはチームメンバーでモブプログラミングをしながら進めていきました。

モブプログラミングは、初めての経験でしたが、チームメンバーと一緒にコードを書いていくことで、自分の知らない知識を吸収することができるので、とても良い経験になりました。また、モブプログラミングをすることで、チームメンバーに口頭でちょっとした質問もできるため、管理画面の知識の理解にもつながって、個人的に「モブプロとてもいいなあ」と思っていました。

10 月 - 1 月

広告スコアリングサーバのリプレース モブプログラミング

この期間は、広告スコアリングサーバのリプレースのプロジェクトに参加していました。 これは、広告配信サーバとは別に、広告のスコアリングを行う Golang 製のサーバがあったのですが、これを Rust と Python で書き直すというもので、複数チームのメンバーが参加していた 1 年掛かりの大規模プロジェクトでした。

広告技術部は広告関連のサーバのインフラ管理も行っているので、ここでは主にリプレースしたアプリケーションを EKS にデプロイする部分を担当する形で途中から参加していました。

このプロジェクトは、プロジェクトメンバーとモブプログラミングをしながら進めていきましたが、とにかく難しかったです。 この 1 年やってきたことの中で、個人的に一番難しいと感じたプロジェクトだったと思います。 毎日モブプロしていく中で自分の技術力の無さを日々痛感していて、ついていくので精一杯だった記憶があります。

ただ、プロジェクトメンバーに何度も助けられて、なんとか自分もリリースまで見届けられたので、この 1 年で 1 番と言っていいほど学びのあったプロジェクトでした。プロジェクトメンバーには本当に感謝しかありません。

2 月 - 4 月

Certified Kubernetes Application Developer (CKAD) の取得

これはタスクではないですが、2 月に Certified Kubernetes Application Developer (CKAD) を取得することができました。 広告技術部で管理しているアプリケーションは基本的に EKS 上にデプロイされているので、Kubernetes を触る機会が多く、より Kubernetes について理解を深めるために取得しました。

1 年前の私では、Kubernetes について全く知識がなく、絶対に取れなかった資格なので Gunosy でのタスクを通して Kubernetes について理解を深め、結果として資格という形で残るものを取得できたことはとても嬉しかったです。 どこかのタイミングで次は Certified Kubernetes Administrator (CKA) にも挑戦したいと思っています。

CKAD の認定証
CKAD の認定証

管理画面の Rails6 アップグレード

この期間で印象に残っているタスクは、管理画面の Rails6 アップグレードです。 ここでは長年弊チームで管理している Gunosy Ads の管理画面が、今まで Rails 5.2 系で動いていたので Rails 6.0 系にアップグレードしました。

正直大変さで言うと、これは私が Gunosy に転職して取り組んできたタスクの中でダントツで大変だった気がしています。

Rails 6.0 系にアップグレードすることで、Rails 5.2 系で使っていた Gem が一部使えなくなったり、挙動の変更などでバグが発生してテストが大量に落ちてしまったりと、アップグレードが完了するまでに予想以上に時間がかかってしまいました。 このタスクを進めている期間は、全然上手くいかなくて毎日叫んでました(笑)

特に、前回の記事で書いていますが Rails6 にアップグレードしたタイミングで update_all が一部急激に遅くなった問題が発生してしまって、その原因がわかっていなかった時などは本当に心が折れそうになっていました。

tech.gunosy.io

ただチームメンバーにサポートしてもらいながら、なんとかアップグレードを完了できた時は本当に嬉しかったですし、自信にもつながりました。

結果的には、このタスクを通して得られたものはとても大きかったと感じているので、取り組んで良かったと思っています。

GitHub Actions 移行

もう一つ印象に残っているタスクとしては、GitHub Actions 移行です。

これは広告技術部が管理しているリポジトリの CI/CD 環境を GitHub Actions に移行するタスクで、これまで CircleCI で CI/CD をしていたのを GitHub Actions に移行しました。

管理しているリポジトリの数がそこそこあることもあり、様々なリポジトリの CI/CD 環境を GitHub Actions に移行することができたので、GitHub Actions の知識をかなり深めることができました。

特に Terraform のコードを管理しているリポジトリの CI/CD 環境を GitHub Actions に移行した時は、tfaction を導入したりして、書いていてとても楽しかったです。

1 年間を振り返って

1 年経って感じることは、本当に充実した 1 年を過ごせたなということです。

今月は、Gunosy Ads の管理画面を Ruby2 から Ruby3 にアップグレードすることもできており、もともと転職する前にやりたいと思っていたこと以上に、色々なことに挑戦することができていて、チームメンバーにとても恵まれているなと感じています。

Gunosy に転職しなければ今の私はなかったと思いますし、ここまでの経験も 1 年間でできていなかったと思うので、本当に転職して良かったと思っています。

まとめ

今回は、Gunosy に転職して 1 年経ったので、1 年間の取り組みと振り返りを書いてみました。

まだまだ理解できていない部分も多いですし、やるべきことはたくさんあるので、これからも様々なことにトライしてより活躍できる人材になれるように頑張っていきたいと思います。