タイトルからして無謀ですが、「本当の初心者のためのプログラミング入門」というのを始めました(始めました、と言いつつ、続くかどうかは評判次第ですが)。
この入門では、JavaScriptを使って、以下のような「UFOゲーム」を作ります。
下にある「キャノン砲」で、飛び回るUFOを撃墜するゲームです。
UFOは1機しかいないし、UFOは撃ってこないし、キャノン砲が発射するビームも画面上には1発しか存在しません(ビームが消えるまで、次のビームが撃てない。昔のスペースインベーダーやギャラクシアンはこうだった)。しょぼいゲームですが、最初の一歩はこれでよいかな、と思っています。
実のところこのUFOゲームは、かつて「マイコンBASICマガジン」、略して「ベーマガ」の1982年8月号に載っていた「UFOゲームを作ってみよう」へのオマージュです。ベーマガのUFOゲームは、BASICで作られていて、「AAA」のUFOを「I」のビームで撃墜するようなゲームでした。ゲームとして遊ぶに足るものかどうかはともかく、当時のBASICゲームの作り方を学ぶにはとても参考になりました。当時の私は中1でしたが、それでも十分読みこなせる記事でした。
それに比べ、現在のプログラミング初心者は、どのようにプログラミングを学び始めればよいのでしょうか。スイッチONでBASICが動いた80年代のパソコンと違い、まず開発環境のインストールが必要ですし、Webアプリでも作ろうとするならHTMLとCSSとサーバ側言語とJavaScriptとSQLが必要です。とても初心者の手に負えるとは思えません。
JavaScriptでUFOゲームを作るなら、HTMLとJavaScriptさえ覚えれば、あとはメモ帳1本で可能です(あ、絵を描くのにペイントも要るか)。最初は、正体不明のファイルを山ほど自動生成する統合開発環境を使うより、メモ帳なりのテキストエディタでガリガリ書いていく方が、自分がやっていることがすべて理解できて勉強になると思います。
――とはいえ、最初の言語にJavaScriptが適切か、ということに関してはずっと思うところがあって。
プログラミングの初心者にとって最大の壁は環境構築なので、最初の言語はJavaScriptがよい、ブラウザがあれば動くし、といった意見は理解できるのですが、最初の言語としちゃJavaScriptは言語として変態すぎるよねえ。
— 前橋和弥/ポインタ完全制覇改訂版発売! (@kmaebashi) 2020年7月8日
とはいえ、Windowsを買ってきたら環境構築なしでいきなり使えて、UFOゲームのようなゲームも作れて、世間に情報が多い言語というとやはりJavaScriptくらいしかないでしょう*1。
というわけで書き始めてみると、これが大変で大変で、「本当の初心者」を対象にするのなら「ファイルとフォルダ」の概念くらいは書かなければいけないだろう、とは最初から思っていましたが、書き始めてみるとあれもこれもと書かなければいけないことが増えていって、ずいぶん時間がかかってしまいました(書き始めたの、いつだったっけ?)。
今回公開分で、ひとまずUFOゲームは最後まで作っています。最終的には、これくらいのシューティングゲームくらいまで持っていきたいと思っていますが、さて、どうなりますことやら。
※このシューティングゲームは、以下のリンクから遊べます。
http://kmaebashi.com/programmer/beginner/shooting03/shootinggame.html
*1:実のところ私はこの目的で1個言語を作ったりもしたのですが、個人開発の、ライブラリも揃わない、情報もない、バグもありそうな言語に初心者を巻き込めないよね。