ゲームのみならず、開発の終盤になると、急に問題が増えたように感じることがあります。
パフォーマンスが足りない。
設計が複雑すぎる。
仕様変更に耐えられない。
修正が修正を呼ぶ。
「なぜもっと早く気づけなかったのか」と言われますが、多くの場合、問題は突然発生したわけではありません。
問題は、後半で“顕在化”しただけです。
実は前半で決まっていたもの
開発の前半では、主に以下のようなことが決まります。
・アーキテクチャの方向性
・データ構造の設計
・責務の分割
・共通化の範囲
・拡張を想定するかどうか
これらは一見すると「まだ柔らかい」ように見えます。しかし実際には、ここで決めたことが後半の自由度を大きく制限します。
設計とは、未来の選択肢を減らす行為でもあります。
選択肢を減らすからこそ、チームは前に進めます。
しかし同時に、後戻りは難しくなります。
なぜ前半では問題にならなかったのか
前半では、まだデータ量も少なく、機能も限定的です。
・ユーザー数は想定値
・オブジェクト数は少ない
・処理パスは単純
つまり、制約がまだ顕在化していません。
設計上の“ほころび”があっても、条件が軽いため表面化しないのです。
そのため、違和感があっても「今は動いているから」と先送りされやすくなります。
後半で何が起きてくるのか
後半になると、状況が変わります。
・データ量が増える
・機能同士が干渉する
・仕様変更が重なる
・調整の回数が増える
ここで初めて、前半の判断が“制約”として姿を現します。
「なぜこんなに修正が重いのか」
「なぜ一部を直すと他も壊れるのか」
それは、後半で何かを間違えたからではありません。
前半で“決められたこと”が、効いてきただけです。
終盤の問題は、能力不足ではない
終盤でトラブルが増えると、現場は焦ります。
・実装が甘かったのではないか
・レビューが足りなかったのではないか
・技術力が不足していたのではないか
もちろん個別の原因はあります。しかし構造的に見ると、多くは「判断の積み重ね」の結果です。
終盤で噴き出す問題は、
特定の誰かの能力不足というよりも、
「どのタイミングで、何を不可逆にしたか」
の履歴です。
では、どう考えるべきか
重要なのは、「終盤で問題を出さないこと」ではありません。
重要なのは、前半で
・何が不可逆になるのか
・何が後から変えにくいのか
・どの制約が後半で効いてくるのか
を意識して判断することです。
すべてを予測することはできません。
しかし、「これは後半で重くなる可能性がある」と想像できるだけで、選択は変わります。
問題は突然起きない
終盤で起きる問題は、後半で発生したのではありません。
前半で決めたことが、条件の変化によって可視化されたに過ぎません。
開発は直線ではなく、時間軸の上に積み重なる判断の履歴です。
後半で何が起きるかは、前半でどんな制約を抱えたかで、ほぼ決まっています。
それを理解すると、終盤のトラブルも「予期せぬ事故」ではなく「構造の結果」として見えてきます。
そしてそこから初めて、判断の精度を上げるという話に進めます。
おわりに
X(旧Twitter)やBlueskyを中心に日々発信しております。
ご興味をお持ちいただけましたら、ぜひ弊社Webサイトや私のXもご覧いただけますと幸甚でございます。
https://www.tatsu-mi-systemsolution.jp/
https://x.com/itchie_tatsumi
https://bsky.app/profile/itchie-tatsumi.bsky.social