ひと昔前に全世界プログラミングという ブログ記事論文 を書いたことがあるのだが、 その後の状況を SIGPX: Special Interest Group on Programming Experienceという勉強会で 発表させてもらった。 言いたいことは特に変わっていないのだが、 安価で高性能なマイコンボードやセンサやプログラミング環境が増えてきたので 手軽に全世界IoTプログラミングができるようになってきたのは確かである。

私の研究室では長年にわたって全世界プログラミングのインフラを整備してきている。 たとえば 橋本翔氏Lindaという並列プログラミングプリミティブを HTTPサーバ上に実装した Node-Lindaというシステムを使うことにより、 以下のような簡単なCoffeeScriptプログラムで研究室のドアを開けられるようになっている。

tuplespace = require('./linda') "masuilab"
tuplespace.write
   type: "door"
   cmd: "open"
   who: "masui"
   where: "delta"
これは「masuilab」という名前の共有空間に 「Delta館の研究室のドアを開けてもらいたい」 という要求データを書き出しているだけであり、 プログラムの作成も意図の理解も極めて容易である。 研究室のマシンは「masuilab」という名前の共有空間を常にモニタしており、 上のようなデータがみつかればサーボモータを回してドアを開けるようになっているので 結果的にドアが開くわけである。 現状では研究室のサーバマシンからArduino経由でサーボモータを回しているが、 ドア開けプログラム側ではそういう実装を気にする必要は無い。

単純で強力なLindaという並列通信機構、 Nodeを使った美しい実装、 記述が簡潔で強力なCoffeeScript、 などの組み合わせによってこのようなプログラミングが可能になったわけであり、 いよいよ全世界プログラミングを誰もが楽しめる状況が整いつつあると思う。 この例はCoffeeScriptであるが、 Node-LindaはブラウザのJavaScriptからでもRubyからでも利用できるので ぜひ使ってみてもらいたいものである。 Node-Lindaの考え方や実装の詳細に関しては 橋本氏の資料 に詳しい。