はじめに 面白いゲームを作りたい!と思ったら、試行錯誤をどうしても必要。 作ってみたけど、イマイチだったから、こう変えたい、なんて事は日常茶飯事です。 プログラマーは、降りてきた仕様をそのまま実装するのでなく、将来の仕様変更を見越しつつ、現実的な工数で、柔軟でメンテナンス性の高い、ソフトウェア設計をしなければなりません。 今まで私が経験してきた多くのプロジェクトは、オブジェクト指向による設計をしていました。 しかし、開発が進み、仕様変更を繰り返すうちに、いつしかスパゲッティコードになり、どのデータがどのデータに依存して変更されるのか、分からなくなっていく… そのパターンがいつも繰り返されています。(読者の中にも、そんな方、いらっしゃるのではないでしょうか?) 今までC++やC#でのゲーム開発をしてきましたが、そもそもの言語設計が、オブジェクト指向をベースとしています。よってどうしても、考え