昔のパソコンはMS-DOSが動いていて,黒い画面に英語と数字を入力して動かしていました.表計算ソフトやワープロもありましたし,まあ本当に使いたい人が使うというものでした.MS-DOSも元はUNIXというOSを真似たもので,そっちはもっと専門家が使うものでした.そこにGUIの波が来ます.マルチウインドウとメニューとアイコンをマウスで操作します.これが出てきてから一気にパソコンは普通の人が使うようになって行きます.
しかし,UNIXやMS-DOSを使っていた人たちからすると,マウスで操作するコンピュータというのはなんともまどろっこしく,文字のOSでよく使っているファイル名を文字のパターンで指定する方法(例えば名前がXで終わるようなファイルだけを別のフォルダに移動する)が出来なくなるんで,まあオモチャのようにしか見ていませんでした.
実際にGUIが相当進化した今でも,コンピュータの専門家たちは文字のOSを使っていますし,Macがとても上手に文字のOSを取り込むことに成功したので今では専門家たちが最も愛用するパソコンになってしまったのも,歴史の面白さですね.
GUIはさらに,スマホやタブレットという指で直接操作するインタフェースで,机の上以外でもコンピュータを使えるように進化し,本当に誰でもコンピュータを使える時代が来ましたね.
同じような進化がプログラミング言語にも起きました.
1994年ごろ.KidSimはアイコンの並びでプログラムを作ってアイコンを動かします.プログラムの作り方も,ビスケットのメガネと同じように絵の動きをルールで作ります.アイコンの並びだけで作れないところは裏に文字の言語も隠れていて,それを呼び出すようになっていました.きちんと商品化もされ(StageCast),教育用ソフトウェアの部門で受賞もしたようです(残念ながら今はそのサイトは無くなっています).
日本ではVisuLanというビットマップを直接書き換える言語が登場します.ドットでプログラムを作ります.これでインベーダーゲームくらいは作れるのです.今も続いていれば,相当面白いポジションを狙える言語だったでしょうね.
その他にも,一般的な文字の言語とは全く異なる考え方でプログラムを作る方法が模索されましたが,GUIが登場したときに専門家からオモチャとしか見られていなかったのと同じ状況です.
コンピュータメーカーは少しでも多くの人にコンピュータを売りたいわけですから,GUIは辛抱強く改良を重ねてこれました.一方,プログラミング言語はというとそんな大きな後ろ盾はないので,なかなか辛抱強く進化させることは出来なかった.
Scratchはどうかというと,文字からGUIやタッチパネルに変わったようなインタフェースの大改革ではなく,MS-DOSやUNIXのような文字のOSに皮をかぶせて,マウスだけで操作できるようにした,という小さな改革に過ぎないわけです.皮をかぶせただけですから,プログラミングの本質的な難しさは変わっていなくて,単に文字の打ち間違えが起きないとか,言葉を忘れても探せばよいとかです.逆に文字だけの操作だと慣れるととても高速にプログラムを入力できますが,マウスを使わなきゃないので,慣れてもいつまでたってもプログラミングに時間がかかります.ですが,Scratchは普通のプログラミングしか知らない人たちにはとても受けがよいです.これはGUIが登場したときに,コンピュータの専門家たちからは受けが悪かったことの裏側ですね.
GUIがやったことは,難しい文字のOSを使いこなせる人を育てるためにまずは皮をかぶせて易しくしましょう,ではなくて,コンピュータを使うということはどういうことなのかを問い直して,今まで簡単にできていたようなことをバッサリ切り捨ててでもコンピュータが使えればいいんだ,というのを大胆にかつ丁寧に改良してきた,ということですよね.
では,なぜプログラミング言語ではそれが出来なかったか.
そろそろ釣りのタイトル「今なぜScratchなのか」のオチですが,それは「専門家じゃない人がプログラミングをする未来」をきちんと示すことができなかったから,なのではないでしょうか.
GUIが出たときに,将来はいままでコンピュータを使わなかった人までもが使うようになるんだよという強烈なメッセージがありました.で,本当に使ってもらうためにむちゃくちゃ下手に出ていた.
同じように,将来は今までプログラミングをしなかった人までもがプログラミングをするようになるんだよということを,もっと強烈に主張して行くべきでした.そのためには,上から目線で難しいけど完全にコンピュータをコントロールできるプログラミングを教えるのではなく,プログラミングをするということの本質は何かを問いただして,むちゃくちゃ下手に出て一般の人にわかってもらうために何を切り捨てなければならないのかを考えなければなりませんでした.
不幸なことに,プログラミング教育の専門家側でそこがまったく共有されていません.少なくとも研究者には常識だったと思いますが,いまプログラミング教育はそうじゃない人たちが中心となって進んでいますから.しかも,社会というか世の中の圧力は完全に専門家に有利に働いています(お金が儲かるとか,仕事がなくなるとか).で,難しいプログラミングを教えることが正義のようにまでなっています.
専門家じゃない人たちは,そんなのに同調しないで,難しいものははっきり難しいと言ってください.こんなのは私たちは覚えられないと言ってください.覚えられないのは自分が悪いのではなく,難しいプログラミングが悪いのです.
いままで,分数の割り算がわからなかったとしても,分数に文句を言うことはできなかったと思います.でもプログラミングはそれができるのです.専門家を甘やかせてはいけません.