昔からコンピュータやネットワーク技術を学ばせるには体を使わせるべきだと主張してきた。
小学校や中学校、さらには高校や大学でも、WordやExcel、PowerPointの使い方を教えられているのを見る度に、「なんだかなー」感が否めなかった。別にマイクロソフトをけなしているわけではなく、これがLotus 1-2-3でもWordPerfectだったとしても同じように、「なんだかなー」と感じる。
その専門に進もうと決めたのでもない限り、コンピュータやネットワークというのは道具に過ぎない。たとえるならば、文房具のようなものだ。小学校で最初に鉛筆の使い方は教えると思うが、特定の文房具の機能は教えないだろう。「Dr. GRIPは振り子式だから、みんなで振ってみましょう。A君、君は振りが甘い」なんて授業は見たことがない。
実際に技術の試験で、Excelの操作について出るかもしれないからと、「セル」とか用語を確認している中学2年生君を見て、驚きを通り越してあきれてしまった。
まぁ、いつかは覚えたほうが良い概念ではあるので、学校で覚えても悪くはないのだが。特定のベンダーのみの機能とかに縛られないのであれば。
前置きが長くなったが、このように特定のアプリケーションの操作を覚えるよりも私が必要だと感じているのが、基本的な仕組みを教えることだ。なにもネットワークプロトコルやコンピュータアーキテクチャ、アルゴリズムの詳細を教えろと言っているのではない。せめて電流に直流と交流があるくらいの、またそれらが電線を流れてきていることや乾電池で流通していることがわかるのと同じくらいの「仕組み」を教えるべきではないかと考える。OSの役割やインターネットの仕組みなど。
もしかしたら私が知らないだけかもしれないと思って、調べてみたところ情報Bという科目では、このようなことを教えているらしい。本当に教えられてるかどうかは知らないし、基本は小学校か中学校で教えるべきだと思う。
課題はこのような技術の基礎をわかりやすく教えるのが難しいことだ。科学未来館のインターネット物理モデルの説明などは目に見える形で解説していて気に入っているが、誰もが科学未来館を訪れられるわけではない。
そこで私が提唱しているのが、校庭*1に出て体を使って、自分がビットやバイト、パケットになって、仕組みを体験することだ。考えられる授業内容は次のようなものだ。
- ビットとバイトの考え: 最初は自分の手の指を使って数を数える。10進数だと両手を使っても10までしか数えられない*2が、8進数だと3本の指だけで7まで数えられるので、もう一方の手の5本を使えば40まで数えられることを体験する*3。1人1人がビットになって数人で行ってみても良い。
- ビット演算: 1人1人をビットとして、OR、AND、XORの考えを体得する。
- シフト演算: 同じく1人1人をビットとして、シフト演算を体得する。
- サーチとソート: 生徒にランダムな数字を持たせ、その中から特定の数字を探索させる方法やソートさせる方法を考えさせる。その中で、二分探索やバブルソートやクイックソートなどの基本的なアルゴリズムを体験させる。
- パケット通信: ペイロードとヘッダを別にしたパケットを用意し*4、ヘッダ部分の送信元と宛先が書き変わりながら、最終的な宛先に届くことを体験する。小学校では郵便の仕組みを実際に校内だけで通用する手紙の配達を通じて学ぶこともあるようだから、同じようにしてインターネットの仕組みを教えるのも良いだろう。バケツリレーと言われているものを理解できるはずだし、途中で改ざんや盗み見される可能性があること体感できるはずだ。
半分くらいは冗談だが、残りの半分は本気だったりする。