私は一年半前あたりからプログラミング教室で小中学生向けでプログラミングを教えている。
そもそも、計算機科学系の大学に行ったわけではない人がなんでプログラミングを教えているの?という話は長くなるので、この場では書かないけど、話の成り行き上、プログラミングを教えることになった。
どう考えても適任ではないだろうと感じたが、私の何かを見出して話を持ちかけてくれたわけだ。
出来る限りのことはしようとやりますと返事をした。
小中学生にプログラミングを教えること。
不安がいっぱいだったけど、1年間教えてみて、やってよかったと思うことがあまりにも多いので、そろそろ書きたいと思います。
小中学生の時に専門を持った大人と出会うことは将来に良い影響を与えるだろうという思想が素晴らしいと思い、
京都のあるNPOに協力することにしました。
(あるNPOといっても自己紹介のところに書いてある)
詳細は省くけど、いろいろあってプログラミングを教えることになりました。
私自身、計算機科学系の大学院に行きたいぐらい、コンピュータにハマっているので、
中学生らもコンピュータの面白さに触れてほしいと教材は何の言語にするか本当に悩みました。
とりあえず候補に挙げたのが、
・Scratch
・PHP
・Java
・JavaScript
Scratchは子供向けに開発されたイベント駆動型の言語で、
コードを書くことなく、ドラックドロップのみでプログラミングが完結するという良さがあり、
完成したコードというのがアニメーションということもあって盛り上がりやすい。
だけど、
子どもたちの作成したコードを眺めると、猫の動きを力技※で指定していることが多く、
これだとプログラミングを書いているらしさはないなと感じた。
※繰り返しやif文を使わずにアニメーションを作っていること
プログラミング的要素を書かせる様に誘導できればとても良い言語なので、一旦保留にした。
PHPはSOY CMSで使われている言語で使い慣れているから話しやすいけど、
書き始める前の環境構築が大変な上、子どもたちが興味を持ちそうなアニメーションができないので却下
Androidで使われているJavaはどうかって話だけど、
Javaは何でもできるが故に難易度高すぎるだろということで却下
で、挙がったのがJavaScript
JavaScriptはブラウザとメモ帳があれば動き出す言語なので、環境構築がないし、
計算はもちろん、HTML5と組み合わせれば簡単なアプリはできるし、
canvasがあるので、頑張ればアニメーションだって書けるし、
Node.jsでサーバサイドのアプリも書けるし、
Cordovaやnw.jsでネイティブアプリっぽいことも書けるということで
JavaScriptをメインにすることにしました。
JavaScriptのすべてがオブジェクトという設計思想のおかげで柔軟なコードが書けるけど、
それがJavaScriptをわかりにくくしていて、コードを汚くする要因であると感じていたので、
小中学生向けのプログラミングとして適切なのかな?
という不安要素はありました。
とりあえず、コードをとにかく綺麗に書くということをモットーに、
O'Reilly Japan - 開眼! JavaScript
JavaScriptの言語仕様が優しく説明されていると定評のある本から読み始めた。
PHPはCでいう配列とリスト構造の違いを深く考えずにごっちゃにして使用することができたけど、
JavaScriptではPHPの連想配列を先に配列を用意して、
その後にCでいうリスト構造に当たるオブジェクトをプッシュするわけで、
そういうなんとなく書いていたものが徐々にクリアになっていくのが体感できた。
おそらく、小中学生に教えるという機会がなければ、
一つ一つをクリアにしながらコードを書くということは意識しなかったと思う。
次から
JavaScriptを使って実際にぶつかった課題等について書いていきたいと思います。
- 続く -