コンテキストに基づくサービス連携を支援するイベントルーチングサービスの検討(中田)
背景
情報通信技術(ICT)により人々の生活は便利になり,昨今では特にスマートシステムの発展が著しい. スマートシステムは,物理世界におけるモノ・コトとクラウド上の計算資源をネットワークを介して連携し,付加価値サービス(スマートサービス)を実現するシステムである. スマートシステムには様々な適用分野があり,その例としてスマートホーム,スマートシティ,スマートヘルスケアなどが存在する. スマートホーム分野では,IoT を活用して冷蔵庫や空調といった家電を動かしたり,電気料金を考慮したサービス提供などが行われている. スマートシティ分野では,既存の行政サービスに情報技術を組み合わせることで,行政の効率化や市民サービスの向上への取り組みが行われている. スマートヘルスケア分野では,高齢者の見守りや日々の生活のログなどを通じて,健康に生活を送るためのサービスが提供されている.
これらのスマートシステムに共通する特徴は,複数のサービスを連携・組み合わせることによって提供できるサービスの質や量が改善することである. 特に,物理世界やサイバー空間における様々な状況(コンテキスト)に応じて,異種分散サービスを動的に連携させることで, その場,その時,その人に最適なサービス(コンテキスト・アウェア・サービス)を提供できる. しかしながら,一般的に異種分散サービスの複雑な連携は容易ではなく,コンテキスト・アウェアサービスの効率的な実現には様々な課題がある.
関連研究
異種分散サービスを連携するための基盤技術として,マイクロサービスアーキテクチャ, Publish/Subscribe メッセージング基盤 (Pub/Sub) が挙げられる. マイクロサービスアーキテクチャは,システムの機能を小さなサービスの単位で公開し, それらを疎結合して新たなサービスを実現するというアーキテクチャ・パラダイムである. Pub/Sub は仲介者(ブローカー)によってサービスの呼び出しを非同期に行うメッセージング基盤である. コンテキスト・アウェアサービスを実現するには,これらの基盤の上に何らかのサービス連携ロジックを実装し,状況に応じたサービス連携を実現する必要がある.
コンテキスト・アウェアな連携ロジックを実現するための最も直感的なアプローチは,ルールベースシステムである.これは,システムにおいて「ある状況が成立した時には,このサービスを呼び出す」というルールを決め,そのルールに従ってサービス連携を行う方法である.多くの場合,このようなルールベースシステムは,それぞれのスマートシステムやアプリケーションで個別に実装・管理される.ルールのセマンティクスやサービス呼び出しの方法はシステム毎にまちまちであり,その表現能力や複雑度に応じて,アプリケーションの複雑度や開発工数が増大する.
目的
そこで我々は,このようなルールベースシステムをアプリケーションに中立なサービスとして切り出すことで,コンテキスト・アウェア・サービスを迅速に実現できないかという考えに至った.類似するサービスに,IFTTTや RuCASが存在するが,連携可能なサービスやアプリケーションが決まっていたり,扱えるコンテキストの汎用性に欠ける等の限界がある.
本研究では,コンテキスト・アウェアなサービス連携を支援する新たなサービス,Uni-messe (Unified Rule-based MessageDelivery Service)を提案する.Uni-messe は,イベント (Event),条件 (Condition), ルーチング (Routing) で定義されるECR ルールに基づき,アプリケーションに中立なルールベースサービスを提供する.Pub/Sub 基盤と連動し,様々なアプリケーションやサービスで生起されたイベント・メッセージを,指定された条件に応じて,適切なアプリケーションへと配信する.
アプローチ
提案手法では,まず Pub/Sub メッセージ基盤を用いた Uni-messe のアーキテクチャを考察する.
サービス間の連携を全てPub/Sub で経由で行うことで,サービスの疎結合性を高め,サービスの連携・組み換えを容易にする.
また,Uni-messe の責務をサービス実行の指示 (ルーチング) にとどめ,実際のサービス実行は個別のアプリケーションに委譲することで,
アプリケーション中立性を維持する.
次に,Uni-messe の ECR ルールのデータモデルを提案する.
システムで生起するイベントを6W1H(Who/Whom/When/Where/What/Why/How)の形式でモデリングし,アプリケーションに中立なコンテキストの定義を可能にする.
また,条件部では,6W1H のそれぞれについて汎用的な条件を指定できるようにし,ルーチングには任意のPub/Sub のトピックを指定する.
最後に,ECR ルールの振る舞いを定義する.
具体的には,Uni-messe にイベントが到着した際,各ルールの条件部を評価し成立したらルールを発火,ルーチングに指定された Pub/Sub のトピックへイベントを転送する.
この時,発火条件をイベントの Why に追記することで,サービス実行の根拠をアプリケーションに伝える.
本稿では,提案した Uni-messe のプロトタイプを実装し,スマートホーム向けの 2 種類のコンテキスト・アウェアサービスを実現した.
1 つは,照度センサと電動カーテンを連携し,外部の照度に応じて自動的にカーテンを開閉するサービスである.
もう 1 つは,人感センサを用いて,時刻に応じた宅内のデイリールーチンを自動化するサービスである.
Uni-messe によって,ルールに基づくサービス連携をスマートホーム本体から分離できるため,スマートホームの開発者や利用者は,コンテキスト・アウェアサービスをより効率的に実現・運用できるようになる.