前にもちらっと言ったが、最近C言語をオンラインで教えている。ボランティア。

karino2の暇つぶしプログラム教室 C言語編

今はとりあえずPostScriptのサブセットのインタープリタを書かせて、それをslack上でレビューする、という事をやっている。 しばらく教えているとすぐ上達するので、これはなかなか有意義なんじゃないかな、という気がし始めている。

そもそもプログラムは入門書を終わった次くらいの所は教わった方がずっと良い、と以前から思っていた。 ただ座学とかじゃ駄目で、コードを結構な時間書かせてそれを添削する、という必要がある。 だからプログラム教室とかじゃ駄目だな、とは思ってた。 コードを書く時間を結構使ってもらう必要があって、その間は一人でいい。 ただ、質問には答える必要があるし、要所要所で必要な情報の講義みたいなのは相手に合わせてやる必要はある。

で、今回はそれがうまく出来ている気がする。 これは有意義なので、もっと流行らんもんかな? webのアクティビティとして。 ブログを書いたりstack overflowで答えたりするのとおなじノリでさ。 このプログラムを結構書かせてslackで添削したりするのを、 「プログラム演習」と名付ける事にしよう。 大学の頃の数学の演習の授業に似ていると思うので。

プログラム演習には2つの要素がある。「課題」と「指導」だ。

プログラム演習に必要な「課題」

プログラム演習には、まず、結構たくさん書いてもらう為に教材が必要だと思う。 プログラムを書いた事が無い人向けにある程度は誘導がありつつ、 でも自分で考えて書かないと書けない程度には自由度がある物が必要だ。 しかも作ろうとする物は決まっていて、作る事に意義がある物が良い。 好きな物を作らせるのでは無く、作る物は用意した方がたぶん良い。 そして作る物の説明の他に、少し難しい部分のプログラムの説明も必要だろう。 実際にある程度の規模の物を作ろうとしないと出てこない事柄について説明をしつつ、 本を読んだだけでは良くわからない類の事も、必要になる都度説明を補足しておく。

この手の課題は作ろうと思えば作るのはそう難しくない。 ただ作らないと世の中には無い気がする。 そして作るのは結構たいへん。 これは無職くらい時間が余ってないとちょっと難しいかなぁ、というくらいには大変だ。

なかなか大変だが、この課題は一度作れば割と使いまわしが出来る気がする。 今回自分が作った物は、C言語中級としては他の人も指導に使えるんじゃないか。 逆に他人が作った手頃な物があれば、自分はそれをやらせて指導だけするでも良いな、と思った。

プログラム演習の「指導」

課題はちょっとガチな暇人じゃないと作れないかな、と思うが、 「指導」はそんな大変でも無い。 ちょっとフォーラムなどで質問に答えるのに毛が生えた程度の労力で出来る。 これは無職じゃない人でも趣味で出来る範囲じゃないか。 現状はslackでやってるが、もうちょっとforumっぽく残る仕組みがあればさらにやっていく都度楽になりそう。

「指導」はそんなに大変じゃない代わりに、他人にやった物を使い回すのは難しい。 指導は人力でその都度相手に合わせてやる必要がありそう。

また、課題も相手の実力に合わせてある程度のカスタマイズはやった方がいい気がする。 別に皆が完全に同じ課題をやる必要は無いだろう。 カスタマイズは一から作るよりはだいぶ楽なので、 その位はやってもいいんじゃないか。一人一人にオーダーメイドの教材。

そこはフォーラム的な形でうまい事他人の質問と解答が教材から見れればそれで十分かもしれない。 duolingoとかそんな感じになってるよね。

この指導の所はもうちょっと何をやるかを教える側、教わる側ともに周知して意識合わせをして、 もっと趣味として広まらんもんかなぁ。

とりあえず考えている事

指導の側はちょっと人による部分も多くて一般的にどうなのか、とかはまだわからない所もあるので、 とりあえず課題を作ってオープンな形で共有する方からやっていくのがいいんじゃないか。 使える課題がもっと増えたらいいのになぁ。

このオンラインで共有されてるオープンな課題をやらせてそれをslackで添削する、 という形が流行って、課題のストックがもっとたくさん出来ると、 オンラインでプログラムを習得するのがもっと楽になる気がする。

例えば今回はC言語をやった訳だが、Kotlinとか機械学習とかいろいろな分野で課題がavailabeだといいと思うんだよね。 教わる側も「今からこれやるんで指導してください!」とかtwitterでお願いしたり出来るじゃん。 まぁだいたいはそんな暇じゃないから嫌だよ、って感じだろうが。

でも結構暇人も居るとは思うんだよね。 twitterの質問箱サービスみたいなのあるじゃん? ああいう感じで「俺ちょっとやっても良いよ」という意思表示が出来ればやっても良いって人も居ると思うんだよなぁ。

指導の方はおいといて、課題の方は作れば作れる人はたくさん居ると思うんだよね。 これはwebへの貢献として結構いいんじゃないか。 なんか教わりたい、という人に教えながら課題を作ってwebに公開。 これが流行る事でweb上に課題が増えて、ますます教えるのが楽になる。 技術記事を書くよりもいい気がするがどうだろう?