Webデザイナー志望の初心者にプログラムをゼロから教える時はいきなり○○
毎年この時期は頭を悩ませてる気がします(苦笑)。「Webデザイナー志望の子達にどうやってプログラムを教えるか」という永遠の難題について、「プログラムを教える」事をしているorこれからする人にとって少しでも参考になったら幸いです。
以前このブログでも書いたようにHTMLとCSSを教える事に関してはほぼ方法論が確立していて、今も毎年マイナーチェンジはしていますがそのやり方はほとんど変わっていません。
しかし、ことプログラム「JavaScriptをデザイナー志望の子に教える」という難題はここ数年来毎年頭を悩ませて来ました。そしてようやくここ最近になってよりベターな方法が確立しつつあるので自身の教え方の変遷などを交えつつ紹介してみたいと思います。
プログラムの基礎と基本構文を最初から編
僕が教え始めた当初はプログラムの「いろは」をゼロから丁寧に教えていました。「セミコロンってどうやってうつの?」(意外とスマホ世代はセミコロンの打ち方がわからなかったりします)というような人たちが対象です。プログラム初心者ばかりにプログラムを教えるということがどれほど大変かは経験したことのある方なら分かると思います。
「プログラムとはなんぞや」というところから始まり、エディターの使い方、全角文字をいれてはいけないことや、文の終わりにはセミコロンを書くといった基礎的なことから教えて行きました。そして「変数とは、関数とは、if文、for文…etc」と順を追って教えて行きます。しかし今思えばこのやり方はあまり良くなかったかなと思っています。教える対象が「SEやプログラマー志望」の人たちだったらあるいは上手くいったかもしれません。しかしほとんどがデザイナー志望で学校に入学してきた人たちに最初からがっつりとプログラムをやるのはかなり難しい事でした。
一番苦労したのがコードを打つ事での「目に見える変化」が分かりにくいということ。コンソールにHello Worldが表示されたからといって、それがこの先どのようにWebサイトを作る上で役立つのか?生徒達からすると目が点です。これは自分の力不足もあったと思いますが、JavaScriptを学ぶ事で何が出来るようになるのか?それを上手く伝えきれていなかったように思います。
実際にサイトで使えるサンプルを使いながら編
そこで次に試したのが基礎的なプログラムの作法を教えた後に、サイトで実際に使えるようなロールオーバーやタブメニュー、カウントダウンタイマーなどの実例を用いつつ、プログラムを解説していくというやりかた。これは以前のやり方よりは手応えを感じました。しかし「動く実例」があるので結局コピペで終わってしまう人が多く、プログラムのロジック部分までしっかりと理解出来てそれを応用できる人は少なかったように思います。
ただ、デザイナー志望の子達に教えるには「目に見える分かりやすいサンプル」があった方が断然良いという事を確信できたのは大きな収穫でした。
いきなりjQuery編
それまでのやり方を一新しました。初心者でもいきなりjQueryから入るというやり方。プログラムの基礎的な知識(変数、関数、基本的な制御文など)さえも説明せずにいきなりjQueryで何か作らせるという方法です。「習うより慣れよ」とにかく手を動かせるようにしました。
実際にやってみて分かった事ですがこれが一番良かったです。jQueryを使うので記述が少なくて済み、尚かつすぐに「目に見える変化」があるものが作れる。生徒達もすぐにブラウザで確認でき、動いたり変化のあるものが作れるので楽しいようです。
JSの基礎的な知識などはjQueryでモノを作らせながら徐々に教えて行きます。ある程度慣れて来るとプログラムに対する意識も変わって来ます。「動かすのが楽しい」というように思ってもらえたらしめたもの。プログラム初心者にとって「プログラム → 難しい → 嫌い」といかに思わせないようにするかが勝負の分かれ目といっても良いでしょう。
学ぶ姿勢が身に付いた
jQueryをいきなり教えることでのメリットは他にもありました。jQueryはプラグインで様々な事が実現できるので、自ら色々なプラグインを「Googleで探して実験し、実装するという姿勢」が身に付いた事。新しい事を学習していく上では欠かせない事だと思います。もちろんjQueryだけやっていくのでは他知識が偏ってしまうので、その後フォローはしていきます。
ある程度プログラムに慣れて来た後は
今悩んでいるのはjQueryとJSの基礎が身に付いた後の事です。素のJavaScriptについて言語仕様の深いところまで教えるべきか、それとも様々な最新のライブラリを触らせて色々なものを作らせながら応用力を鍛えるべきかということ。先日某有名IT企業でバリバリJSばかりを書いている友人に相談したところ、後者のほうが良いんじゃないかという意見でした。
彼が言うには「今はゼロからJSを書く事が少なくなっている。何らかのライブラリを利用することがほとんど。なので色々なライブラリを触らせつつ何か作らせた方が応用力もつくし力になる」ということでした。みなさんはどう考えますか?