Hatena::ブログ(Diary)

shi3zの長文日記 RSSフィード Twitter

2016-09-05

小中学生にJavaScriptを教えてみた 04:12

 全国小中学生プログラミング大会(JJPC)の企画の一環として小中学生を対象として無料のプログラミング教室を実施しました。


 募集から三日後に実施という、ドタバタすぎる展開でしたが、なんとか生徒さんも集まり、会場は大盛り上がりでした。

https://i.gyazo.com/57aaddb97504ad84176bc609e90d12ec.png


 最初だけ僕がプログラミングを学ぶことの意義を説明して、それから秋葉原プログラミング教室で普段から子供たちにプログラミングを教えている後藤先生にバトンタッチ。


 後藤先生は本当に小学校の先生みたいにすごく丁寧に教えるので子供たちも楽しそうでした。


 午前中は初心者向けにいつものようにビジュアル言語であるMOONBlockを教えたのですが、午後は初の試みとして、小中学生にいきなりJavaScriptを教える中級者向け講座をやってみました。


 するとやはり痛感したのは、今の子供はキーボードの使い方がまだつたないこと。

 たとえばシフトキーを押しながらカーソルキーとか、ctrl+Cとctrl+Vとか、わりと基本的なことを知らない。もしかすると、学校の授業では習わないのかもしれない、ということでした。


 そしてアルファベットに関しても、大文字と小文字の違いがわからなかったり、子供に寄って進度がバラバラなのでなかなか大変でした。特に、「e」を出すのに、「E」のキーを押すなど、そういうところが既に難しいのだということを改めて知りました。帰り際に保護者の方からメモを頂き、非常に参考になりました。



 ところがそんな状況にも関わらず、子供たちは果敢にプログラミングに挑戦し、実質2時間という短い時間の中で、enchant.jsを使ってインタラクティブなプログラミングをするところまで一人の脱落もなくついてきてくれました。


 本当はシューティングゲームの開発まで行きたかったんだけど、さすがに時間オーバーになってしまったので、ソースコードを配って「続きはお家でやってね」という案内に留めました。


 一歩一歩、少しずつプログラムができてくる度に、子供たちが「やった!動いた」と素直に反応してくれるのが新鮮で、僕も後藤先生も頑張ったかいがありました。


 今回、募集期間が短かったのですが、UEIが運営する「秋葉原プログラミング教室」では、小中学生向けのプログラミングの無料体験会を毎月開催しています。今月は9月17日です。

9分間メソッドで学ぶ! 秋葉原プログラミング教室

http://www.akiba-programming-school.com/


 秋葉原プログラミング教室のカリキュラムでは、さすがに一日でいきなりJavaScriptをぜんぶ教えるようなことはしませんが、ビジュアル言語からスタートしてだいたい1ヶ月後くらいにJavaScriptを習い始めます。教室の主な教材がJavaScriptベースで、JavaScriptを使ってプログラミングができるようになるとプログラミングは俄然面白くなっていきます。毎週月曜日から土曜日の週6日間体勢で教える教室なので負担も少なくないのですが、プログラミングの楽しさを一人でも多くの人に伝えたいという思いからやっています。


 子供向けのJavaScript参考書としては、弊社の布留川の本が良いです。



 ゲームを作りながらプログラミングを学んでいくという内容で、こども好きの布留川らしい読みやすい文体でとても丁寧に解説しています。


 もう少し初心者向けのものも、同じ布留川英一が書いたMOONBlock本がわかりやすいと思います。



 この話のミソは、ビジュアル言語で勉強してすぐにJavaScriptにステップアップすることです。

 とっかかりはScratchでもいいのですがScratchからいきなりJavaScriptだとハードルが高すぎて挫折してしまう可能性があります。


 順番としては、


 (Scracth)→MOONBlock→enchant.js(JavaScript)→JQuery(JavaScript)→Python/Ruby/PHP


 みたいに覚えるのがいいと思います。

 まあ何をどの順番で覚えるのか、というのは個人の思想の問題なので、ScratchからいきなりSwiftやってもいいんですけど、ちょっとハードル高いかなという気がします。


 いろんな言語が使えるマルチリンガルなプログラマーになるというのも重要なのですが、それ以上に重要なのは、自分の母語となるプログラミング言語を持つことです。


 その意味でJavaScriptは、悪くない選択肢だと思います。

 第一に、無料で、どの環境でも使えます。WindowsでもMacでもLinuxでも、そしてiPhoneでもAndroidでも全く同じプログラムが同じように動く環境というのはなかなか探すのが大変です。


 第二に、安全です。

 JavaScriptはコンピュータを破壊したりできないようになっているので、コンピュータに一切影響を与えずプログラミングだけを行うことが出来ます。


 第三に、高速です。

 初学者のときは、とにかくプログラムを書いて試すという一連の流れが、速ければ速いほど上達が速くなります。ところが他のコンパイル型言語(C++/Java/C#など)を使うと、どうしてもコンパイルの時間だけ待つことになります。そのぶん学習が遅れます。



 この3つの条件を全て満たす言語はそう多くありません。Scratchはこの条件を満たしますが、Scratchだけやっていてもその上の段階には行けません。その他にもJavaScriptにはプロトタイプ式オブジェクト指向や第一級関数など、最新の言語でも採用されているいくつかの強力な言語機能があり、JavaScriptだけを極めても充分面白いことができるというのも特徴です。


 また、JavaScriptの文法は、C++やC#、Javaといったメインストリーム言語に近い文法なので、JavaScriptが完璧にできる子供は、C++やC#を学ぶときも他の言語から移行するときほど苦労しません。まあC++に移行しようとしたら原始的すぎてビックリするでしょうけど。その道の延長線上にマシン語、つまりハードウェアのプログラミングがあるわけです。


 実際、布留川はJavaScript以外にもいくつものプログラミング言語や環境を使いこなし、その度に本を執筆しています。


 プログラミングの世界で身につけたスキルは現実の世界を変える力になります。

 プログラミングのために学んだことは決して無駄にはなりません。プログラミングを通して身につけた考え方や概念を整理する作法といったものは、人生を通じて役立つ実学となります。


 だからこそ、なるべく早い段階から、プログラミングを身につけて欲しいと思います。


 挫折もするでしょうが、何度でも挑戦すれば必ず応えてくれるのがプログラミングという道の素晴らしさです。

 体格や筋力、記憶力や判断力といった生来の才能すら必要ないのがプログラミングの世界です。ただ根気よく、いろいろなプログラミングに挑戦していけば、それだけで力がついていきます。



 全国小中学生プログラミング大会の応募締め切りは9月15日

 ゲームでも紙芝居でも、プログラミングで表現されたモノならなんでもアリ!というコンテストです。

 賞品としてはMacBookProやその他豪華副賞が用意されています。


 まだ間に合いますのでぜひみなさん奮ってご応募ください

夏休みにプログラミングを楽しもう !!|第一回 全国小中学生プログラミング大会

https://i.gyazo.com/e63dd0441738e4b2606006fa6922e25e.png

http://www.lab-kadokawa.com/jjpc/


 あ、そうだ

 今夜、小飼弾さんのニコ生に出演します

 何の話になるかわからないけど、プログラマー談義をするとかしないとか

https://i.gyazo.com/d198d53fcd6b214a6d84e4c356638c2e.png

http://live.nicovideo.jp/watch/lv272819838

http://live.nicovideo.jp/watch/lv272819838