はじめに

概要

高性能開発用通信スタブツール(リポジトリ名 CommSim)は、IoT機器・産業用PC・組み込み機器などと通信するアプリケーションの開発・デバッグ・試験で、実機の代わりとなる通信相手を手元の Windows PC 上に用意するツールです。

実機が手元になくても、想定どおりの応答を返す相手を再現したり、応答なし・遅延などの異常系を再現したりできます。さらに実機を併用すれば、アプリと実機の間に入って通信を記録し、実機でしか起きない不具合の調査にも使えます。

2つの使い方

CommSim は、セッションに 「転送先(上流=実機)」を設定するかどうかで、次の2通りの使い方ができます。どちらも同じ操作画面で扱え、転送先の有無だけで切り替わります。

使い方 転送先(上流) CommSim の役割 主な用途
スタブ(応答役) なし テスト対象アプリの通信相手として、設定した応答を返す 実機なしでの開発・試験、異常系の再現
中継 あり テスト対象アプリと実機の間に入り、通信を中継しながら記録する。狙った受信だけ応答を差し替え(フォールト/値の注入)、残りは実機へ送る 実機でしか起きない不具合の調査・再現、特定条件の注入試験

スタブ(転送先なし)

テスト対象アプリ
CommSim応答を返す

中継(転送先あり)

テスト対象アプリ
CommSim記録しながら中継
実機

セッションという考え方

CommSim では 1つのポート(エンドポイント)= 1つのセッションです。複数のポートを同時に扱いたいときは、セッションを複数作成します。次の設定・状態は、セッションごとに独立しています。

  • 通信設定(プロトコル・サーバ/クライアント・ホスト・ポート・データ形式)
  • 転送先(上流=実機)の有無と接続先
  • オートメーション(自動送信)一覧
  • バイナリ構造応答(構造体ルール)一覧
  • 通信ログ・キャプチャ

セッションは左サイドバーの一覧に並び、選択して操作します。複数セッションをまとめて1つのプロジェクトファイル(.commsimとして保存できます。

主な機能

  • TCP / UDP 通信(サーバ・クライアント。UDP はマルチキャスト / ブロードキャストにも対応)と手動送信・通信ログ表示
  • オートメーション:受信・接続・周期・手動をきっかけに自動で送信(→ オートメーション
  • メッセージ構造定義 / バイナリ構造応答:独自バイナリプロトコルの分解表示とフィールド条件応答(→ メッセージ構造定義 / バイナリ構造応答
  • 中継とキャプチャ:実機との通信を中継・記録(→ 中継とキャプチャ
  • ログビュワー:記録済みログの統合・フィルタ・タイムライン波形・HEX/構造分解で分析(→ ログビュワー
  • 通信ログのファイル出力、プロジェクト保存、動作確認用サンプル

全機能の一覧は 機能一覧、各画面の項目は 画面一覧 を参照してください。

ツール構成

CommSim を使ううえで利用者が触れる要素は、次の3つです。

要素 実体 用途
CommSim 本体 Windows デスクトップアプリ本体 テスト対象アプリの通信相手(スタブ)や、実機との中継として動作する
サンプルアプリ 動作確認用の通信相手役アプリ CommSim を試すときの相手として使う(テスト対象アプリ役・実機役の両方を再現できる)
サンプルプロジェクト 同梱の設定一式(.commsim)とサンプルデータ CommSim 本体で開くと、すぐ試せる設定が読み込まれる
テスト対象アプリ下流
CommSim 本体スタブ / 中継 / 記録
実機任意・上流

CommSim 本体は、次の2つと組み合わせて使います。

サンプルプロジェクト.commsim
CommSim 本体設定を読み込む
サンプルアプリ相手役として使う
  • CommSim 本体だけでもスタブとして使えます。テスト対象アプリを CommSim に接続して試します。
  • 手元に試す相手が無いときは、サンプルアプリを「テスト対象アプリ役」または「実機役」として起動し、CommSim と通信させて動作を確認できます。
  • サンプルプロジェクトを開くと、代表的なプロトコルの設定が入った状態からすぐ試せます。

処理フロー

CommSim は、テスト対象アプリ(下流)と、必要に応じて実機(上流=転送先)の間に立ちます。ここでは、受信したデータに CommSim がどう反応するか(外から見た動き)を説明します。

全体像

テスト対象アプリ下流
CommSim自動応答 / 中継・記録
実機上流・転送先(任意)
  • 下流:CommSim に接続してくるテスト対象アプリ。CommSim はその通信相手になります。
  • 上流(任意):セッションに「転送先(上流)」を設定したときに通信する実機。設定しなければ存在しません(=スタブ動作)。

受信したときの動き

下流からデータを受信すると、CommSim は次のように振る舞います(利用者が設定した内容で決まります)。

  1. 設定した自動応答に一致するかを見ます。オートメーション(受信トリガー)やバイナリ構造応答(構造体ルール)の条件に一致すれば、設定した応答を返します。
  2. 一致しなかったときは、転送先(上流)が設定されていれば、そのデータを実機へ中継します。転送先が無ければ、何もしません(スタブとして、設定した応答以外には反応しません)。
  3. 転送先がある場合、実機からの返信は下流へそのまま返し、やり取りはすべてキャプチャに記録されます。

つまり「設定した応答が優先され、設定外の通信は(転送先があれば)実機へ素通しする」という動きです。

このほか、接続されたとき一定間隔でも自動送信できます(オートメーションのトリガー)。詳しくは オートメーション を参照してください。

CommSim でできること

やりたいこと 使う機能 参照
受信に応じて自動で返事をする オートメーション(受信トリガー)/ バイナリ構造応答 オートメーション / バイナリ構造応答
接続時にあいさつを送る・一定間隔で送る オートメーション(接続時 / 周期トリガー) オートメーション
手動で任意のデータを送る 手動送信 セッションと通信
独自バイナリを項目ごとに分解して見る メッセージ構造定義 メッセージ構造定義
実機との通信を中継して記録する 中継とキャプチャ(転送先を設定) 中継とキャプチャ
通信ログをファイルに残す ログのファイル出力 ログのファイル出力

動作環境

CommSim の動作に必要な環境は次のとおりです。

必要な環境

項目 要件
OS Windows 10 または Windows 11
ランタイム .NET 8 デスクトップランタイム(実行のみの場合)/.NET 8 SDK(ソースからビルドする場合)

画面解像度

画面解像度に特別な制限はありませんが、複数のタブやダイアログを快適に操作するには 1280×720 以上を推奨します。

ネットワーク

セッションが使用するポート(既定: 9000)に対して、ファイアウォールやセキュリティソフトがブロックしていないことを確認してください。ループバック(127.0.0.1)のみで試す場合は通常問題ありません。