子供たちはどのようにプログラミングに夢中になるか
Kids make a brighter day by programming
2016.03.28
Updated by Ryo Shimizu on March 28, 2016, 08:44 am JST
Kids make a brighter day by programming
2016.03.28
Updated by Ryo Shimizu on March 28, 2016, 08:44 am JST
来月より、UEIのプログラミング教育の実験授業を拡大したプロジェクトがスタートします。
土曜日に開催した説明会にお越しいただいたのは主に都内在住の親子15組ほどと、親御さんだけ見学に来た方を含めて総勢40名ほどでした。
我々はなぜこのプロジェクトを始めようと思ったのか。
それは、今現在、プログラミング教育を単なる商売の道具として、低い志で運営されているケースが散見されているという危機感からです。
あるとき、古い友人から「子供をプログラミング教室に通わせたいのだが、この学校に通わせるならどのコースがいいだろうか」と相談を受けました。
そうしてある学校のカリキュラムを見た私は愕然としました。
プログラミング教育とは名ばかりの、浅い内容だったからです。
そして私自身の苦い経験が蘇りました。
私自身がまだ幼稚園を出たばかりの頃です。
父親の強力な勧めで、私は英語とフランス語とスペイン語と韓国語と中国語とイタリア語とドイツ語を同時に学ぶ塾に通っていました。
その塾は、毎週誰かの家に集まって、各国の言葉で歌を歌ったり、絵本を読んだりするという簡単なものでしたが、私のような子供は少なく、大半が高校生や大学生でした。
そのような中でコミュニティに入っていけず、私は常に部屋の隅っこで、時間が経過するのをじっと待っていたものでした。
ここに通うのが苦痛で苦痛でしかたがなかったのですが、家に帰るって父親から笑顔で「どうだ?楽しかったか?」と聞かれると、つい作り笑いをして「楽しかったよ」と答えていたのです。
その結果、どうなったかというと、膨大な費用をかけて何年も通った割に、私には一切の外国語の教養が身につきませんでした。私の語学力は21歳の時に渡米した時に初めて身についたものです。そしていざ渡米してみると、語学とはなんと簡単なものかと驚きました。当たり前ですが、コミュニケーションのための自然言語なので、よほど難しいことを言おうとしなければ、数週間で会話できるようになるのです。
「この学校のコースはどれも勧められないよ」
私はやんわりと言いました。
「でも、どうしても子供にプログラミングをさせてみたいんだよ」
知人が食い下がるので、では短期集中型のこれではどうかとか、他の学校はどうかとか、あれこれ調べました。
そして調べれば調べるほど愕然としてきました。
実際のところ、プログラミングの面白さがきちんと伝わるような教え方をしている教室があまりにも少なかったのです。
もっと怒りを感じたのは、とある大手プログラミング教室の講師の先生と話をしたとき、なんと彼はプログラミングができなかったのです。プログラミングができないけれども、教科書の通りにプログラミングを教えていたのです。
数少ない例外は、津田塾大学非常勤講師の阿部先生のプロジェクトのような、無償で教えているNPO団体のものがメインで、その他のものはとても知人に勧められるものではありませんでした。
このとき、私は「自分ならもっとプログラミングの楽しさを教えることができるのに」という歯がゆい思いを噛み締めました。しかし私自身には数多くの仕事があり、とてもプログラミング教育まで手が回らない、せいぜい、年に数回、地方や都内でプログラミングの体験会をするのが限界だとも思っていました。
この苦い経験から一年ほど経ち、これまた別の古い知人から、提案を持ちかけられました。
彼はとあるラジオ放送局の元プロデューサーという異色の肩書きを持つ人でした。
「実は昨年、Javaの講座をやってみて、プログラミングって面白いなって改めて思ったんですよ。僕も子供の頃はHyperCardとかで遊んだ世代で。でも今の子供達ってプログラミング教室はあっても、本当に楽しさを感じる所まで行ってるのかなと疑問に思うんですよね。それに、僕らの世代は子供の頃、みんなBASICをやってたじゃないですか。でも、BASICをやった子供の99%以上は挫折してプログラミングは難しくて自分にはできないことだっていう敗北感だけを味わってますよね。清水さんみたいにそこで挫折しなかった人はほんの一握りだし」
「そうですね。私のクラスの男子のほぼ全員がBASICを一度はやってましたけど、生き残ったのは学校で僕一人でしたね」
「そしてScratchというのも、僕にはBASICっぽく見えるんですよ。でもJavaとか凄いじゃないですか。オブジェクト指向って凄いじゃないですか。どうしてそういう、本当に凄いプログラミングのことをきちんと教える教室がないんだろうと疑問に思ってですね、プログラミング教室を一緒にやらせて欲しいんですけど。清水さんがプログラミングの楽しさを学んだのと同じように、今の子供たちが昔の僕みたいに挫折しないように、工夫した教材を作りたいんですよ」
「なるほど」
それは私にとって願ってもない提案でした。
私自身が毎日プログラミング教室をやるのは無理があります。
さりとて、一般社員やエンジニアに明らかに非効率的なビジネスをやらせるわけにはいきません。
しかし自分から事業化したいという人が現れたのであれば、これはぜひ自分の手元で事業として育てるべきだと思いました。
そこで「秋葉原プログラミング教室」プロジェクトがスタートしました。
この教室が実現することは、私自身のライフワークでもある「人類総プログラマー化計画」にも直結します。
プログラミングを通じて、数学や物理を道具として使えるような人間に育て、国語力を鍛え、英語にも強くなるようにします。なぜなら私にとって、この全てはプログラミングを通じて学んだことだからです。
最初は敢えてコースを分けず、全ての年齢の子どもたちが同じ順番で学びます。それは私がゲームデザイナーとしてゲームを設計するとき、プレイヤーの年齢に応じて難易度を変えたりしないからです。
面白いゲームは誰が遊んでも、何歳の人が遊んでも面白く遊べるように設計されています。ユーザーにコースを選ばせたりはしません。
そして子どもたちは、たとえ小学1年生であっても、分数や負数の概念、素数や三角関数、複素数、ベクトルや行列、微分や積分といった、大人でも使いこなすのが難しいと思われている概念を使いこなせるようになります。事実、私はこれまで沢山の小学生に三角関数の実用的な使い方を教えてきました。使いこなせなかった子供は皆無です。子供にとって、目的さえあれば道具を使いこなすのはむしろ簡単なのです。この場合の目的とは、ゲームです。ゲームを作りながら、ゲーム作りに必要な数学や物理の概念を活用するのです。
「よし、やってみましょう」
私はこの提案をとても魅力的に感じ、カリキュラムを設計しました。
子どもたちが挫折しないように、小さな一歩でも大きな歓びを感じられるように。
まさにゲームを設計するのと同じ慎重さで教材全体を設計したのです。
そこから研究を重ね、子供の注意力を維持するためには、たとえばいきなりPCの前に座らせてはいけないということに気づきました。
子供はPCの前に座ると興奮します。
講義形式で話をしても、全く話を聞いていない子供も居ます。
そしていざ実習に移ると、いろいろなところで同時多発的に同じような質問が連発されるのです。
PCの前に座りながら先生を待っていると退屈します。そこで目の前のPCで遊び始めます。これでは効率的に教育できたとは言えません。
また、PCの前で実習主体の授業を行うと復習ができなくなります。
「家に帰ってもできるよ」と言っても、やり方を忘れて先生がいない状態ではうまくできません。
そこで私たちは、まず子どもたちをPCの前に座らせるのをやめました。
通常の子ども向けの学習塾と同じように、プリントを配り、プリントを先生が採点することで子供たちがどこで躓き、どこで興味を失ったか、詳しく計測することにしました。
プリントが効果的なのは、子供のペースにあわせて説明できることです。
実は筆者の母親は以前、学習塾を経営していました。
その時、筆者も何度か採点などを手伝ったのですが、子供によって進み方が違うので一人ひとりきめ細かに教えることができることに驚きました。学校の紋切型の授業ではなく、子ども一人ひとりと向き合った教育法としてプリントが有効であることを筆者は体感的に知っていたのです。
そしてまた、子どもたちにとって、プリントを仕上げてマルをもらうのは、とても気持ちの良いことです。
少しやって、先生に褒めてもらえる。間違ったら優しく教えてもらえる。そういう報酬系をここに設置することで、子どもたちがプログラミングを理解することを自分の喜びに変えていくように設計しています。
このプリントの教材の第一号が出てきた時に、私は感動しました。
なぜならこんなプログラミング教材は見たことがなかったからです。
そしてこれなら全ての子どもたちにきちんとプログラミングを教えることができると確信しました。
子供の集中力が続くのは、せいぜい20分と言われています。
これは品川女子学院で講義をするときに、先生方からアドバイスされたことです。だから20分ごとに違う話をした方がいい。いや、できれば10分で終わるのがいい。
これがヒントになり、全てのプリントの回答時間は9分以内に終わるように設計しました。
だいたい10枚くらいのプリントがワンセットで、ひとつのプログラムの作り方と構造を学びます。
そして理論を学んだあとで、確認としてPCやタブレットを使って実際にプログラミングをしてみて、さらに理解を深めるのです。
このやり方だと子どもたちは学習に集中できます。いつまでもPCの前で落ち着きなく遊ぶのではなく、しっかりと理論を頭に入れて、それを確認するということの繰り返しだからです。
そしてこの方法は、実は私自身が子供の頃にやっていたプログラミングの学習法と同じです。
私の場合、PCの前に座れるのは家にいる時だけだったので、学校に行っている間は全くプログラミングができませんでした。それが苦痛だったので、通学時や休み時間にプログラミングの本を読み、放課後も市立図書館や大学の図書館で(プログラミングに必要な)数学や論文などを読んで、紙にプログラムの設計図を書き、家に帰って実際のPCでプログラミングして動作を確認する、というやり方でした。
当時のメモが残っていたのですが、この頃から既に3Dコンピュータグラフィックスのための基底変換行列や回転行列といったものに興味があったようです。実際にそれを授業で習ったのは大学院に行くようになってからです。その頃には私はとっくにプロとして仕事をしていて3Dグラフィックスの本も書いていたので、授業で習うまで待っていては遅すぎると感じたものです。
最初は社員の子供や知人の子供などを中心に実験を繰り返し、教材の質を徐々にバージョンアップさせていき、4日間のカリキュラムでビジュアル言語から初めてJavaScriptでゲームを作れるようなところまで来ました。
秋葉原プログラミング教室では、プログラミングを軸とし、ゲームや遊びをモチベーションドライバーとして、国語数学理科社会英語全てを学ぶことを究極の目標にしています。
子どもたちは問題文を読み解くことで国語力を鍛え、解答することで推理力、推論力、論理的思考能力を鍛えられます。
ふつうの学習教材とは異なり、問題文には、時には決まった答えがない場合もあります。
自分の頭で想像して、クリエイティブな答えを書かなければならないのです。
そして子どもたちが一番興奮するのが、この問題です。
なぜなら子どもたちはクリエイティブに頭をつかうことが大好きだからです。
先生をビックリさせてやろう、おどかせてやろう、どう?僕って凄いでしょ?私っていいこと考えたでしょ?
そんなふうに大人に自慢したくなるようなクリエイティブな設問を用意してあげると、子どもたちは問題を解きながらも想像力をはたからせ、胸をワクワクさせながらプリントを持って先生の元に来るのです。
最初はScratchと同様、ビジュアル言語から始めます。
手前味噌ですが、ここではMOONBlockを使います。
私が作った言語なので、愛着もあるのですが、それ以上に、MOONBlockで作ったプログラムはそのままJavaScriptとして動作します。
また、JavaScriptとして動作しているため、ビジュアル言語でありながら部分的にJavaScriptのプログラミングを取り入れてスムーズにキーボードを使ったプログラミング言語の習得に誘導することができます。
キーボードを使ったプログラミングに移行する際にいくつか気をつけなければならない点があります。
だいたいBASICに挫折した人たちの最初のつまづきは、そもそものキーボードの使い方からです。
人間が普段使っているキーの数は、実はそれほど多くありません。
しかしプログラミングでは、|や_、''や`などなど、普通にメールをしているぶんには滅多に使わない記号を駆使する必要があります。
そのため、キーボードのどの部分をどう押せばどんな記号が出るか練習しておく必要があります。
そしてキーボードに慣れたら、まずはJavaScriptを使ってプログラミングの基礎的な教養をマスターします。
JavaScriptはそれほど美しい言語ではありませんが、今や世界で最も活躍している言語の一つであることは疑いようもありません。
JavaScriptをマスターしておけば、その後、RubyやLisp、Pythonなど、より美しい言語に移行した時にもその言語の美しさが解るようになるという効果もあります。そしてJavaScriptの基本文法はC言語に由来しているため、C++やC#、もちろんC言語そのものといった本格的なプログラミング言語を学ぶときにも、違和感なく学ぶことが出来ます。
どの言語をどのような順番で、どのような目的で学ぶか。これぞまさしくゲームデザイナーの腕の見せどころです。
一年目の秋葉原プログラミング教室ではまずはJavaScriptでシューティングゲームと、WebGLを使った3Dゲームを作れるようになってから、続いてPHPでWebサービスの作り方を学び、Pythonで画像処理や人工知能のプログラミングをマスターできるように計画しています。
ここまで来ると、大人でも学びたい、という人も現れてきます。
もちろん大人向けの講座も考えてはいます。
が、まずは子ども向けです。なぜなら、大人に教えるほうがより難しいからです。
大人は子供よりも飽きっぽく、説明をしても寝てしまいます。
子供に接するような報酬系が使えないので、また別の工夫をする必要があります。
大人向けには、来月早々に新刊を予定しています。
今度の本は、なんと新書なのに横書きです。
おかげ様でベストセラーとなった前著「教養としてのプログラミング講座」の続編で、「実践としてのプログラミング講座」と題し、文字通り実践的な内容でプログラミングを実生活にどう役立てるかということを書いています。
この本では、前著に引き続きMOONBlockを用いながらも、最終的にはHTMLとPHPとSQLを一気に学ぶ、というややアクロバティックなところまで踏み込んでいます。
なにはともあれ好調なスタートを切ることが出来た秋葉原プログラミング教室。4月も無料体験会を企画しているので、ぜひWebページをチェックしてください。
おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)
登録はこちら新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。