本研究ではユビキタスコンピューティングのための分散・並行アプリケーションの開発プラットフォームを開発する。既存の開発プラットフォームは電子回路作成や無線ネットワーク構築を容易にしたが、そのアプリケーション開発は依然難しいままである。なぜなら、ユビキタスコンピューティングにおけるアプリケーションでは分散・並行プログラミングの知識が必要であり、私の経験ではプログラムの30%程度がWebページ・サーバー・電子回路などの異なるプロセス間の通信や制御に占められてしまう。本研究ではこの問題 を「操り人形化」と「Node-Linda」で解決する。
本研究で実装したソフトウェアは、全てそれぞれのプログラム言語のライブラリ・リポジトリに登録済みであり、世界中の人がいつでも手軽にインストール可能な状態になっている。 ソースコードはMITライセンスの下でオープンソース化されており、誰でも修正案を提案する事が可能となっている。国内外の開発者から意見や修正パッチなどを頂きながら、現在も開発が進められている。
国内学会「プログラミングシンポジウム」で発表を行った。
隔月誌Web+DB Pressにて、研究に関連した技術について2013年6月号から毎号4ページの連載を行っている。
プログラム言語RubyとNode.jsそれぞれで、マイコンボードArduinoやBlendMicroとの通信を完全に隠蔽してボードの各機能を扱えるFirmataライブラリを実装した。 Rubyの方はインストール数が2万4千回を超えており、RubyでArduinoを使うときの標準になったと言っても良いと思われる。
GoldFishはNFCタグリーダーとAndroidスマートフォンを用いた実世界コンピューティングのためのアプリケーション開発環境である。ジェスチャ―操作によるAndroidアプリケーションがHTMLとJavaScriptだけで実装できる。こちらはGooglePlay Storeで公開している。
LindaSocketIOは1980年代に作られたLindaというしくみを基にしている。共有メモリを用いた並行処理記述のための最小セットであるLindaを、Node.jsの通信フレームワークであるSocket.IOの上で実装した。
昨年に実装したRuby版Linda実装に比べて高速かつ少メモリで動くので、CPUが非力なARM軽組み込みLinuxボード上でも軽快に動作させる事ができた。自宅や研究室間でセンサーデータを共有し、クラウド上のグループチャットツールなどとも連携させる等の実装をプログラミングシンポジウムで発表した。