システムの構成
ソフトウェア構成
テストラボシステムは OSS のソフトウェアと、このために作成されたコンテナフォーマットを処理する複数のソフトウェアで構成されています。
システム構成の機能ごとに、利用しているソフトウェア群を整理します。
図 1: ソフトウェアの構成
- 図中の赤文字のソフトウェアは、テストラボのために作成されたものです。
- 図中の黒文字のソフトウェアは、OSS のソフトウェアです。
テストラボのために作成されたソフトウェアについては、このページで概要を説明します。
ソフトウェアの紹介
構成の要素ごとに説明をします。 説明は、機能とどのように動作しているかを中心に行います。 利用方法は次項の構築手順に任せます。
共通する内容としては、DockerContainer で動作させたアプリケーションを Docker Compose で連携させてシステム全体を実現しています。
センサーデータ取得及びコンテナ化機能
所在
テストラボシステムのために開発したソフトウェアです。以下にソースコードがあります。
- container-websensor
https://github.com/sensing-iot-standard-consortium-ja/container-websensor
機能
スマートフォンのジャイロセンサ(加速度、傾き)をコンテナデータにしてメッセージング機能を通じて送信します。
動作
Docker コンテナで動作する Web アプリケーションです。 アプリケーションを使うには、スマートフォンのブラウザでアクセスします。
ブラウザを通じて加速度やジャイロのセンサから取得したデータを、コンテナデータにしてメッセージング機能を通じて送信します。 コンテナデータを XHR でサーバに送って、そこから kafka へ送信しています。
注意事項
スマートフォンのセキュリティ上の制約のため、加速度やジャイロセンサはアプリのページに https でアクセスしないと利用できません。 構築手順に外部サービスを利用した回避方法を記載しています。
コンテナ処理機能
所在
テストラボシステムのために開発したソフトウェアです。以下にソースコードがあります。
container-consumer
https://github.com/sensing-iot-standard-consortium-ja/container-consumer
container-python-consumer
https://github.com/sensing-iot-standard-consortium-ja/container-python-consumer
機能
コンテナデータを受信し、変換処理をして外部に出力します。 コンテナデータの処理のため、スキーマリポジトリ機能からスキーマ情報を取得して、スキーマ情報に従ってコンテナデータから情報を取り出し処理に用いています。
- メッセージング機能からコンテナを受信
- スキーマリポジトリ機能からスキーマ情報を取得
- スキーマ情報に従ってコンテナデータから情報を取り出す
- 取り出した情報を json 化してメッセージング機能に送信
設定
環境変数でメッセージング機能のトピックを設定できます。 実行時に設定しています。
スキーマリポジトリ機能
テストラボシステムのために開発したソフトウェアです。以下にソースコードがあります。
container-repository
https://github.com/sensing-iot-standard-consortium-ja/container-repository
機能
スキーマリポジトリ機能は、コンテナのスキーマ情報を作成する画面と、スキーマ情報の配布機能を持ちます。
コンテナのスキーマ情報を作成する画面では、コンテナデータを読み込むことで、 スキーマリポジトリ機能に保存しているスキーマ情報を、コンテナデータに適用してプレビューできます。 スキーマ情報を更新し保存することで、スキーマリポジトリ機能に保存されているスキーマ情報を更新できます。
また、スキーマリポジトリ機能は外部からの要求に応じて保存しているスキーマ情報を配布します。
動作
- ブラウザで動作する Web アプリケーションです。
- コンテナを読み込み、16 進値でプレビューします。
- スキーマ情報を定義し保存できます。
- スキーマ情報により読み込まれているコンテナから取り出される情報がプレビューできます。
- 保存しているスキーマ情報を要求に応じて配布します。
注意事項
- スキーマ情報の記述をする為に、読み込ませるコンテナデータのファイルが必要です。
メッセージング機能
所在
OSS のソフトウェア(kafka)を利用しています。 テストラボシステムでは、Confluent 社の配布している Docker イメージを利用しています。
https://hub.docker.com/u/confluentinc
機能
複数のソフトウェアを組み合わせて、機能間のメッセージング機能を実現しています。 メッセージングの管理画面、外部 DB への連携機能、SQL によるデータ処理などの機能を持つ kafka のファミリーのソフトウェアを利用しています。
- kafka とそのファミリーのソフトウェアを利用して、PubSub 型モデルによるメッセージング機能を実現しています。
- kafka-ui の機能でブラウザを通してメッセージングの状況を確認できます。
- kafka-rest で REST API を利用して REST インターフェイスによるメッセージングできます。
- kafka-connect で 外部 DB とのデータ連携できます。
- ksql によってメッセージングされるデータの加工、集計できます。
動作
テストラボシステムでは、このメッセージング機能をハブとして機能間でデータを連携しています。
論理チャンネル(トピック)の仕組みにより特定の機能間を接続しています。
可視化機能
所在
以下の OSS のソフトウェア群を利用しています。
- grafana
- https://grafana.com/
- データを可視化するソフトウェア
- テストラボシステムでは、grafana のダッシュボードのプロファイルを用意しています。
- Postgres
- https://www.postgresql.org/
- オープンソースのリレーショナルデータベース(RDB)
機能
メッセージング機能から連携されるセンサデータをデータベースに蓄積し、蓄積データを基に可視化を行います。
ダッシュボードや、ダッシュボードに含まれるクエリやグラフの設定が必要なため、 テストラボシステムではソフトウェア以外にテストラボシステム向けのプロファイルを提供しています。
動作
- メッセージング機能の DB 連携機能を利用して、コンテナで運ばれたセンサデータを格納します。
- 格納したデータを grafana によって可視化します。