JSTTweet筆者の母親は、今年で69歳になります。還暦はとうに越し、年金時給年齢も超えている母ですが、未だに色々な仕事をしています。母はおそるべき機械音痴で、まだ30代の頃から、ビデオデッキの録画予約はおろか、懐中電灯の扱いさえ危ういという有様でした。彼女の本職は音楽で、東京の音大の声楽科を卒業したあと、地元に戻って音楽教師を続け、市民オペラや市民合唱団に熱心に参加していました。ピアノ教室が一段落したあとは、学習塾を開講し、近所の子どもたちを教えていました。教えることが好きで、子供が好きな母親でした。そんな母ですから、今は田舎で障がい者の介護などを時折アルバイトでやりながら、父と二人余生を送っているのですが、筆者が昨年から準備している全く新しいかたちのプログラミング教材を母にためしてみることが出来ないか、昨年末に両親に会った時に不意に思いついたのです。これは筆者が根っからの貧乏性で、仕事に関係しないことには1秒たりとも時間を費やしたくないという偏執狂的な性質から思いついたことですが、もしかするとそれは素晴らしいアイデアかもしれない、と思うようになりました。筆者らが標榜する「人類総プログラマー化計画」は、あまねく人類すべてをプログラマーにする、という壮大な目標を掲げています。それは、ある程度は遠い未来のことを想定していました。現世人類に関して、さほどの期待を持っていなかった私は、当然、自分の母親世代に関しては完全に頭から抜けていました。筆者が単に「人類」と呼んだ場合、それは少なくとも今から10年から20年後のそれを指していました。少子高齢化社会となった今の日本では、母が10年、20年後も生きていない保証もありません。子として考えれば息災で居て欲しいと考えるのが筋です。母とさほど変わらない年齢の、UEIリサーチ西田友是所長にしても、ご両親が息災であるという話を聞くにつけ、筆者にとっての両親もまだまだ余生があると考えるのはむしろ自然なことです。その意味では、私の祖母もまだ息災なため、これはもう10年20年でどうにかなる問題でもないのかもしれない、と考えるのはむしろ自然なことでしょぅるしかし現実には、現役を引退し、年金に頼って生活する老夫婦にとって、仕事がないことというのは、生きがいの喪失をも意味します。母は、どこへ引っ越しても、どんな境遇になっても、仕事を探し続けることをやめませんし、今もなお新しいことに挑戦する意欲を失ってはいないのです。私が仮に人並みに60歳で引退するとして、それから100歳まで生きるとして、残りの40年をただ仕事もなく無為に生きていくというのは、どう考えても虚しさしか感じません。筆者が与えることのできるやりがいとはなにか。孫を育てる、というやりがいにしても限度があります。子供は思いのほか、速く成長してしまうものです。そこで本来は子供向けに作った教材ではあったのですが、昨年からUEIで繰り返し行なっている実験教室に、母を呼んでみたのです。すると驚くべきことが起きました。UEIで開催している子供向けプログラミング教室では、近所の子どもたちが目をキラキラさせながら授業を受けています。その子どもたちの純粋に「学びたい」という姿勢を目の当たりにして、根っからの教育者である母は非常に大きな感銘を受けたようでした。あろうことか、一日の終わりに、「私もパソコンを買ってプログラミングを勉強してみたい」と言い出したのです。今はまだ小さな孫も、何年かすれば今日授業を受けた女の子たちと同じ程度の年齢になります。なったときに、ぜひ、孫娘にプログラミングを教えたい、という強い動機が母の中に芽生えたのです。翌日、彼女は秋葉原のヨドバシカメラで買ったばかりのMacBookAirを携えて電車で2時間の距離を乗り越えやってきました。MacBookAirは母のパート収入の一年分に相当します。それだけ強い動機を感じたのでしょう。筆者らが用意した教材を順番にこなしながら、まず母が聞いてきたのはこんなことでした。「このパソコンの平べったい部分はなに?」そう、彼女はタッチパッドを知らないのです。パソコンを操作したことがまったくない人なのです。携帯はらくらくフォン、家の電話は黒電話、そんな人間がいきなりプログラミングを学ぼうと言うのです。筆者も一抹の不安を感じしまた。いうのも、実のところ、子供に教えるのと大人に教えるのでは、大人に教えるほうが遥かに難しいからです。子供は、ちょっとしたことで驚きを感じたり、歓びを感じたりして、それがドライバーとなってどんどん興味を抱いていきます。画面に文字を表示されるだけで驚いたり、文字が大きくなるだけで喜んだりします。彼らにとって、なにか新しいことが自分にできる、新しい能力を獲得できる、自分自身を拡張(エンハンスメント)できることそのものが大きな歓びなのです。それが可視化されるから、プログラミング教育は子供の学習意欲を激しく刺激し、増進させる効果があるのです。大人になると、例えば同じことをするのにももっと効率的な方法があるのを知っています。文字を出したいだけならばワードプロセッサを使えばいい。文字を大きくしたいなら、ワードプロセッサの装飾機能を使えばいい、という感じで、プログラミングによってできるようになったこと、というのにたいした歓びを感じられません。「もっと簡単な方法があるのに、なんてまどろっこしい」と感じてしまうのが大人の鈍った感性です。母の場合、少しラッキーだったのは、コンピュータを「全く」使えなかったことでしょう。使えないということは、条件は子供と近いところまで来ています。なにができても新しいことであり、なにが実現されても驚きなのです。ひとつ、プログラミングの初心者に陥りがちな疑問が、「今やっていることの延長上でどこまでいけば自分のやりたいことができるようになるのだろうか」ということです。「ポケモンみたいなゲームを作りたい!」と思ってプログラミングを始めるとします。始めるものは、たとえばScratchでもSwiftでもいいのですが、どちらもポケモンみたいなゲームを実現するまでには果てしない道のりがあります。「ポケモンみたいなゲームが作りたかったのに、こんなのいつまでやっても作れない」と投げ出してしまうか、それとも別の面白さを見つけてハマれるか、というのは運次第です。これが大人になると、そもそもプログラミングを学ぶという動機が「楽して億万長者になれそうだから」というものであることが少なくありません。明日のマーク・ザッカーバーグを目指してプログラミングを始めるというパターンです。いう人は、プログラミングそのものを面白いと思っているわけではないので、勉強しながらも「一体どうしたらFacebookみたいな成功ができるんだ」という不純な思いが、プログラミングに向かう姿勢を妨害します。一種の自家中毒を起こしてしまうのです。これはプログラミング中級者も陥りがちなポイントです。プログラミングを学ぶときには、「目指すべきゴール」と、「今自分にできること」の間のギャップをいかに埋めていくか、遠大なゴールから逆算して、いかに現実的な中間目標を設定できるか、ということが非常に重要になります。考えると、既存の義務教育や高等教育のカリキュラムはうまく設計されています。中学1年生はここまでの範囲、高校一年生はここまでの範囲、とある程度マイルストーン(中間目標)が決められているため、学習者は「少なくとも12歳までにはここまでできてなければならないんだな」といった感じに自分のポジションを確認することができます。初心者、中級者に多いのが「次になにをすればいいのかわからない」もしくは「自分でも何がしたいのかわからない」という状況です。手当たり次第にいろんな言語に手を出してみたり、いろんなものを作ってみたりするのですが、それでは興味を持続させることは困難です。プログラミング自体が一種のパズル性というか、ゲーム性を持っているのですが、プログラミングを学ぶプロセスにはそうしたゲーム性が導入されていないことがほとんどです。筆者が大学やその他の場面でハッカソン型ワークショップを多用する理由のひとつは、そうしたゲーム性をプログラミング教育にとり込むためのひとつの手法です。プログラミングを学習するという行為そのものをゲーミフィケーションするのです。Playというゲーム教材です。これは、ゲームをクリアするためにはプログラムを書き換えなければならないという制約から始まり、手軽にプログラミングに入門できて、さらにはオリジナルのゲーム開発まで可能にするという仕組みです。石川県を中心に子供向けのワークショップを繰り返しており、大きな成果が生まれています。ゲーミフィケーションされたプログラミング教材は、子どもたちにとってはとっつきやすいのですが、高齢者にとっては却ってわかりにくいという欠点があります。ゲームに特有の用語、たとえばHP(ヒットポイント)などという用語が最初から頭に入っていないと難しいのです。私の母親はもちろん、ゲームなど無縁の人生を70年近く過ごしてきたわけですから、HPと書かれてもそれが何の略なのか、ヒューレット・パッカードなのかハリー・ポッターなのかもわかりません。我々の作った教材で、母が本当にプログラミングをできるようになるのか、筆者としても半信半疑でした。教材には筆者らが開発したプログラミング言語であるMOONblockや、筆者らが開発した統合開発学習環境(IDLE)であるcode.9leap.net、そしてミドルウェアであるenchant.jsをひとまず使用しています。筆者としてみれば、これまで長年ほうっておいた親不孝な息子の人生の集大成とも言える独自のミドルウェアと独自のプログラミング言語、独自の教育手法を母に試しているのですが、母親は当然、そんなことは知る由もありません。彼女はOSが何か、といったことすら知らないのです。午前9時から3時間ほど、母はキーボードの文字を一文字一文字、探しながら、時には日本語の入力方法と英字の入力方法を質問しながら、なんとか教材をこなし、気が付くと、ゲームが完成していました。筆者としては、それはとても見慣れた光景のはずでした。これまで、筆者は少なくとも1000人以上の老若男女、国籍も立場も年齢も様々な人々にプログラミングを教えて来ました。したワークショップに参加した方で、全くプログラムが書けなかった方というのは一人もいなかったのです。それでも、自分の母親が、ビデオデッキの録画予約さえ満足にできない、機械の設定といえば、目覚まし時計のアラーム設定くらいしかできない母が、自分の発明したプログラミング言語と教材で、曲がりなりにもプログラミングを自主的に覚え、実行したという単純な事実は、感動的ですらありました。これまで、PCには全く触ろうとしなかった母が、どうしてプログラミングという、一見すると難しい問題に挑むことを決意し、実行できたのか。技術の進歩というのはあります。母にBASICを教えようとしたら、こんなに簡単にはいかなかったでしょう。最先端のオブジェクト指向とビジュアルプログラミング言語だからこそ、最初のハードルを乗り越えることができたのだと思います。BASICはプログラミング以前の障害、たとえばキーボード操作に習熟するとか、特有のユーザーインターフェースを覚えるとか、そういうものが多すぎるからです。重要なのは、母にとって強力な動機となったのは、プログラミングをコミュニケーションの手段と捉えたことです。孫娘や息子と会話するきっかけになる。孫娘にプログラミングを教えることができるかもしれない。いった五教科に広げていきます。子供が五教科に興味を持つものごとの中心にプログラミング言語を置いているだけなのです。ゲーム開発には、まず数学、特に微積や三角関数といったものの活用は不可欠です。リアルな動きを作るには、物理学も必要です。そもそも微積は物理学の誕生と密接な関係がありますから、高校の数学で最もつまずくと言われている微積を子供の頃から感覚的に知っておくことは得しかありません。プログラミング言語は英語で書くのが普通です。従って英語に関する基礎的な教養、読み書き、簡単な文法といったものも不可欠です。優れたプログラマーは、難なく英語で会話できます。英会話学校になど一度も通ったことがなくても、プログラミングがちゃんとできる人は英語を苦もなく読み書きできます。プログラミングの最新情報は全て英語で書かれており、自分の知りたいことを知るためには、英語を必ず読めるようにならなければならないからです。ゲームを作るための題材は社会を学ばないと出てきません。歴史や社会の仕組みといったことをプログラミングを通して学び、プログラミングを通して学んだことを表現するというプロセスになります。ゲームでは短い文章で必要なことを伝えきらなければなりません。これは本質的な国語能力です。優れたプログラマーは口下手であっても文章力が高い人が少なくありません。それは、効率的なプログラムを書くというのは効率的な日本語を書くということに近いからです。従って、母は一通りプログラミングのお作法さえ覚えれば、それを入り口として孫娘に五教科全てを教えることができます(もともと母は学習塾を経営していたという経験もあるので)。母はプログラミングを学びたいという強烈な動機を得たのではないかと思うのです。1月24日に、教育NPO法人のCANVASさんで、筆者らが開発した独自のプログラミング教材を用いたワークショップを開催します。筆者らは複数のアプローチでプログラミング教育を模索しており、24日のワークショップでは独自に開発したプログラミング端末であるenchantMOONを用いたプログラミング教育の実際について実際に体験をしていただきながら解説する予定です。プログラミング教育にご興味のある方はぜひご参加いただければと思います。Tweetおすすめ記事と編集部のお知らせをお送りします。亮(しみず・りょう)新潟県長岡市生まれ。LLC.とともにギリア株式会社を設立し、「ヒトとAIの共生環境」の構築に情熱を捧げる。センター客員研究員を兼務。(KADOKAWA)」「プログラミングバカ一代(晶文社)」など。