第15回 誰でもプログラミング
2007年12月 9日
黎明期のパソコンにはBASICインタプリタが標準搭載されていたため、画面に絵を描いたりして楽しむ日曜プログラマが大量に出現したものですが、最近は計算機が高度化したのと同時にプログラミングの敷居まで高くなってしまい、自分でプログラムを作って楽しむ人が昔に比べてかえって減ってしまいました。
すぐれたソフトウェアが大量に世の中に出回っているため、わざわざ自分で何か作ってみようという気にならないのもプログラミングが流行らない理由のひとつかもしれません。プロが作る料理の1/10のクオリティの料理を自分で作ることは可能かもしれませんが、市販ソフトの1/10のクオリティのソフトウェアを自作することはほとんど不可能ですから、自分でソフトウェアを作ってみようという気持ちになりにくいでしょう。
また最近は、自分で何かを作ることは流行らないようで、楽器を演奏したりコンサートに行ったりするのは下流の人間だと断言してる本があったりするぐらいですから、プログラミングは下等な仕事だと思われているのかもしれません。
また、普通のパソコンでは、ディスプレイ/キーボード/マウス以外の入出力装置を利用できませんから、気のきいた新しい遊び方を発見することは容易ではありません。既存のプログラムをダウンロードすれば充分なことがほとんどで、わざわざ自分で作って実験しようという気持ちにはならないでしょう。
■事情の変化
ところがこのような状況は最近になって変わりつつあります。まず、最近のWebブラウザにはJavaScriptが標準装備されていますから、特に開発環境をインストールしなくてもちょっとしたプログラミングを簡単に試してみることが可能になりましたし、MITで開発されているProcessingのようなシステムを利用すれば「line(10,10,100,100);
」のようなプログラムを入力して「再生ボタン」を押すだけで、画面上にウィンドウが表示されて直線が描画することができます。このようなシステムは昔のBASIC並に手軽に使えるうえに、最新のプログラミング技術やWeb技術も使うことができます。
また、プログラムから手軽に使えるセンサやアクチュエータが手に入るようになってきたため、ディスプレイやキーボード以外のものをコントロールすることができるようになってきました。カルガリ大学で開発されたPhidgetsやIAMASで開発されたGAINERのようなUSB接続のセンサ/アクチュエータを利用すると、特別なハードウェアを製作することなく、実世界の情報を取得したり実世界のものを動かしたりすることができます。例えば、Phidgetシリーズのs体重計をパソコンのUSBポートに接続すれば、簡単なプログラミングで第7回で紹介した「気合いブックマークシステム」を作ることができます。
インターネットにあらゆる計算機が接続されているため世界中のセンサやアクチュエータを捜査するプログラムを作ることができるようになりました。世界中の誰もが世界中の装置を自由に操作する全世界プログラミングが人類史上はじめて可能になったことは歴史的な大事件だと言えるかもしれません。
■全世界プログラミング
実世界中の様々なセンサを利用したプログラミングは実は現実にいくらでも利用されています。たとえば「7時になったらベルが鳴るように目覚まし時計をセットする」という行動は、センサとアクチュエータを内蔵する目覚まし時計という装置のプログラミングですし、「建物に近付くとドアが開く」という自動的ドアは、人感センサとドア開閉機構を結びつけるハードワイヤドなプログラムで動いていると考えることもできます。全世界プログラミングができるようになれば、このような処理を含むあらゆる処理を自動化できるようになるでしょう。
世の中にかなり普及している以下のようなプログラミングは
全世界プログラミングの第一歩です。
これらのシステムでは条件とアクションがはっきり決まっているので
わかりやすいのが特徴です。
- 自動ドア
- 目覚まし時計
- 炊飯の予約
- 風呂の水はり
同じような装置を使う場合でも、条件を柔軟に指定できると
プログラミング感が強まります。
- 人がいない部屋のテレビを消す
- 人がいない部屋では目覚ましを鳴らさない
- ビールがなくなると注文フォームを表示する
- 気合いを入れるとブックマークされる
- 寝ると照明が消える
- 夜になると静かになる空気清浄機
- 汚いと自動的に洗浄してくれるトイレ
また、別の場所の状態を条件として利用すると全世界感が強まります。
- 遠方の家族の様子を知る
- 水道が使われていないと通報する
- 泥棒を検出
- 波や風の様子を調べる
さらに組み合わせると、全世界をプログラミングする感覚はさらに強まるでしょう。
- ブログが炎上すると警報が鳴る
- ニューヨークの天気でBGMを変化させる
- 全世界ピタゴラマシン
自動ドアと全世界ピタゴラマシンではスケールがかなり違いますが、プログラムの構造は同じようなものです。計算機上で簡単に全世界のセンサやアクチュエータをプログラムできると世界を支配したような感覚を持てるかもしれません。
■全世界プログラミングのスタイル
世界をプログラミングするためには現状のようなプログラミングスタイルはあまり適切ではありません。全世界プログラミングの対象は全世界の事物ですから、現在のようにテキストでプログラミングするよりも、実際の事物を利用する方がわかりやすいでしょう。たとえばブログが炎上したことを表現するのに
if 炎上('増井のブログ') then 油を注ぐ() end
のようにテキストでプログラムを書くのは面白くありませんが、
炎上ぶりをビジュアルに表現するプログラムを利用したり、
第9回で紹介した
例示プログラミングを使って例示で炎上ぶりを表現できると良いかもしれません。
全世界の誰もが全世界のセンサやアクチュエータをプログラミングできる全世界プログラミング世界の面白さや恐ろしさはこれから明らかになってくることでしょう。
増井俊之の「界面潮流」
過去の記事
- 第55回 ものづくり革命2011年5月16日
- 第54回 マイIME2011年4月15日
- 第53回 NFC革命2011年3月10日
- 第52回 自己正当化の圧力2011年2月10日
- 第51回 縦書き主義2011年1月17日