どうも、ゲームを作ったりビジネスを作ったりしている新田です。
僕は8歳くらいからプログラミングを始めて、もう40年くらい経ちます。
ゲーム業界では25年くらいプログラマをしています。
使える言語はほぼ全種類。
最近はUnityでC#、flutterでDartを使うのが主です。
そんな僕が「プログラミングはある段階を超えるとまったく苦じゃなくなる」という話をします。
■プログラミングは単なる組み合わせと整理
プログラミングは最近は小学校の必修科目になるくらいなので、簡単なものです。
制御構造として、関数という命令の入れ物、そして制御文として、
if, for, while, switchがあるだけです。
あとはこれらの組み合わせで命令の流れを作ります。
マウスの入力など、ハードからの入力はハードの提供元からライブラリとして(移動量などの)参照方法が提供されています。
また画面への出力方法も、これも ライブラリとして提供されています。
これらのライブラリを使って、必要な入出力を行います。
プログラミングのコアは、これだけです。
これは全然難しくないですよね?
ほとんどの人がすぐクリアする内容です。
言語はいろいろありますが、このおおもとの部分はほぼ変わりません。
■オブジェクト指向
C言語以降、さまざまな言語が出てきましたが、C++が出てから、プログラミングの「型」として、「オブジェクト指向」が定着しました。
オブジェクト指向とは、プログラムで作った機能をひとつの「モノ」として扱うことを言います。
関連する機能はパッケージ化してまとめます。
このパッケージを「クラス」と呼びます。
さらに、この「クラス」をまとめ、ライブラリモジュール(以後モジュール)と呼ばれる、大きな機能が提供され始めました。
最初はこのモジュールはパスを通して読み込まれるだけでしたが、整理の過程で最近では「プラグイン」「アセット」と呼ばれています。
■モジュール
さてプログラムはモジュール(もしくはプラグイン)が出てから複雑になります。
このモジュールには「使い方」があり、ルールがあるわけです。
そのルールはそれぞれモジュールを作った会社または個人が決めているのですが、モジュールを利用するにあたってそれを覚えなければなりません。
ほとんどは簡単なルールですし、サンプルやチュートリアルが用意されています。
ですが、この「覚える」過程がまいどまいどの制作で起こるため、利用の仕方でミスが起こりやすいわけです。
これはちゃんとモジュールの使い方を把握して動けばいいですが、モジュール制作側の予期しない使い方をしたりなどで不具合が起こったりします。
これがボトルネック(時間がかかる原因)になってしまうので、速やかに制作に連絡し、修正を仰ぐ必要があります。
修正されない場合は、別のモジュールを使うことになります。
なのでまずはモジュールの導入の時点で、動作確認が必須になります。
■プログラムの構成のしかた
多くの人がつまづくのが、このプログラムの構成のしかたでしょう。
どういう構成でプログラム全体を作ればいいのかわからず、我流で作ってしまうため、あとから整合性が取れないことになったりします。
そこでまたつじつま合わせに無理な処理を書いたり・・・。
基本的にプログラムでは、クラスに「役割」を持たせながら、必要な処理を書いていきます。
ゲーム開発であれば、キャラクタを画面に生成するにはキャラクタ管理クラスが必要ですし、ゲームの大きな流れ、つまりクリアやゲームオーバーの判定の処理をするクラスも必要になります(これをゲームマネージャと呼ぶところが多い)。
レースゲームなどではプレイ時間を管理するクラスも必要になりますね。
つまり、管理する側と管理される側、親と子、主従関係を明確にし、それぞれクラスを書く必要があるということです。
今作るアプリにはなんの管理が必要かを考え、管理構造を構成します。
最初はまずここだけ押さえておけば、処理の構成に困ることはないでしょう。
■モジュールを集める
昔と違い、今はプログラミングも「ネットありき」になっています。
これはどういうことかというと、便利なモジュールはネットにすでに存在していることが多く、フルスクラッチ(すべて手作り)する必要はほぼない、ということです。
なので最初に、ネット上に今回制作するアプリに必要な処理を持つモジュールが存在するかどうかを調査します。
これをやらないと「車輪の再発明」をすることになりかねません。
中には有料で提供されているモジュールもあります。
しかしながら有料のモジュールは基本的にメンテナンスもされており、動作が保証されているはずなので、製作期間を抑えるのに有効です。
モジュールを集め、楽で手堅く動くプログラミングに徹したほうが、よりよいアプリを作ることに繋がります。
■人のプログラムを修正して習う
プログラミングを早く上達するには、「すでに動いているものを修正していく」ことです。
ですので、githubにあるような人のプログラムを改造したり、付け足したりするのが、一番上達します。
すでに1からプログラミングする時代じゃないのです。
サンプルプログラムやチュートリアルをひととおりなぞるのも同様です。
まずは動いているものを手に入れ、直していくことです。
ということで、超えるべき段階について、一通り書いてきました。
これらの項目を押さえれば、あなたのプログラミングは楽に、そしてスムーズになるはずです。
あなたのお役に立てば幸いです。
ニュースレター登録お願いします