
余計なuseMemoを1つ消したらtscが135秒高速化した話
DRANK
はじめに大規模なReact + TypeScriptプロジェクトにおいて、無意味なオブジェクトマッピングを行うuseMemoを1つ削除することで、TypeScriptコンパイル時間が146秒から11秒に短縮された(92%改善)事例について報告します。根本原因の完全な特定には至らなかったものの、実際に発生した現象と問題特定のプロセスを記録します。本件では、ある程度論理的に原因の当たりをつけたあと、先入観を排して特定するためにAIコーディングエージェントを活用して愚直な二分探索での検証を行わせ、最終的に135秒にも及ぶ遅延の原因となっていた行を特定できました。問題の発見大規模なReact + TypeScriptプロジェクトにおいて、yarn typecheckの実行時間が異常に長くなる現象が発生しました。146秒(2分26秒)という実行時間は、開発効率に深刻な影響を与えるレベルでした。TypeScript Traceによる問題ファイルの特定問題の詳細な分析のため、tsc --generateTraceを使用してパフォーマンストレースを取得しました:$ tsc --noEmit --generateTrace trace このコマンドは、TypeScriptコンパイラの内部処理を詳細に記録し、Chrome DevToolsのTracing機能で可視化できるトレースファイルを…