2023年に開発部内で開催した改善の祭りの振り返りをします
この記事は matsuri technologies 株式会社 Advent Calendar 2023 の 3 日目の記事です。
matsuri technologies の開発部では、プロダクトの改善や技術的負債の解消(具体的には、ライブラリのバージョンアップや移行作業など)を行う際に、期間を定めて全チームで一斉に解消する活動(通称:祭り)を行っています。
2023 年に開催された祭りを振り返っていきます。
過去の祭りの例:
全ては振り返れないので、いくつかピックアップして振り返ります。
renovate をリポジトリを中心に導入しました。 バックエンド 10 リポジトリとフロントエンド 14 リポジトリに導入しました。
弊社では dependabot を使っていたこともありますが、renovate の方が高機能なので全体で renovate を使っていこうという方針になり、最近ではそちらを主に使っています。
Go の linter である golangci-lint を導入しました。 golangci-lint はかなり有用なものも含んでいるので、みんなで入れたいねということで導入しました。
これの導入をきっかけにバグに気づいて修正することができたものものあるので、そこもよかったです。 今回はあくまで導入がメインの目的で、既存のコードでエラーが出るようなものについては、一部 nolint で黙らせて進行したものもあります。
https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/migrating-v2.html
弊社では AWS 上の IaC で全面的に aws-cdk を採用していますが、メジャーバージョンのアップデートの作業があったのでみんなでやりました。
aws-cdk-lib
へ移行することで個別にたくさんのパッケージをインストールする必要がなくなったので、依存関係の管理が楽になったかなと思います。
https://reactrouter.com/en/main/upgrading/v5
React Router の v6 が出てしばらく時間も経ったので、v5 から移行しました。 react-router-dom-v5-compat もありますが、どのチームも一度にあげることを選択したようです。
かなり大きめの変更になったプロダクトもありましたが、無事に移行ができてよかったです。
TypeScript 5.0 で非推奨になった suppressImplicitAnyIndexErrors を tsconfig.json から削除する祭りを行いました。 これを削除することで型チェックが厳しくなり、object の index アクセスで間違った型経由でアクセスしていたようなものをエラーにすることができます。
型チェッカーが厳しい方がバグを防げて有用であるため、削除する方向で祭りを開催しました。
実際にこの移行に際して、明らかにバグと思われる(この indexing だと常に undefined しか返さないと思われる)ようなコードをいくつか発見・修正できたので有意義な祭りだったかなと思います。
以前に Matsuri Backend Weekly でも触れたのですが、AWS Lambda の Go1.x ランタイムのサポートが 2023 年の年末で終了するとのことで、移行作業を行いました。
移行する過程で、AWS のアカウントにかなり古い Lambda の関数が残っていることがわかって最終呼び出し日時を調べたりなど、事前準備は少し大変だったかなと思います。
無事に移行できて、現在も問題なく動いているのでよかったです。
この他にも、社内で開発・利用をしている UI ライブラリのバージョンアップやドキュメントに関する祭りなど、2023 年も開発部内で様々な改善ができたかなと思っています。
2024 年も引き続き改善に取り組んでいきたいと思います!
また、1 年を振り返って書くのは意外と難しいので、もうちょっとこまめに祭りの振り返り記事などを書いていきたいと思いました!(自戒を込めて)