2020 年振り返りを簡単にまとめました。 知人向けの近況報告のつもりです。
OSS 活動とかは、さすがに書き出すと細かい感想がどんどん出てくることに気づいたので 来年以降は別にまとめるとかしてもっとコンパクトな記事にしたいと、書きながら思いました。 特に同業者向けというつもりでもなかったので。
私生活
- コロナの影響
- リモートワークが常態化するにつれて、UberEats で朝はスタバ、昼はいきなりステーキの生活に違和感がなくなってきました。
- 同人イベント(コミケなど)がすべてなくなったので、それらのお手伝い業務も今年はありませんでした。
- 2, 3, 4 月は NYTimes などの詳細なコロナ関連ニュースを毎日読み漁ってました。その後あまり読まなくなりましたが、また徐々に再開してます。
- 子供
- 2020 年は、風邪をひかないこと・絵本をたくさん読むこと・歌を大きな声で歌うこと・ものを動かしたらもとに戻すこと・日光をたくさん浴びることを目標に掲げていました。ちゃんとやれていたと思います。
- 最近は偏食をはじめイヤイヤ期が進行してきたので、この状況をどう打開するかが目下の課題です。
- 最近ハマってること
- Blackpink。Netflix の BLACKPINK: Light Up the Sky を見てから。Quora のニュースレターが毎日 Blackpink のネタを送ってきてリンクを押すとさらに集中的にターゲットされるというサイクルに現在嵌ってます。Jennie は怠惰ではないと思いますが、このドキュメンタリーを見た上でもそう思うのか他の人の意見が気になります。
仕事
- 7 月に転職しました。パラレル というスマホゲーム専用ボイチャアプリを開発してます。
- 前職のメゾン株式会社は 2017 年 11 月から 2020 年 6 月までの 2 年 8 ヶ月在籍してました。0 -> 1 で自由に作る機会がたくさんあり良い経験になりました。最後は、バックエンドが SpringBoot/RabbitMQ/PostgreSQL/AppEngine で、フロントが TypeScript/Next.js(SSR) でネイティブアプリ用には WebView をラップする SDK(Swift/Kotlin)を実装して、HTTP(OpenAPI)/WebSocket でやり取りするコマースアプリを作ってました。openapi generator を使って通信インターフェースのコードを両端向けに生成するようにしてたのでそれは楽でしたね。
- 伸び盛りのスタートアップということでリクルーティングとキャッチアップを兼ねて、以前一緒に働いたことがあるソフトウェアエンジニアを中心にランチやディナーなどお話する機会が例年よりも多かったです。
- おかげさまで、良いチームで働けてます。
- 今後も外のエンジニアとお話する機会を作っていくと思うので、パラレルのサービス的な成長はこちらを参照いただきつつ、ここでは簡単にパラレルの技術紹介を去年を振り返りつつ書いておきます。パラレルの大まかな技術構成は、バックエンドが Rails/Kubernetes/Sidekiq/Redis/MySQL/Spanner/BigQuery/Stackdriver で、クライアントが iOS アプリ(Swift)と Android アプリ(ReactNative)、通信形式が HTTP と WebSocket、パーティゲームで一部外部ゲームエンジンを利用、最後に音声通話機能で成り立ってます。プロジェクト管理は GitHub Issue/Project です。技術面に関しては当初すべて細かいところまでみてましたが、シニアなクライアントエンジニアがそれぞれ途中から入ってくれたこともあり、障害報を書くごとに徐々に去年はじめから一年通して会社として課題になっていたサーバー側の負荷対策・コスト低減・品質向上をメインでみるようになってました。チームとしての成果を 1 月現在から振り返ると、突発的な負荷増によるサービスダウンは 公式上 9/5 21 時を最後に解消、アクセス増と新機能追加に比例して増え続けていたインフラコストは大きく削減かつ増加ペースも抑制、目立ったアプリケーションエラーは概ね解消してログと監視体制も見通しよく整備、できたと思います。今年はこの分野に関して言うと、自分のサービス・システム理解もようやく揃ってきて、またシステムの可視化も徐々に整ってきたので、より詳細まで妥協なく突き詰めていきたいと思ってます。もう少し具体的な話(例えば これ)は事象発生から解決に至るまでの流れを解説する読み物としては多少面白みがあると思いつつ長くなるので別エントリにまとめる(か興味ある人に口頭で紹介する :) )ことにして、このエントリではこれくらいの抽象的な話でとどめておきます。
OSS 活動
- 全体的には、以前公開したリポジトリに来る issue や PR に対応することが多かったです。
- 他には、protolint に関係する PR を他に送る機会も何度かありました。
- このリポジトリは、いまだにコンスタントに issue やら PR やらをもらいます。スターもじみじみ増えている様子。
- 今年対応した中だと、改行なしで要素が入れ子になっているときに、正しいインデント幅に書き換えてついでに改行も入れる修正 は久しぶりに Go でしっかりコード書いたなという気持ちになりました。自分ならそもそも要素入れ子にしないで最初から改行するので、こういう修正要望は自分からは出てこないわけで OSS ならではだなと思いました。起票者の強い想いに答えました。
- このリポジトリは、protolint が依存しているパーサーなので、なんだかんだ言ってそちらの都合で気軽に修正を加えられていたのですが、最近 Godoc Links don't work と教えてもらって pkg.go.dev を確認した際に、https://github.com/apigee/registry(感想: https://github.com/grpc/grpc-swift でよく見たアイコンがある) がこのパーサーに依存していることを知りました。それ以来、後方互換性をより強く意識するようになりました。
- 今年対応した中だと、grpc-gateway のアノテーションを含むオプションをパースできるようにする改修 が記憶に新しいです。issue で a_bit_of_everything.proto をパースできるようにするという課題を与えられたので、自分がこのアノテーションをそもそも使ったこともないためモチベーションがそれほどあったわけではなかったのだけど、一度テストケースとしてパスできるようになると今後これに悩まされなくて済むわけで、やってみると達成感がけっこうありました。
- このリポジトリは、使い方の質問やバグレポートの issue を受け取ることが未だに多いです。手元で再現しないバグレポートもけっこうあります。なぜかプロダクションで使ってくれているユーザーにロシア系の人が多いみたいで英語での意思疎通が難しいことも一因です。ロシア語っぽい音声を再生するアプリをデバッグさせられたときは何が正解かわからなくてちょっと笑いました。押しが強くて個性なのか英語力不足から来るものか毎回不思議です。
- 今年対応した中だと、再生速度を変更できるようにする改修 が目立った機能追加ですね。
- このリポジトリは、intellij のプラグインを管理してます。久しぶりに管理画面を覗いてみたところ、累計ダウンロード数が 11,084(ユニークダウンロード数は 8,113)でした。いつの間にか 10000 を超えてました。たまに Twitter で言及されているのを読む以外、特に具体的なフィードバックをもらうわけでもないので忘れがちですが、こういうのを見るとせめて保守はちゃんとしようと思い出させてくれますね。
- 今年は、依存している protostuff/protobuf-jetbrains-plugin が deprecated になったので別のパッケージに依存するように改修しました。
- このリポジトリは、vim のプラグインを管理してます。
- もともと ale linter/fixer だけに対応していましたが、syntastic でも lint を動かしたいという feature request を受け取ったので対応しました。vim-syntastic リポジトリに PR を送ってほしいと言われて検討しましたが、新規のプラグイン追加 PR は受け付けていないようなので、このリポジトリに追加してます。
他リポジトリに送った PR は次の通り。
- super-linter に protolint サポートを追加する改修
- GitHub Action は plexsystems/protolint-action を別の人が以前作ってくれていたり、tensorflow/tfx が CI で利用していることはもともと知ってたので、CI 需要は一定ありそうということで勢いで作成しました。
- analysis-tools-dev/static-analysis に protolint 載せてもらう PR
- どこかの issue で掲載基準を説明していて、満たしていたので作成しました。
- 公式サイトで protobuf のサードパーティツールリストを管理しているのでそこに protolint 関連で作ったものを載せてもらう PR