ここでの初心者の定義

 プログラミングについて、良い書籍やブログが大量に世の中に広まり、いわゆる最初の一歩的な情報は需要がなくなってきたように感じてます。そこで、それらの初心者向けの入門を終えた人が次の段階に進むヒントになりそうなことを、自分の勉強も兼ねて書こうと思います。

 本記事では初心者と中級者の境界を以下のように定義します。

入門書やチュートリアルブログなどを一通り終え、ゲームなどを完成させた人

 プログラミングやゲーム開発を身につけるには、とにかくまずは動かすことが大切です。そのため、入門書やチュートリアルブログでは、本来はおススメできないけど手っ取り早く動かせる手法で説明されているところが少なからずあります。一度完成させて公開したら終わりのゲームジャムのような場合は特に問題は起きません。しかし、完成したゲームに修正を加えたり機能を追加したりと継続開発をする場合や、チーム開発する場合に途方もない難工事が待ち受けています。そこで登場するのが「設計」や「テスト」と言われるものです。

 ある程度の力量があると、多少の規模のゲームなら設計やテストをせずに完成させることができます。そのような作品ばかりを量産していると、作り方が独特すぎて企業などのチーム開発に加われなくなる恐れがあります。作品は色々と作っているのに就職に苦戦する人はこの辺が原因かも知れません。

 ということで本記事です。オブジェクト指向やデザインパターン、テストなどについて具体例を示して、なぜそのように実装したのかを解説というか語りたいと思います。

 初心者向けに手取足取り手順を説明すると設計の話しにたどりつけません。また、一度何かを完成してメンテナンスや改造で苦戦した経験がないと、なぜそんなまどろっこしいことをするのかが伝えにくいのです。脱初心者の域に達した人に向けることで、入門書では説明しにくいあれこれを手っ取り早く説明するのが狙いです。

 私自身も自己流スタートで、変なクセが残っていたり、最新の書き方に追い付いていないところが多々あります。これが正解だ!と胸を張って主張するつもりはなく、恥ずかしながら多少でも誰かの参考になるかも知れないので公開してみる、というスタンスです。「それはちょっとどうか」という箇所がありましたらご教示いただければ幸いです。