はじめに
2024 も ganyariya のエンジニア活動について振り返っていきます。
なお、私生活やゲームについては別の記事で振り返ります。
やったこと
会社
ganyariya はソーシャルゲームのバックエンドエンジニアとして働いており、今年で新卒 3 年目です。
チーム・仕事について少しずつ慣れ始めて、新しい挑戦をやらせていただいた一年でした。
チームリードを 1 年間つとめる
現在も所属するプロダクトにおいて、 2023/10 ~ 2024/11 までサーバチームのチームリードをやらせていただきました。
詳しくは以下です。
自分が新しい挑戦をしたくなった・組織としてチームリードを回していきたいため、チームリードを離れて現在はメンバーに戻って開発を頑張っています。
スケジュール・タスク管理や自チーム他チームとの相談などいろいろとさせていただき、「チームリードとはなんであるか?どうすれば仕事を進められるのか?」を理解でき、とてもありがたかったです。
アプリケーションインフラの理解を深める
社会人 3 年目になってくるとゲームサーバのアプリケーションコードについてはおおよそ理解できるようになってきました。
- DDD
- クリーンアーキテクチャ
- TDD / テスト
- 可読性の高いコード
- デザインパターン
- etc
そのため、今年は意識的にアプリケーションの外側、つまり ArgoCD, Kubernetes, Terraform, Jenkins, o11y (opentelemetry, datadog, grafana) のタスクを進めていました。
といっても、なかなかプロダクトでこれらを触る機会はないため個人で勉強したものも多いですが…。
これらについてやっていると自分はアプリケーションコードだけでなく、クラウドネイティブや o11y も結構好きなのだなと感じました。
CI/CD による自動化も好きであるため、来年以降は SRE へ将来的になれるような勉強を頑張っていこうと思います。
費用削減・パフォーマンス改善
年末は費用削減やパフォーマンス改善に着手していました。
API レスポンスが高速化され、必要なインフラリソースがかなり削減できました。
会社内にパフォーマンスチューニング、つまり ISUCON のようなことができることがまだまだ存在するのだと気づきました。
ずっとこれだけをやる、ということはできないため、ボトルネックを見つけたら定期的に改善していきたいです。
個人
リードになってから残業時間が N 倍にふえて、個人としての勉強時間はかなり減りました。
また、「決断すること」が増えて精神的に疲れてしまい、それの休息にあてる時間が必要でした。
それでもいくつかやったことがあるためそれについてまとめます。
自宅サーバを構築する
インフラについて詳しくなりたいため、 mini-pc を購入して以下を導入して勉強していました。
- Kubernetes (k3s)
- ArgoCD
- Misskey (k8s)
- External Secrets Operator
- Jenkins
- Loki
- Promtail
- Grafana
- Cloudflare Tunnel
現在も机の端っこでミニPCが動いており、かわいいなぁとみています。
勉強のためにもう1台ぐらい安いのを購入して、 ansible による自動セットアップなどいろいろ試したいですね。
技術書を読む
いい加減なテスト駆動開発を行っていたため、 t-wada さんが訳された Kent Beck さんの名著を読んで勉強しました。
今では職場のコーディングでは自分はできるだけ全部 TDD で実装するようにしています。
見通しがつかないコードについては Mock, Stub が最初の時点では多く出てきてしまい、デトロイト派のようなコードになってしまってうーんですね。
できるだけ古典派の視点にたって、つまりふるまいに対してテストを書くように心がけたいです。
いつの間にか第二版が出ていました…。
現在第 6 章まで進んでいるため、来年は最後まで読んで実装したいです。
こちらも第一部は読み終わっています。
来年は第二部以降から読んでいきたいです。
テストは本当によいものですね。
仕事でつかう技術を学ぶ
仕事で使いそうな技術について積極的に個人で勉強しました。
そして、個人で勉強した内容を仕事で活用し、より広げる、というサイクルを目指しました。
具体的には以下です。
- Kubernetes における Jenkins セットアップ
- Jenkins CasC
- jenkins-cli のよる plugin インストールと k8s 管理
- OpenTelemetry
- Jenkins のエージェントノード追加
- Ansible
- GCP Workload Identity
- External Secrets Operator
これらはどうしても個人での学習は限界があり、ベストプラクティスを学ぶことや規模を実現するのが難しいです。
そのため、50 % までを個人で学び、それを業務で 50 ~ 80% まで伸ばす、というのが良いのかなと気づけてともてよかったです。
Nvim 環境を 1 からセットアップする
VSCode が好きなのですがいい加減 Neovim だけで開発しないな〜という気持ちになりました。
これまでそのようなときには NvChad や Astronvim を使っていたのですが、そもそも Neovim の LSP やキーマップがどのように設定されているのかわからず、自分好みにセットアップできないという問題がありました。
そのため、1からセットアップすることで Lazy.nvim における設定のやり方や LSP, git-plugin, keymap, telescope の勉強ができました。
それでも VSCode が好きであるため Neovim を使うことは少ないですが、たまに小さなファイルを触ったり編集するときに Neovim が刺さってよいです。
ISUCON に参加する
ISUCON にチーム nanase として参加しました。
Ansible でインフラのセットアップを自動化しベンチも簡単に回せるようになってとてもよかったです。
一方で、 Go がほぼわからない、サーバの分割ができなかった、など反省点が多いため来年の ISUCON までにはここの「わからない」ボトルネックを解消します。
よかったところ
仕事でつかう技術について個人で勉強した
これまで個人で勉強する内容は「自分がきになるもの」「やりたいこと」が多く、すぐに役立つものではないことが多かったです。
緊急性が高くないため、他のやりたいことが出てしまうとそちらを優先してやりかけになってしまったり、完遂しても役にすぐ立つわけではない、ことが多かったです。
しかしことは「業務駆動開発」として、仕事で使うものの最初の一歩を個人でやるようになりました。
本当は職場でできればよいのですが本番のプロダクトコードが動いている環境ではなかなかやりづらく…
個人の環境であればいくらでもぶっ壊してよいため、気軽に勉強できました。
また、勉強した内容を仕事で更に深めることができ、よいサイクルがうまれてとてもよかったです。
来年もこの業務駆動開発は最優先で行いたいです。
リードを経験できた
1年間リードを経験させていただき
- コードレビュー
- 設計の勘所
- 前にでる積極性
- タスク・スケジュール管理
を勉強できました。
とくに「チームリードとはなにか」「マネージャーはどのようなことをするのか」を知ることができ、今後のキャリアプランを考えるうえでよい経験になりました。
本当にありがたい限りです…
だめだったところ
個人の勉強時間が確保できない
なにかとやることが多く、勉強時間が確保できないのがよくなかったです。
とくに、リードになってから精神的につらい日々が多く、つかれてすぐ寝たり好きなゲームや動画をみて精神を和らげる、という日々が多かったです。
来年はよりやるべきことを絞って、やらないことをきめて、私生活も大事にしながら勉強していきたいです。
来年の目標
仕事
クライアントエンジニアに転向する、が最大の目標です。
それまでは
- インフラに関する知識を深めてアウトプットして価値を生み出す
- 費用削減とパフォーマンス改善をして、費用効率を上げる
- サーバの施策をバグなく実装する
のを頑張りたいです。
もしよいタイミングがあったらクライアントに挑戦して、 Unity 側を学習・勉強してサーバ・クライアント両方わかるエンジニアになりたいです。
クライアント側のアセット管理やビルド管理、ユーザ・マスタデータ管理を学ぶことで、絶対にサーバエンジニアとしても良い経験になる、世界が広がるとおもうのですよね… 🤔
個人
上にあるほど優先度高です。
必要に応じて業務駆動開発をする
必要に応じて業務で必要になった知識を個人で勉強します(最優先・割り込みシグナル)。
Unity の勉強をしてノベルゲームを作成する
仕事のためにも Unity を勉強して、ノベルゲームをエンジンから作りたいです。
参考にしている動画シリーズがあるためそちらを参考にし、それができたら Lua にスクリプトを置き換えていく、自分好みのエンジンにする、に挑戦したいです。
枯れた技術・車輪の再発明の勉強をする
今年やりかけになってしまった本も含めて、以下の枯れた技術を勉強していきます。
#### 1 冊ずつ直列にやる
#### 並列を許容する
読むだけなので
インフラに詳しくなる
個人においては自宅サーバを拡張することでインフラに詳しくなっていきたいです。
- 新しいミニサーバを増やして Ansible で自動セットアップする
- 自宅内 DNS サーバを立てる
- 自分好みの linux distribution をつくる
などをやっていきたいですね。
最後に
2024 もありがとうございました。
来年はエンジニアとしてもっと成長できるように頑張ります。