分散・並行アプリケーション開発プラットフォーム

研究概要

本研究ではユビキタスコンピューティングのための分散・並行アプリケーションの開発プラットフォームを開発する。既存の開発プラットフォームは電子回路作成や無線ネットワーク構築を容易にしたが、そのアプリケーション開発は依然難しいままである。なぜなら、ユビキタスコンピューティングにおけるアプリケーションでは分散・並行プログラミングの知識が必要であり、私の経験ではプログラムの30%程度がWebページ・サーバー・電子回路などの異なるプロセス間の通信や制御に占められてしまう。本研究ではこの問題 を「操り人形化」と「Node-Linda」で解決する。

研究成果

成果の社会への還元

本研究で実装したソフトウェアは、全てそれぞれのプログラム言語のライブラリ・リポジトリに登録済みであり、世界中の人がいつでも手軽にインストール可能な状態になっている。 ソースコードはMITライセンスの下でオープンソース化されており、誰でも修正案を提案する事が可能となっている。国内外の開発者から意見や修正パッチなどを頂きながら、現在も開発が進められている。

対外発表

国内学会「プログラミングシンポジウム」で発表を行った。

雑誌連載

隔月誌Web+DB Pressにて、研究に関連した技術について2013年6月号から毎号4ページの連載を行っている。

  1. Web+DB Press vol.81 IRKitで家電ハック! - WiFi赤外線学習リモコンで真夏の帰宅を快適にする
  2. Web+DB Press vol.82 Jawbone Up24で俺API! - 腕輪型アクティビティロガーで自分の状況をリアルタイムに知らせる
  3. Web+DB Press vol.83 hilips hueでがんばりを共有! - プログラマブル電球で遠くの同僚の様子を伝える
  4. Web+DB Press vol.84 Tesselで家がYo! - JavaScriptマイコンボードでセンサ情報を伝える
  5. Web+DB Press vol.85 RICOH THETAで全天球ライブカメラ! - Node.jsでAPIを操作し部屋の様子を観察する

「操り人形化」の為のソフトウェアライブラリ

Firmataライブラリ

プログラム言語RubyとNode.jsそれぞれで、マイコンボードArduinoやBlendMicroとの通信を完全に隠蔽してボードの各機能を扱えるFirmataライブラリを実装した。 Rubyの方はインストール数が2万4千回を超えており、RubyでArduinoを使うときの標準になったと言っても良いと思われる。

GoldFish

GoldFishはNFCタグリーダーとAndroidスマートフォンを用いた実世界コンピューティングのためのアプリケーション開発環境である。ジェスチャ―操作によるAndroidアプリケーションがHTMLとJavaScriptだけで実装できる。こちらはGooglePlay Storeで公開している。

Lindaに関するソフトウェア

Node-Linda

LindaSocketIOは1980年代に作られたLindaというしくみを基にしている。共有メモリを用いた並行処理記述のための最小セットであるLindaを、Node.jsの通信フレームワークであるSocket.IOの上で実装した。

昨年に実装したRuby版Linda実装に比べて高速かつ少メモリで動くので、CPUが非力なARM軽組み込みLinuxボード上でも軽快に動作させる事ができた。自宅や研究室間でセンサーデータを共有し、クラウド上のグループチャットツールなどとも連携させる等の実装をプログラミングシンポジウムで発表した。