4年ほど前から発達障害の方(アラフォー)にプログラミングを教えています。
2~3週間に1回施設を訪問して、1~2時間ほど何か作るようにしています。
その方が学ぶことにこだわっていたC言語を入門書一通り教え、コンピュータが動く仕組みを教え、他の言語も試すなどしていくうちに、ようやく分かったことがあります。
この人にとって、文字や数字がどうなろうと関係がないのです。
たとえばHello Worldを改変してforループで3回出力してみるとか、どうでもいい。
あるいはrand関数のサンプルとして占いっぽく「金運:良い」「健康運:イマイチ」とか出してみたところで、自分とは関係ない。
fprintfでファイルに出力できるようになったところで、そもそもファイルに書きたい事なんてない。
発達障害で「意欲がない」パターンというのもあるのでしょうが、おそらく元々さほどコンピュータやプログラミングに興味がなかったのでしょう。
自分を振り返ると、20年ほど前パソコンを親に買ってもらったときはパソコンに興味があったし、コンソール画面に親しんでいました。その後Linuxを触りまくった時はコマンドをパイプで繋げたりしてファイルやバッファの中身をどう加工するかで入出力(文字)も頭にイメージできていました。
放っておいたらずっとパソコンを触っていました。
この人は、そういう経験なしにプログラミングを学ぼうとしているのです。
他人と接する仕事はイヤ。単純作業はイヤ。ほとんどそんな理由でプログラミング学習を選んでいます。
そんなんなら辞めてしまえと思わなくもないのですが、この人がもし何らかの形で自立するなら、あるいは自立できなくても何か1つくらいは「自分はコレができる」という自信に繋がれば、という理由で今もプログラミング学習の支援をしています。
最近では家事を手伝うようにもなりましたし、施設へ通うのも親の送迎(車)から自転車になりました。
昨年末からC言語をいったん離れ(それ自体がスゴイことなのです)、MOONBlockというビジュアル言語を試していますが、これは良さそうです。
ビジュアル言語だとキャラを動かすだけでも反応が違います。
ゲームっぽいものを作れるようになると、ゲームバランスが悪くて速攻でゲームオーバーになったり、キャラがとんでもない動きをしたり。分かりやすいフィードバックがあるのが良いのでしょう。
私が誘導しながらですが、このような横シューティングゲームを作っても頭が付いてくるようになりました。
2016-04-23 MOONBlock(動画)
ここまでやってきたことを振り返ると、MOONBlockを開発された方がブログでおっしゃっていることそのままだなーと思います。
だから大人に教える時はお望み通りにまずJavaScriptを打たせる。するとみんな混乱して打てない。このあと『JavaScriptブロックの使用』が良いとされていますが、それが必要になるための導線を考えなきゃな、と思っています。
キーボードでのプログラミングが桁違いに難しいということをまず体感させる。
そのあと、MOONBlockで概略から教える。すると、驚くほど真面目に勉強してくれる。
これは僕たちが長年の経験から導いたメソッドである。
その前に自分自身が使ってみないといけないのですが。