大まかな指示を出して放っておくと、後はプロジェクトメンバーが自律的に役割を変えながらプロジェクトを完遂する – これはただの理想論のようだが、無線センサーネットワーク(WSN: Wireless Sensor Network)の世界ではそれが一般的となっている。キーワードとなる「マクロ」プログラミングの動向を追ってみたい。
無線センサーネットワーク(WSN)
無線センサーネットワーク(WSN)を直感的に捉えるには、スマートダストで用いられるアプリケーションシナリオがわかりやすい。空から調査したい地域一帯にセンサーノードをばらまくと、ばらまかれたセンサーノードが自律的に無線でネットワークを形成して情報を基地局に送る、というものだ。WSNを構築する個々のノードには、ソフトウェアを動作させる環境が提供されている。
国内でもWSNは注目を集め、産官学連合の実証実験などが行われている。例えば、「安心・安全」をテーマに、高密度のセンサーを利用したビルの侵入者に対するセキュリティ管理の実証実験や、「食・農業」をテーマに圃場の環境をセンサーノードで監視・蓄積データの分析をし、肥料や農薬の散布に関するアドバ イスなどを行う実証実験が展開されている(総務省資料)。
また、ホテルの空調システムなどに導入して90%のコスト削減に役立ったなどの報告がされており、市場が徐々に形成されてくる段階にある。日本の場合、景観を維持する必要のある場所、車内のような狭小な場所など、ケーブルを引くことを避けたい環境において特に需要が見込まれるのではないだろうか。
WSNにおけるソフトウェア開発
WSNは自律的にネットワークを作り必要な情報を収集してくれるが、実社会で重要となるのはやはりそのネットワークの上に載るビジネスロジックだろう。そのビジネスロジックを構築するツール周辺の動きが活発になっている。以前からTinyOSはOSの代表例として有名だが、最近になってJava言語で開発可能なプラットフォームが提供され話題となっている(SunSPOT, Sentilla)。
他にも、ビジネスロジックの実装を容易にするために、複数のミドルウェアが公開されている。これには、データベースへのリクエストを出すようなもの、イベント駆動処理を行うようなもの、モバイルエージェントを動作させるものなどが挙げられる。これらの方式は、一般に開発現場で用いられているプログラミング手法のやり方を踏襲したものとしてとらえられる。無数のセンサーの動作を一つ一つ指定する手間を省くことができるという点で特に有効である。
こうした流れを受け、無数のセンサーネットワークの動作をマクロな視点でプログラマから隠蔽する、マクロプログラミング(Macroprogramming)というプログラミングスタイルがWSNの世界で注目を集め始めている。
マクロプログラミングとWSNプラットフォームのデファクト争い
マクロプログラミングが着目される理由として以下のことが挙げられる。
- 超並列プログラミングをノードを意識しない、抽象的なレベルでコーディングできる。
- そのために、ノード配置や電波強度などを勘案して、自律的に最適なネットワークを構成してくれる。
マクロプログラミングの直感的な動作としては、次のようになる。まず、一つのプログラムをコンパイルしてWSNに導入すると、その情報がネットワークを伝播し個々のWSNを構成するノードに到達する(Deglobalization)。WSN全体としてプログラムで指定された動作を行うのだが、個々のノードはある時は他のノードに指示を送り、またある時はセンサーデータの中継役に徹するなど多様な働きをする。プログラムの内容の簡単な例としては、「化学物質の濃度がある閾値を越えた領域のデータを基地局に送信する」、というものが挙げられる。
マクロプログラミングの代表例としては、WSNに特化した独自の言語を定義するKairos、関数型言語を意識したWaveScriptがある。
現在はプロトタイプを手早く開発するために使われることを想定しているが、実績を積み、精度を高めていくことでWSNにおける開発プラットフォームのデファクト標準争いの渦中に引き込まれていく技術だろう。
国内でも今後無線センサーネットワークの導入事例が増えると目される。そこでのソフトウェア開発では、海外市場も視野に入れた場合に、個別に作り込むなどのクローズな世界にせず、例えばマクロプログラミングのような時宜にかなったオープンな開発環境を利用したほうが良いだろう。過去の反省などから、国際標準への対応が重視される傾向にあるが、WSNのプラットフォームもその将来的な市場性から重視する対象としていきたい。
本文中のリンク・関連リンク:
- SmartDust – カリフォルニア大学バークレー校のプロジェクト
- ユビキタスセンサーネットワーク技術に関する研究開発 – 総務省公開資料
- A sense of things to come – Economist.com のWSNに関する記事
- TinyOS – WSN用のOS
- Sun Small Programmable Object Technology (Sun
SPOT) – WSNのJava言語用のプラットフォーム
- Sentilla紹介記事 – Java言語とサービス指向アーキテクチャを用いるプラットフォーム
- A survey of middleware for sensor networks -WSNで利用されるミドルウェアのサーベイ論文
- Kairos – マクロプログラミング言語
- WaveScript – 関数型マクロプログラミング言語