続・ユビキタスの街角

ユビキタスの街角(http://tmasui.blogspot.jp/)から引っ越してきました

2016年02月

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

1980年代からEmacsを使い続けてて、 Emacs Lispでいろいろ拡張機能を作ったりしてたのだが、 あまりに保守的すぎるのでAtomに乗り換えようかと思っている。

Atomはいろいろ利点がありそうである。

  • 基本的なキーバインディングがEmacsと同じ
  • 拡張機能が沢山ある
  • JavaScript/CoffeeScriptで拡張機能を書ける
  • ブラウザ技術が色々使える
  • MarkDownやHTMLのプレビューが簡単
  • 画像その他の対応が簡単そう
  • GitHub連携がたぶん便利
  • マルチカーソルが使える
Emacsでは日本語入力(pobox.el)とDynamic Macro(dmacro.el)を常用していて、 これらが使えないと激しく困るのでなかなかEmacs離れできなかったのだが、 Atom上でDynamic Macroを使えるようになったので 乗り換えようという気になってきた。 成功するかどうかわからないが乗り換え挑戦してみようと思う。

このページのトップヘ