プログラミングの大衆化

「プログラミングの大衆化」は僕が最近講演などで使い始めた言葉です(それ以前に使っている人は僕は知りませんがもしご存知でしたら教えていただけますと幸いです).ビスケットの開発を始めた頃からこれを意識していましたが,やっと言葉として出てきたということですね.

僕自身の興味は,プログラミング教育にはほとんどなくて,もっぱらプログラミングの大衆化だったんですね.ビスケットが4歳から使えるということが他の言語にはない特徴なのでプログラミング教育用として扱われますが,僕の本心はビスケットは大人にとっても面白いのでみんなに使って欲しい.ビスケットの説明では「プログラミングの可能性と楽しさを万人に伝えたい」ということをずっと言ってきましたし.

ビスケットはプログラミングを教えるツールではなくて,プログラミングの大衆化のツールなんです.

プログラミングじゃない大衆化の一例としてコンピュータの操作法があります.昔のコンピュータは黒い画面にキーボードを使って英語で命令して使っていました.ファイルを移動させたいときは「move ファイル名 移動先」というような感じです.それがマウスで操作するコンピュータが登場したとき,英語の名前で呼んでいたファイルや移動先はアイコンに変わり,moveという英語の命令がマウスでアイコンを持って直接動かす,と変わりました.操作法が変化しても,ファイルの本質的な素晴らしさ(複製が簡単,経年変化しない,どんなに大きなサイズでも小さく見せられるなど)はまったく失われていません.本質を強調しつつ,本質ではない部分を技術でカバーする.これが大衆化です.この変化がなければ今のようにコンピュータは誰もが使うような道具にはならなかったでしょう.半導体技術の向上でコンピュータの処理に余裕ができたおかげです.いまのスマホやタブレットはこの変化の延長線上にあります.最近は使いやすさを超えて,使ってて心地が良いというところにまで進んでいますね.

一方で,プロの仕事からすると,マウスでファイルを移動するというのは結構危ない操作でもあります.たとえば大規模なシステムの管理者は,中途半端な使いやすさよりも,正確さ・間違えにくさといった点がとても大事です.なので,プロは今でも文字による命令でコンピュータを操作しています.

つまり,大衆化はプロの仕事を助けるというよりも,いままで使わなかった人たちにまで広げることに意義があるのです.

大衆化(技術で本質じゃない難しい部分を補って,本質を際立たせる)はファイルの操作以外にもコンピュータの様々な領域で立ち上がっています.

ではプログラミングについて考えてみましょう.

プログラミングは,コンピュータという魔法の装置を自由に動かすための唯一の方法です.これができるとこのすごいコンピュータを味方につけることができます.

プログラミングによるものづくりの特徴をみてみると,まず簡単にやり直しができます.試行錯誤が半端なく,幾つかのバージョンを取っておいて比較もできます.それらにお金が一切かかりませんし,その作業時間もとても短いです.こんなものづくり,いままであったでしょうか.3Dプリンタでものづくりの革命が起きたと言われますが,それをはるかにしのぐ,とても理想的なものづくり環境です.僕がコンピュータは粘土だと思ったのもこのすごい性質だからです.ところが粘土の欠点はいくら形を作っても本物はつくれないことです.粘土で作った歯車は他の粘土とくっついてしまうので,歯車としてつかえません.それに対してプログラミングによるものづくりは,簡単に本物がつくれます.本番で使えます.しかも,ちょっと不具合があったら簡単に直せます.粘土も火を通せば本物として使えますが,一度火を通したモノをまた柔らかくすることはできませんよね.そういう本物に必要な硬さと,自由に作れる柔らかさの両方をいつでも行ったり来たりできるのがプログラミングです.

ただし唯一の制約が,すべて画面の中に閉じていなければならない,ということです.逆に画面の中で我慢さえすれば,この理想的なものづくり環境は使い放題です.

話題がずれますが,モノにこだわる人が結構います.しかし,粘土で人を笑わせたり感動させたりすることはかなり難しいと思います.すごい彫刻家だとできるのかもしれませんが,彫刻作品で触って良いものってなかなかないですよね.人間の脳の高度な部分に関わるためには触覚というセンサーの話ではなく,もう少し高次の情報として伝えなければならないのです.みんなテレビをみて泣きますよね.

画面の中に限定されたものづくりもそんなに悪くないのです.

その画面の中のものづくりの楽しさ・可能性をみんなに体験してもらいたい.というのがビスケットです.

そう考えたとき,プログラミングの大衆化とプログラミング教育は対極の概念として明確化されます.どちらもプログラミングをする人の裾野を広げるという意味では同じですが,目指している方向が違います.

大衆化では,プログラミングの難しい部分は技術を使って極力排除します.反対に,プログラミング教育では難しい部分を教えるのが重要になるのでそれを強調します.例えば幼児向けのプログラミングおもちゃには,矢印を並べることでその指示通りにロボットを動かすというタイプが結構あります.このゲームが目指すのは実際にロボットを動かさないで矢印の並びだけで動きを想像する能力です.その能力をつける教育をプログラミング教育と定義しているようです.大衆化では,動かしてみて自分が思った通りに動かなければプログラムを直して,何度でも直して最終的に思った通りに動けばよいとします.さらに,地図上で経由して欲しい地点を順にクリックするなど,こう動いて欲しいというのを直接指示できるなら,その方法をとっても構わないという立場です.

掛け算の宿題がでたときに,全部自分の力で解かなければならないのか,電卓を使って解くのかという違いのようなものです.

大衆化では絵が動くこと自体はすぐにできてしまうので,その次の段階,絵を動かして何を表現したいのか,というもっと高次のことを目指せます.プログラミングで人を楽しませたり,感動させたりできるわけです.

義務教育でのプログラミングは,まず大衆化が先のように思うのです.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする