キャリア

子供はどの言語からプログラミング学習を始めるべきか?豊福晋平先生にインタビュー

子供はどの言語からプログラミング学習を始めるべきか?豊福晋平先生に取材

もうすぐ義務教育においてもプログラミング学習の必修化が始まり、多くの子供がプログラミングに触れる機会が増えると考えられます。

そんな中で、子供はどのプログラミング言語から学べば良いのか?そう考えられる方もいらっしゃるのではないでしょうか?この問題を豊福晋平先生(国際大学GLOCOM主幹研究員/准教授)に聞いてきました。

一つの言語を覚えてしまえば、他の言語の勉強はスムーズに

そもそも、まず大人が使っているプログラミング言語のほとんどが、変数があり、配列があり、条件分岐があり、という仕掛けになっています。文法や表現は違いますが、基本的な構造は同じなので、それらを入れ替えるだけでプログラミングは簡単にできてしまうんですね。

そういう意味ではどの言語から勉強を始めても問題ないし、一つの言語を覚えてしまえば、他の言語への移行はスムーズになると思います。

とは言っても、子供が大人の言語をいきなり学ぶのは、発達上のハードルがあるなと思っていて、大人だったら対応できても子供では対応できない問題がたくさんあるからです。 

大人と子供の発達の違い

例えば大人でも、最初にいわゆるベタなコンパイラー系の言語から勉強を始めたらどうなるかというと、コード打って、コンパイラーにかけるとエラーコードがたくさん出てきますね。

初心者だと膨大なエラーを前にどこから手をつけて良いのかわからない状態になります。しかし、何回か試行錯誤する中で、段取りが掴めてくるとあわてずに対応出来るようになる。プログラミングスクールに通っている方だったら、最初はチューターに教えてもらいながらバグ取りの仕方も覚える。そうした経験を通じてコードの書き方とバグ取りの方法を身に付けるわけです。

しかし、子供の場合は簡単にはいかない。子供は、そもそもキーボードの経験がないし、大文字、小文字の区別がわからないとキートップの文字を見分けることも出来ません。キーボードが打てなくて、コードが書けず諦めてしまう子は実際にいるんですよ。

そう考えると、最初からテキストで、意味不明のコードを写経(教本のプログラムをそのまま打ち込むこと)することであっても、子供にとってはすごくストレスフルで困難なことであるとわかります。

子供は簡単なところから始めれば良い

我々は子供に試練を与えて挫折させるのが仕事ではないので、できるならもっと簡単なところから始めれば良いと思うんです。

子供は、たとえばゲームとか、頭の中に具体的なやりたいことがあって、あくまでそれを実現するための手段としてプログラミングをするので、途中がものすごく面倒くさくて、ゴールまで罠がありすぎてたどり着けないと、「僕はプログラミングに向いていないだ、能力がないんだ」とやる気をなくして諦めてしまいます。

子供が挫折せずに自力で乗り越えられる環境をつくることを考えれば、テキストの打ち間違いでシンタックスエラー(注:プログラム上の構文の誤り)が起こらない方がいいし、構造的にあり得ないコードは最初から書けないようになっている方がいい。それをブロックパズルのように見せているのがビジュアルプログラミングです。

ビジュアルプログラミング言語の代表・スクラッチ

その代表がMITメディアラボで開発されたScratchです。Scratchの良いところは、プログラミングのパーツの色や見た目の形が文法上おかしな書き方を防止するので、先に言ったようなエラーが起こらないメリットがあります。ここには変数が入るとか、演算子が入るとか、そう言ったものをビジュアルな構造として学べます。

そうすると、子供はつきっきりで人から教わらなくても、エラーメッセージに煩わされずに、だんだんと自力でコードが組めるようになってきます。そのような意味で、子供のプログラミング学習にはScratchのようなビジュアル言語が適していると言えます。

ちなみに、Scratchは見た目子供用ですが子供騙しではないので、けっこう複雑なプログラムも組めます。一度使いこなせれば、長く親しむことが出来ると思います。

粘土のようなビスケット

ちなみに、ビジュアルといってもいろんなタイプがあって、パズルピースを組み合わせるScratchのような言語だけでなく、もっと独特な粘土みたいなモノもあります。原田康徳さんが作ったViscuitです。

Viscuitは言葉でちょっと説明しにくいのですが、描いた部品を「仕掛けメガネ」に配置して、複数組み合わせていく、とても独特なインタフェースを持っています。文字を一切使わないので、「これはプログラミングなのか?」という人がいるかもしれませんが、日本語が読めない幼児でも外国の人でも使えちゃうのがViscuitのすごいところ。

子供達がどうやって動きやロジックを組んでいったらいいのを考えるエクササイズとしては、とても良い環境です。小学校中学年くらいになると、メガネの数を増やして落ちモノ(テトリスとか)ゲームとか、かなり、複雑なものも作ります。端で見ている大人はその精緻さにただただ驚くだけです。

まとめると、最初の子供のプログラミング経験としては、テキスト型言語よりはハードルが圧倒的に低いビジュアル型言語から入ったほうが良いです。そこで成功体験を積み重ねれば培われた知識やロジカルな考え方や工夫アイデアの活かし方は、後のテキスト型言語の勉強の際にも絶対に役立ちます。

まずは、簡単な教本や動画教材をお手本にしてScratchやViscuitなどのビジュアル型の環境で遊んでみるのが良いでしょう。ある程度使い慣れてきて「これだとやりたいことができない」とか言い出したら、たとえばUnityなどの本格的な環境に移ればいいと思います。

子供が何を作りたいのかということが重要

今回はプログラミング言語の話を先にしていますけど、プログラミング言語以上に重要なのは、最初に子供が何を作りたいのか、自力で考えることです。

子供は遊びのなかで、何かを作ったり真似たりしますが、自分の身の回りにあるものの興味の派生であることが多いですね。ゲームとか、機械仕掛けとか、アニメーションとかです。なかでも一番親しみやすいのはゲームです。普段はプレーヤーとして関わるゲームを「今度は自分で作れるよ、神になれるよ(自分でルールが作れる)」というと、目をキラキラ輝かせます。誰だって自分の好き勝手にゲームルールを作ってみたいですよね。

自分がプレーヤーとして扱うゲームは、当然出来上がった時のイメージを具体的に頭の中に描く事が出来るので、プログラミングの過程でどうすればそれがかなうのか、試行錯誤しながら工夫を重ねるところが、一番良い頭の体操になるわけです。

おそらく最初は、サンプルプログラムや友達のプロジェクトに刺激されて、場合によっては周囲の経験者に手伝ってもらいながら、いろいろ作り込んでいくのですが、ある程度馴れれば、プログラミングの環境が鉛筆やクレヨンのような、自分の表現の道具になったことを実感するでしょうね。そうなれば面白くて仕方ないでしょう。

成功経験を積み重ねて「Scratchでは足りない」と思い始めたら、今度は、自分自身で次のプログラミング言語を見つけられるでしょうね。そのときにScratchで身に付けた経験や知識はけっして無駄にはなりません。