「いわゆるプログラミング教育」界隈で誤解(曲解?)されている言葉のひとつに「アンプラグド」という言葉があります。

「アンプラグド」とは「コンセントに挿さっていない」= 「電気を使わない」という意味で、かつてはアコースティック楽器のみのライブで使われた言葉です。MTVで普段はエレキギターなどを使っているアーティストがアコースティックのみでやるライブを「MTV Unplugged」シリーズとして放送していました。

この言葉がプログラミング教育界隈で使われるきっかけになったのは、「CS Unplugged日本語版はこちら)」という本の存在です。この本では「コンピュータを使わずにコンピュータサイエンスを学ぶ(Computer Science without a computer )」ということをテーマに、その実践方法を紹介しています。

この本が扱っているのは「Computer Science」であって「Programming」ではありません、実際読んでみれば分かりますがこの本には「プログラムを作る」ことは一切出てこないのです。

この本がきっかけだと思うのですが(「ルビイの冒険」がそれに拍車をかけた)、なぜかそれがプログラミングにも適用されるようになりました。もしかすると、僕のうがった見方かもしれませんが、どこかに「コンピュータを使わない = 簡単」という間違った解釈があるような気がします。

プログラミングが小学校の授業に導入されるにあたって、コンピュータが苦手な現場の先生から反発があるんじゃないか?という「忖度」が働いた結果「アンプラグドなら簡単」とかいう謎の都市伝説が生まれたのではないかと。でもはっきり言います。

** それ間違ってますから! **

「アンプラグド」という手法は魔法ではありません。なんでもかんでも「アンプラグド」で簡単になったりしません。一見簡単になったように見えるかもしれないけど、実は遠回りしているだけかもしれない。そこはよく考えないといけないし、そこを考えられるのは本質がわかっている人だけなので「プログラミング」や「コンピュータサイエンス」をわかってない人が「アンプラグド」に手を出すのは危険だからやめとけと言いたいです。

アンプラグド流行の発端となった「CS Unplugged日本語版はこちら)」の内容にしても、「アンプラグドだから低学年でやろう」と考えるのは早計です。「テキスト圧縮」とか「エラー検出とエラー訂正」というのが出てきますが、職業エンジニアだって全員がこれ分かってるわけじゃないですから!

もちろん、そういう基本的な知識が備わっているべきとは思いますが、知らなくても仕事できますから!圧縮とかライブラリ使えばできるし、パリティチェックとか誰も意識せずにソケット通信とかAjaxでのデータのやり取りとかしてますから!

そういう状況で、「テキスト圧縮」とか「エラー検出とエラー訂正」を低学年でやっても、その後にそれを実際に使うケースが出てくるのはかなり先ですし、もしかすると出てこないかもしれない。こういうことって、ちゃんと分かった人でないと判断できないんです。

むしろ、そういう知識が必要になるもっと高次の教育課程において導入としてやった方が絶対効率的です。

とか書くと「そもそも、コンピュータサイエンスが分かってないのにプログラミングやるの?」とかいう意見も出てくると思いますが、「プログラミングがコンピュータサイエンスに触れる入り口になってもいいんじゃない?」と思ってますし、それはまた別の議論だと考えています。

私は「CS Unplugged日本語版はこちら)」がダメだといいたいわけじゃなくて、むしろこの本の内容は素晴らしいと思っています。ただ、その扱い方は難しい。「プログラミング」や「コンピュータサイエンス」に色んな方が関わるようになった今、必ずしもみんながみんなその本質を理解しているとは思えないので、自分たちの都合に合わせて「アンプラグド」という言葉を使うことに警鐘を鳴らしたいのです。

アンプラグドに対する誤解