玉石混交の子ども向けプログラミング教育講座
近年、子どもにプログラミングを教えようという動きが活発化しています。IT企業や教育系企業が相次いでプログラミング教育に乗り出しています。しかし実際には内容にバラつきが多く、一概に「プログラミング教育」と言っても各社でその取り組み方は大きく異なります。
プログラミング教育を標榜する各社の方針は、大きく分けると以下のようなものが挙げられます。
- プログラミングを通して「思考の枠組み」を教えることを目的とするもの
- 使用言語:Scratch、Viscuit、コロコロゲーム工作ブロックなど
- 将来プログラマになることを目的とするもの
- 使用言語:Objective-C、Java、JavaScriptなど
- プログラミングを通してコンピュータへの興味を誘発することを目的とするもの
- 使用言語:Scratch、MOONBlockなど
- とにかくプログラミングのようなことをさせることを目的とするもの
- 使用言語:GameSalad、Unity、enchantMOONなど
突然湧いたブームであり、まだプログラミング教育に関する方針が定まっていない中で各社が独自の考え方でプログラミング教育を標榜しているため、一口にプログラミング教育といってもこれだけの違いがあります。難易度もバラバラで、とても簡単なものもあれば、とても難しいものもあります。筆者もよく知人から「夏に子どもにプログラミング講座受けさせたいんだけど、どれがいいの?」と聞かれることがあります。答えはケースバイケースでまちまちです。
IT業界にいても、どのプログラミング講座が一番いいのか、瞬時には判断できないほど多様性があるのです。
なぜ、子どもたちにプログラミング教育を受けさせるべきか
そもそもなぜ「子どもにプログラミングを教えるべき」、と考えられるようになったのでしょうか。それにはいくつか、きっかけとなる発言があります。たとえばAppleの創業者であるスティーブ・ジョブズは「すべてのアメリカ人がプログラミングを学ぶべきだ」という主旨の発言を1995年のインタビューで答えています。
筆者は子どもへのプログラミング教育の主眼は、プログラミングができるようになることではなく、むしろプログラミングを通じて、「思考のやり方を学ばせる」ということに本筋があると考えています。
プログラミング教育は、すべての学問に共通する「考え方」の根本を育てることができます。
今の学校教育では、たとえば算数では「1+1=2」、国語では漢字の読み書きといったことを学びますが、なぜそれを学ぶのか、ということに関しては深く議論されてきませんでした。現状の小学校の教育は、たとえば算数なら「1+1=2」、国語なら正しい日本語の文法、といったルールを所与のものとして教え、そうしたルールへの理解を積み上げていくことでより高度な思考能力を獲得することを目的としているはずです。
しかし、このような所与のルールだけを学ぶやり方では、ルールそのものを創り出す人間を育成することは不可能です。現在の学校教育をベースとした受験制度においては、ルールの中でしか能力を発揮できない人間ばかりが育成されることになります。だから現実の社会で活躍する起業家の多くは、大学を中退したハミダシ者(スティーブ・ジョブズもその1人です)の独擅場になってしまうのです。
ハミダシ者はルールを守りません。ルールを学ぶことはしてもルールを守ることが第一優先にはありません。だからこそ変化に適応し、まったく新しい価値観を創り出すことができるのです。
しかしルールを最も良く理解する方法は、むしろルールを構築し、創り出すことです。そしてルールの作り方を教える授業は現在の義務教育にはないのです。
答えのない問題を解き明かし、未踏領域を開拓する、開拓精神とその手法を学ぶことは義務教育の範囲ではできないのです。そしてもちろんこの状況は、小学校のみならず、中学校、高等学校や大学に進学しても変わりません。
しかしプログラミングとは、ルールを構築することそのものです。プログラムとはルールの集合体だからです。さまざまなルールを矛盾なく組み合わせ、また自らルールを作り出し、単体のルールでは到底想像もできないような巨大な思考の建築物を生み出す、それがプログラミングに秘められた力です。
プログラミング教育の有効性に注目された背景はプログラミングの持つ、本質的な「ルール構築能力の教育」への期待があるのではないでしょうか。
レッドストーンもプログラミングも楽しめるイベント開催!
「Minecraft × Education 2015 ~こどもとおとなのためのMinecraft~」
URL:http://www.mcedu.jp/
不用意なプログラミング教育への懸念
しかし筆者のように、子どものころからプログラミングをしてきた人間からすると、昨今の「プログラミング教育」に対する懸念もあります。それはプログラミングが「お習い事」になってしまわないか、という心配です。
筆者の母親はピアノ教師として、近所の少女たちを集め、月謝をもらって生活していました。これは「お習い事」なわけです。筆者自身も幼いころ、母親から直々にピアノを習ったのですが、すぐに嫌になってしまいました。それ以来、ピアノも音楽も嫌いです。
実母から厳しい教育を受けることの弊害もさることながら、「ピアノをやってみたい」というモチベーションが、通常の「お習い事」にやってくる少女たちよりも低かったのだと思います。
また、父親の方針で私は幼稚園児のころから英語を習いに行っていました。これが嫌で嫌でたまりませんでした。何しろ幼稚園児です。同じ英語教室には高校生や中学生、下手をしたら社会人もいます。そんな中にぽつんと幼稚園児が入れられても、会話すらままなりません。私もかわいくない子どもだったので、まわりに溶け込めず、英語もわからず、ただただ2時間その場にいるという苦痛に耐える日々でした。
しかし家に戻ると、満面の笑みで両親が「英語楽しかった?」と聞いてくるので、子ども心ながらに両親は良かれと思ってやっているのだ、と感じ取って「うん」と嘘をつき続けていました。楽しくもないのに楽しいと嘘をつき続けるのが本当につらい経験でした。
小学4年生のころについに爆発して、「もう英語に行きたくない」と言うと両親はたいへん驚きました。しかし自我が芽生えていた私は、初めて自分の意志を表明できたのです。
あまりにも早い英才教育を受けさせようとするとこのように失敗してしまいます。
今、私が英会話教室に通うとしたら、純粋に自分の教養のためと割り切れるだろうと思います。
私は結局、21歳でアメリカの会社で働くことになったわけですが、そのとき、ビックリするほど英語が喋れなくて驚きました。いったいあの苦痛の日々はなんだったのか、という感じです。
「お習い事」というのは、子どもが本当に心から通いたい、と思って通っているということはむしろ少ないのではないかと思います。物心つくころにはやらされていて、でも実際にはやりたくなくて、なんていう話をよく聞きます。そうなると、その人はもうそれがイヤになります。
プログラミング教育も、あまりに早くから親の強い意向で強要すると、逆効果になりかねません。これは義務教育にプログラミングが組み込まれる時も、同様の懸念があります。
子どもたちをどうやってプログラミングに目覚めさせるか
反対に、私がなぜプログラミングに夢中になったのかといえば、誰からも強要されなかったからです。
父は私が生まれたときから私にプログラミングをさせたがっていました。しかし当時はプログラミングを教えてくれる塾などあるはずもありません。また、父もプログラミングができたわけではありませんでした。そこで父が考えたのは、私をとにかくコンピュータに触れさせるということです。
近隣の大学のオープンキャンパスがあれば連れていき、野辺山の電波天文台のオープンキャンパスにも連れていき、とにかく行く先々で私にコンピュータを見せたのです。そして私が自発的にコンピュータに興味を持つようになると、父は大借金をしてパソコンを買いました。当時パソコンは非常に高価で、サラリーマンの月収の何倍という値段がするのは常識でした。
それから父がしたことは、私に小遣いを与え、プログラミングに関する本を私が欲しがったら、とりあえずそれを買い与えるということです。
私はただそれだけでプログラミングに夢中になりました。プログラミングは私にとっての砂場であり、夢中になれる遊び場でした。外で誰とも遊ばなくても、プログラミングをしているだけで幸せでした。
大人になってから、ピアノを弾けるミュージシャンと知り合うと、なぜ自分はあのときピアノを選ばなかったのだろうかとときどき自問します。しかしそれは、強要されたか自発的に興味を持ったか、という違いしかないような気がします。
どのワークショップに行かせるべきか?
子どもが興味を持続するには、常に感動を与えることが重要です。その意味では、最初からはりきってあまりに難しいワークショップに参加させてしまうと、子どもは興味を失ってしまう可能性があるということです。まずは触れるところから、次に追求するところへ、最後にもっと本格的なプログラミングを学ぶような教え方が理想的かもしれません。
また、1つの手法(プログラミング言語)に固執すると、せっかく「ルールを構築できる」という柔軟性を学んでいるのに、柔軟性のない頭が育ってしまいます。実際、プログラマは1つの言語に固執するあまり、最初に学んだプログラミング言語(いわばプログラミング言語の母語)からなかなか抜け出せない状態に陥りがちです。しかしそれではプログラマとしての成長は止まってしまいます。さまざまな言語を使いこなすことでプログラマはさまざまな思考法を取り入れて成長していくのです。
したがって、特定のワークショップに固執するのではなく、複数のワークショップを渡り歩き、むしろ積極的にいろいろな言語に触れさせることで、子どもを常に刺激し、「同じことを解決するにもさまざまなやり方(プログラミング言語)がある」ということを教えたほうが、プログラミングへの目覚めは早いのではないかと思います。
プログラミングの世界に触れる、最初の入り口としてのMinecraft
最近、小中学生の間でMinecraft(マインクラフト)というゲームが密かな人気を集めています。
これは、ブロックで作られた世界で、木を切り倒して材木を作り、材木を組み合わせて斧とピッケルを作り、ピッケルで石を切り崩して、手に入れた石で釜を作り、釜で材木を燃やして木炭を作り、木炭と材木を組み合わせて松明(たいまつ)を作るといったように、世界へ積極的に関わることで世界を構築していくゲームです。
ごく単純なルールが隠されており、そのルールを獲得し、外敵から身を守るというゲーム本来のおもしろさと、ブロックを組み合わせて自分の家や城や要塞を自分の思い通りの形として構築していくというクリエーション環境としてのおもしろさの両方を併せ持つゲームで、全世界で2000万人以上がプレイしていると言われています。
特筆すべきは、Minecraftの世界には特殊な魔石レッドストーンと、レッドストーンを組み合わせて簡単な回路を作るしくみがあることです。これはレッドストーン回路と呼ばれ、いわばプログラミングが具象化されたものです。Minecraftをやりこんでくると、自然にこのレッドストーン回路に興味が行くようになっています。
なぜなら、レッドストーン回路をうまく使うことで、より効率的に資源を集めたり、冒険したりできるようになるからです。
さらにレッドストーン回路やブロックの配置を組み合わせて、自動的にモンスターを湧かせて殺す、トラップタワーというしくみを構築することもできます。
Minecraftには定番の攻略本と呼べるものはなく、子どもたちはYouTubeで全世界のプレイヤーのプレイを見ながら、見よう見まねでトラップタワーやレッドストーン回路を作ることに夢中になっているのです。
これはプログラミングへの入り口として、まさしく理想的な環境と言えます。何しろゲームとして普通におもしろく、そして攻略を極めていく過程でごく簡単なレッドストーン回路から、複雑なトラップタワーまで、思考の枠組みをステップアップして学ぶことができるからです。
さらに、英ラズベリーパイ財団が開発した教育用コンピュータ「Raspberry Pi」では、専用に開発されたMincraft Piが動作するようになっていて、さらにこのMinecraft Piは、Scratchという、外部のプログラミング言語からコントロール可能になっています(Scratch2MCPI)。
レッドストーン回路は原理的には完全チューリングマシンを構築することが可能なので、Minecraftの世界の中だけでプログラム可能なコンピュータを構築することもできますし、実際に作った人もいます。けれども、それは巨大建造物になってしまいます。
Scratchはマサチューセッツ工科大学(MIT)で開発された教育用ビジュアルプログラミング言語で、レッドストーン回路より高度なプログラミングができるようになっています。
Minecraftに一通り飽きてしまったら、今度はScratch2MCPIでScratchとMinecraftを組み合わせたプログラミングに挑戦させてみると、より子どもの理解と興味を深めることができるのではないかと期待されています。
そしてScratchの限界を感じ、飽きてしまったら、そこから改めてJavaScriptやObjective-Cといった本格的なプログラミング言語の世界に飛び込んでいくといいかもしれません。
当然、それらの世界はとても手強いので、何度も挫折してScratchにもどったり、Minecraftに戻ったりするかもしれませんが、強要せずほうっておくと、そのうち自分で難関を乗り越える力がつくようになります。
筆者が考えるプログラミング教育にとって最善の方法は、環境だけ用意して放っておく、といういささか無責任なものではあるのですが、実際にプログラミングを使いこなすプログラマ達を見ると、これしかないのではないかと思えてならないのです。
レッドストーンもプログラミングも楽しめるイベント開催!
「Minecraft × Education 2015 ~こどもとおとなのためのMinecraft~」
URL:http://www.mcedu.jp/