☝️ 「汎用化したい」という衝動と、開発の現実
📌 この記事は Zenn に投稿した内容のアーカイブです。 プログラマーを数年やっていると、おそらく全員が一度は同じことを考える。 「これ、他のプロジェクトでも使える形にしたい」 最初はただ動けばよかったコードが、だんだん気持ち悪く見えてくる。 コピペも増える。責務も混ざる。依存も汚くなる。 すると自然に、 共通化したい 抽象化したい 再利用可能にしたい という欲求が出てくる。 これは悪いことではない。むしろ健全だと思う。 “設計”を意識し始めた証拠だから。 ただ、この感覚はかなり危ない。 一歩間違えると、 簡単に「過剰設計」に転がり始める。 「将来使うかもしれない」 この一言が、 過剰設計の始まりになることはかなり多い。 今回は、自分がゲーム開発をやる中で感じた、 なぜ人は汎用化したくなるのか なぜそれが失敗しやすいのか 実際どう考えるとちょうどいいのか について書いてみる。 汎用化したくなるのは、実はかなり自然なこと 例えば、最初の頃のコードってかなり局所的になる。 if (isBoss) { hpBar.color = Color.red; } みたいな、「今必要だから書いたコード」が大量にある。 でも経験を積むと、 こういうコードを見るだけで“変更コスト”を想像するようになる。 「これ別のボス出たらどうするんだろう」 「色変えるたびに if 増えるの?」 「そもそも UI が敵情報知ってるのおかしくない?」 みたいなことを考え始める。 つまり汎用化欲求の正体って、単なる意識高い設計趣味ではなく、 “変更に弱いコードへの違和感” なんだと思う。 だからある程度コードを書いた人ほど、自然と抽象化に向かう。 実際、汎用化にはかなり強いメリットがある これは間違いない。 1. 「依存」に敏感になる 再利用を意識すると、まずベタ結合が気になり始める。 直接参照 Singleton ベタ依存 MonoBehaviour 神クラス Inspector 配線地獄 みたいなものを避けたくなる。 結果として、 責務分離 Interface 化 データ駆動 疎結合 みたいな方向へ進む。 ...