最近の小学生は、プログラミングの授業があるそうですね。私は大賛成です。もっと早くに授業に取り入れればよかったのにとも思います。
昔からPSのゲームではロボットの動きをプログラミングするようなものがありました。たしか。こういったものは好きな人は好きなんですが、ダメな人はだめなようです。ボードゲームでもありますよね。
さて、私がプログラミングの授業があるのがよいと思う理由はいくつかあります。一般的に言われている「理論的な考え方ができる」というだけではありません。私の経験から「人柄が謙虚になること」であることが大きいと思っています。
昔からよく言われるようにパソコンは馬鹿なので教えた通りにしか(プログラムした通りにしか)動きません。なので、プログラミングしたものが自分の思い通りに動かないなら、99%自分が悪い。たとえ地団駄踏んだりパソコンをにらみつけてもダメです。動きません。残り1%はどうしても、プログラム言語とマシンの相性などがあります。これは私の経験です。
プログラムを正常に自分が思ったように動かすためには、自分の間違いに気が付かないといけません。このためには、なぜ動かないのか、どこで動かなくなっているのか、何が悪いのか、自分の間違いを謙虚に受け止め修正する必要があります。
世の中には、自分が絶対正しいと思い込み、現実が自分の思いと違っていても、現実が間違っていると、本気で考える人がいます。そんな、歴史上でもよくいる人にはなりたくありません。プログラミングは、現実(思ったように動かない)を受け入れたうえで、自分の間違いを見つけなければならないのです。そうしないと、ちゃんとしたプログラムは作れません。
また、1%の相性が問題だったと最終的に結論付けられても(その前にすべての問題点を考え検証することが重要)、動くプログラムを作らないといけないので、その回避方法を考える必要があります。
例えばこうです。
1+1=1.9999・・・という結果が出る問題に対して(これは例を単純化したものですので実際に起こることではありません)、正しい答えを得るために(10+10)/10=2として1+1問題を回避するのです。いわゆる「間接アプローチ」です。
プログラミングをすると、こういった「間接アプローチを考えつく習慣」ができます。これはボードゲームの対戦にも役立ちます。
私は、プログラミングを行う仕事から、「自分を疑う」ことを身に着けました。また、ある物事を真正面からだけではなく、側面からも、後ろからも、上からも下からも見る、見るだけではなく、触る、なめるといった「様々なアプローチを試みる」ことも身に着けました。プログラムが動かない原因を突き止めるためには必要なことだったのです。
私は大学の時に半年フォートランを、卒業論文でN88ベーシックを、会社に入ってC言語の講習を1週間受けただけで独学だったので、ちゃんとした教育は受けてませんが、それでもプログラムを作っていく上でこれらの技能を身に着けることができました。今の子供たちは幸せだと思います。
さて、そんなわけで実はプログラミング言語に対して興味があります。そこで、Nintendo Switchが『ナビつき!つくってわかる はじめてゲームプログラミング』を出すということで、予約してしまいました。他にもやることがあるというのに・・・。
少し触って、結構面白いです。難しい文法なんかいりません。直感でやることがよくわかります。
7つのゲームを実際に作りながら、ゲームプログラミングを習います。ゲームは、2人用の鬼ごっこ、ルート上に合わせてボールを転がす、横スクロールシューティング、横スクロールアクション(マリオみたいなもの)、密室謎解き、レース、3Dアクションです。これだけでも作れば結構遊べるかもしれません。
動作をノードンとしてまとめ、それらを繋げることでアクションにつなげます。ノードンは「入力」、「中間」、「出力」、「モノ」に大分類され、これらの中から、ボタンを押すとか、インターバルを与えるとか、リトライするとか、人を動かすとか選んで画面に配置します。どうしても、アクション系に偏るのは仕方がないことでしょうか。
この手のソフトはあまり売れ行きが良くないかもしれませんが、やれば楽しいですので是非どうぞ。
ちなみに、私は根気がないので多分自作ゲームは作らないような気がします。今までもNintendoの『プチコン』とかワンダースワンとかPIECEとか買っていますがゲームを作ったことがありません。プログラミングは仕事ならしますが、自作ゲームはどうも何かに使うという目的がないので今一乗り気ではありません。プラモデルも作るのは作りますが、それを飾ったり動かしたりジオラマにしたりとかはしないんですよね。このあたり、ゲームデザインでも同じような気がします。