2022年1月に今いる会社に転職して、もう3ヶ月経った。
今いる部署は技術研究をもとにプロダクトを開発することが多いので、暇なときは暇で忙しいときは忙しいらしい。
が、最初の2週間ぐらいは様子見で細かいタスクを振ってもらったが、それ以降すぐに既存アプリケーションのリアーキテクトプロジェクトに参加させてもらえたり、現在はそれと並行で新しいプロジェクトの管理画面を全部任せるね!って言ってもらえたりでやることが多いのでめちゃめちゃ楽しい!
既存アプリケーションに関しては、性能の事情から部分的にRustを使ってみようか!ということになり、CQRSアーキテクチャパターンで作られたアプリケーションのReadModelUpdater部分をRustで実装するタスクを任せてもらった。
Rustに関してはチュートリアルを軽くやったことしかなかったので、最初はとにかく書いてもコンパイルが通らない、どうやって書けばコンパイルが通るのか本当に分からずで苦労した(今もすんなりコンパイルは通せないから何回も書き直したりするけど、前よりマシだと思う)
また、非同期でメッセージの処理をしたり、Graceful Shutdownの実装のためにtokio
を使ってごにょごにょやっていて、これも型の問題でいろいろ苦労した。
あと、そもそものモデリング力不足や実装力の問題で丁寧にレビューもらったりした(上長には感謝しかない🙏)
前職でコードを書いたり本読んで学んでいたつもりだったけど、環境に甘えすぎていた部分があったなと反省している。
そのあとは、Rust製のGraphQLサーバーを一部実装・修正をした。
そもそもRESTful APIしか触ってこなかったので、またここでも学び必須モードになり、ひたすらRustのライブラリであるasync-graphql
を調べたり、そもそもGraphQLってどんなもんなんだというのを調べたりしながら、実装・修正をしていた。
未だにGraphQLに関しては理解は浅いと思うし、エラーハンドリングとかのベストプラクティスってどうなのよ!っていうのはある。
新しいプロジェクトがそろそろ始まるよって段階で、上長とプロジェクト全体像のブレストしたりイベントストーミングしたりドメインイベントの発生源探したり、こういうモデルが必要だよねみたいな話をしたりして、このような取り組みはかなり意味のある時間だし、時間取って付き合ってもらってありがたいなと感謝している。
戦術的DDDで書かれたプロジェクトの機能追加、修正、保守といったことは経験あるけど、一からドメインイベント探してモデリングするみたいな経験は今まで正直なかったので、本当に学びしかないなと思ってやっていた。
ちなみに、新しいプロジェクトで書く言語はGoなのでこれがまた楽しみである!正直、チームで使う言語に強いこだわりはなくて保守・運用が楽になったり、いまチームが抱えている問題を解決できる言語であれば正直何でも良い。それよりも、新しい言語や手法を学ぶコストが〜と言われて選択肢を狭められる方が嫌だから。
とにかくいろいろ雑に書いたけど、新しい環境を楽しめていると思う。そして、チームメンバーも良い人が多いし、やっていき・のっていき精神を持つ人が多いからこういうことを取り入れよう!学ぼう!と言いやすいチームだなと思う。
今の環境は自分があまり触れてこなかった技術に触れる機会が多すぎるので毎日学ぶことが多い。というか学ばないとついていけないんじゃないか?という不安は常にあるけど、それを乗り越えてチームにより貢献できる人になりたいとは思っている。あと大事なことだけど、ちゃんと給料上げてもらいたいから学んでそれを仕事につなげて結果を出していきたいところ(お金はすべてを癒すのさ)
自分もいい歳なので、チームを技術面でもっと引っ張っていけるように技術を研鑽して日々を積み重ねていきたい所存です。