大規模ゲームサーバーのScala 2.13からScala 3への移行:1年にわたる冒険

2025-02-06
大規模ゲームサーバーのScala 2.13からScala 3への移行:1年にわたる冒険

この記事では、4年以上運用されている本番環境のマルチプレイヤーモバイルゲームサーバーをScala 2.13からScala 3に移行した著者の経験について詳述しています。最初の試みは、Scala 3で主要な機能(マクロアノテーション、型投影など)が削除されたことと、大規模なコード変更が必要だったために失敗しました。1年後、著者はScala 2のコードベースにScala 3の構文を先行適用し、IntelliJのコード検査ツール、Monocleレンズを生成するカスタムsbtソースジェネレーター、型投影に対する創造的な回避策などを用いた多面的なアプローチにより、移行を成功させました。依存関係の競合やコンパイル時間の遅延といった課題も発生しましたが、ライブラリのフォーク、Scala 3のTuple.Mapを使ったコード最適化などの方法で解決しました。障害はありましたが、この移行はScala 3のメタプログラミング機能の力と価値を浮き彫りにしています。

開発 移行