ピアノを習うこととプログラミングを習うこと。これらには共通点がありますが、プログラミング教育ではそれはあまり意識されていないように思います。

プログラミング教育への関心が高まっています。毎週、何らかの新しい取り組みの報道を目にしているような気がしますし、さまざまな書籍が書店にあふれるようになりました。

しかし、ちょっと気になることがあります。コンピュータサイエンスやプログラミングの有識者は気づいていると思いますが、いまプログラミング教育でフィーバーしている人たちは気づいていないような気がします。今回はその点を、ピアノ演奏とプログラミングを対比させながら説明しようと思います。

ピアノを習うこと

わたし自身はピアノは弾けないし習ったこともないのですが、身近にピアノを習っている人がいます。それを眺めていて気づいたことがあります。当たり前なのですが、ピアノレッスンの目的は「曲が弾ける」だけではない、ということです。

つまり、「楽譜に書いてある音が出せたら弾き方は何でもいい」ということはありません。弾き方も大事です。例えば、運指(どの指で鍵盤を押すか)。聴こえてくる曲が楽譜通りならそれでよいかというとそうではなく、初心者のうちは楽譜に書いてある運指で弾くのが大事です。それは、「うまく弾くくせ」をつけるためです。運指だけではありません。座り方、指の伸ばし方、手の置き方。もっと上手な人になると、どこで息を吸うか吐くか、なども先生にアドバイスされたりもします。

鍵盤を叩いて出てくる音だけが問題ではないのです。耳では聴こえないような様々な要素も大事で、それは「身体をどのように使って音楽を奏でるか」ということが中心にあります。

なぜなのか?それが「うまくピアノを弾くスキル」であって、ピアノを習っている目的だからです。

プログラミングを習うこと

それではプログラミング教育はどうでしょうか。最近はScratchなど「子どもでもとっつきやすい」という特徴のある言語環境を用いて教えることが多くなってきたようです。ほかにもロボットを使ったものなど、教育法は実に様々です。

ただ、それだけではピアノレッスンにおいて重要だった要素が、プログラミングレッスンにおいて欠けていることにお気づきでしょうか。

Scratchなどはとにかく動かしやすい言語です。ブロック型の命令文をつなぎ合わせれば何かが起こります。(構文エラーは絶対に起きませんから。)ですので、子どもたちは夢中でいろんな文をつなぎ合わせて試行錯誤でプログラムを作り上げていきます。

そうして出来上がったプログラムを動かして見ると、絵が動いたりゲームになっていたりと、大人が感心するようなものができることもあります。

しかし、それはあくまで動いているものを見たときの話。ピアノでいうと、聴こえてきた曲だけを評価しているようなものです。

Scratchなど最近の言語は、簡単に動かせることが売り。ですので、動くものを作ることは基本的に誰でもできます。それだけでは何も学んでいないことがあっても不思議ではないのです。

大事なのは、「どんなプログラムを作ったのか」、そして「どのようなプロセスを経てそのプログラムを作ったのか」です。

プログラミングにも作法があります。プログラムというのは書いた人の思考の流れを表現したものです。明晰な思考は明晰なプログラムを生みます。ぐちゃぐちゃで混乱している思考は、ぐちゃぐちゃで混乱しているプログラムを生みます。後者ですと、いくらかっこよく動くプログラムであっても、「論理的思考」は何も学んでいないことはありえるのです。

プログラミングを教えるときには、「どのように問題を分割してプログラム要素で表現するか(どのように設計するか)」、「どのような書き方は他者にも理解しやすいか」、「どのような構造のプログラムがシンプルで美しいのか」を伝えなければ、運指や姿勢がぐちゃぐちゃでとりあえず音が鳴っているだけのピアノレッスンと同じです。そのようなレッスンはやらないほうがましです。変な癖をつけてしまうと、あとで本人が大変な苦労をするからです。

そしてScratchの場合、ほおっておくとぐちゃぐちゃプログラムを書くことを促進してしまうことを示唆する研究結果もあります。将来プログラミングをすることになったときには全く通用しないスキルなだけでなく、周囲の人や社会に多大な迷惑をかけるプログラマーになってしまうことは十分考えられるのです。

Scratchによるプログラミングレッスンで、「悪い癖」を身に付けてしまうリスクについては以下で報告されています。

  • Orni Meerbaum-Salant, Michal Armoni, and Mordechai Ben-Ari. 2011. Habits of programming in scratch. In Proceedings of the 16th annual joint conference on Innovation and technology in computer science education (ITiCSE ’11). ACM, New York, NY, USA, 168-172. DOI=http://dx.doi.org/10.1145/1999747.1999796

大事なのは「審美眼」

結局、ピアノにしてもプログラミングにしても、それぞれの分野での審美眼が磨かれることが、本人にとってもっとも有益なことなのではないでしょうか。美しい演奏とは何かを知ることで、もっと深く音楽を味わうことができるようになります。美しいプログラムを知ることで、明晰な思考力を磨くと同時に、他人が非論理的であるときにそれに気づくことができるようになります。プログラミング教育が本来目指しているのはそういうものであって、たまたま流行っている言語を触った体験をさせたいのではないはずです。

そしてこれは、教える側にも高度な素養が必要であることを意味します。ただ曲がちょっと弾けるだけではピアノの先生にはなれません。たいていの先生は音大を出ていますね。

プログラミングも同じです。子どもにプログラミングを教える人は、明晰な思考力で美しいプログラムを書くことができ、かつそれを子どもたちに伝えられるようでなければなりません。そうでなくては、プログラミングを習ったことは何のプラスにもならず、むしろマイナスになるだけなのです。

(かながわグローバルIT研究所 森岡剛)