ひと昔前に全世界プログラミングという
ブログ記事や
論文
を書いたことがあるのだが、
その後の状況を
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の考え方や実装の詳細に関しては
橋本氏の資料
に詳しい。
