<プログラミングとは>

 コンピュータをオーケストラに例えると、楽譜にあたるのが「プログラム」です。どんなに素晴らしいオーケストラでも楽譜が無ければ何も奏でられないように、どんなに高性能のコンピュータでもプログラムが無ければただの電子部品のかたまりに過ぎません。

 プログラムを作る作業が「プログラミング」、これは作曲にあたります。楽譜を書くのに使われる音符や音楽記号にあたるのが、「プログラミング言語」という人工的に作られた特別な言葉です。その書き方には細かいルールが定められているので、楽譜通りに演奏すれば誰でも同じ曲を再現できるように、同じプログラムを実行すれば違うコンピュータでも同じ結果が得られるのです。

 また、楽器の種類によって特有の記号があったり楽譜の書き方が違ったりするように、プログラミング言語にも作られた背景や得意分野の違う色々な種類のものがあります。どの言語も基本的な考え方自体はほぼ共通なので、まずは覚えるのが簡単なものから始めて、基本を一通り理解してから、自分の好みのものに挑戦するのが良いでしょう。


<プログラミング教育の狙い>

 義務教育でプログラミングを教える意義について語られる時、必ずと言っていいほど出てくる「論理的思考力」「問題解決能力」といった堅苦しい言葉を、噛み砕いて言い換えるなら、「1つの大きな問題を、いくつかの小さな問題の集まりに切り分け、それぞれの問題をどの順序で片付ければ、より少ない手間で、より短い時間で終わるか、ということを考える能力」となります。

 これをさらに凝縮し、一言で言い表すなら、「段取り力」です。これは勉強や仕事に限らず、日常生活のあらゆる場面で役に立つものです。そう考えると、全ての小中学校でプログラミングを教えるというのは非常に意義深いことに思われますが、それだけに現場の苦労は並大抵ではないでしょう。欧米諸国での先行事例も参考にしつつ、頑張っていただきたいものです。


<ゲーム作りを通してプログラミングを学ぶ意義>

 ゲームデザインの方法論は今や1つの立派な学問です。心理学や社会学の見地からゲームに関する専門的な研究が行われ、ゲーム的な手法をゲーム以外の様々な場面に応用すること(ゲーミフィケーション)の有益性が明らかになり、これは実際に広く利用されています。現在インターネット上には様々なプログラミング学習用コンテンツがありますが、その多くもまた、ゲーミフィケーションを取り入れたものになっています。つまり、ゲーム作りを通してプログラミングを学ぶことは、ゲームデザインとプログラミングの両方を効率的に学ぶことを意味するという訳です。

 歴史的に見ても、ゲーム作りはプログラミング学習の手段として昔から主流であったといっても過言ではありません。1970~80年代のパソコン雑誌には、ゲームプログラムのソースコード(プログラミング言語で書かれた、プログラムの設計図となるテキスト)が丸ごと掲載されていました。当時の人たちはそれを自分のパソコンで1文字ずつ打ち込み、完成したゲームをさらに改造したりして楽しんでいたそうです。そのような文化的背景から、今日に至るまでゲームプログラミングに関する数多くの書籍、雑誌、ウェブサイトが作られてきました。それらを参考資料として有効活用できる点もまた、ゲーム作りを通してプログラミングを学ぶ意義の1つといえます。


<プログラミング学習の流れと他教科との関わり>

 教科書を用いたプログラミング学習の一般的なやり方は、1つの事柄を説明する度にサンプルプログラムを作って動作を確認し、ある程度進んだところで応用問題として少し複雑なプログラムを作って理解度を確認する、という流れになります。他の教科を引き合いに出すと、プログラミング言語の単語や文法を覚えなければいけないところは英語に、問題を解きながら段階的に知識を積み上げていくところは数学に通じるところがあります。このような形式的なことだけでなく、内容的にもプログラミングと英語と数学は密接に関わっています。

 ほとんどのプログラミング言語は英語をベースに作られています。ネット上の参考資料や学習用コンテンツなども、日本語より英語で書かれたものの方が質、量ともに充実しています。英語が少し読めるだけで学習や情報収集の効率は格段に上がります。せっかくプログラミングを勉強するなら、一緒に英語も勉強するつもりで取り組むのが得策です。

 コンピュータもプログラミング言語も、元々は計算をするためのもので、その開発には多くの数学者が携わっています。プログラミングの基本的な考え方を理解するのにも、正確で分かりやすいプログラムを書くのにも、やはり数学の知識や数学的な考え方が必要となります。逆に、プログラミングの学習を通して数学の知識や数学的な考え方を身に付けることができる、ともいえます。