Signal Lab とは
Signal Lab は OSC とネットワークプロトコルのテストラボです。機器やサービスがやり取りするメッセージを送信し、返ってくるものを表示し、まだ用意できていないデバイスや API の代わりを務め、その間のネットワークを意図的に劣化させます。そしてそのすべてを、アプリ、スクリプト、CI パイプラインから何度でも実行できる実験にします。
Signal Lab は、インスタレーションがまだ形になる前からその立ち上げを進めるために作られました。ショーコントローラー、メディアサーバー、センサー、クラウド API を、現場で顔を合わせるずっと前から、1 台のノート PC 上でそれぞれ代役を相手にテストできます。
対象となる人
- ショーコントロール、インスタレーション、ネットワーク機器を立ち上げる人: 照明サーバーやメディアサーバー、コントローラー、センサー、プロジェクターなど、OSC、UDP、TCP、MQTT で通信するあらゆる機器。
- API とサービスのテスト担当者: HTTP と WebSocket のエンドポイント、その認証、負荷がかかったときや依存先が障害を起こしたときの挙動。
- そのどちらかを自動化する人: 同じ実験を、パイプラインでウィンドウなしに、機器のそばのラボサーバーで、あるいは AI アシスタントから実行できます。
できること
通信を送信して観察する
プロトコルごとに専用の画面があります。
| プロトコル | できること | ページ |
|---|---|---|
| OSC | 型付き引数のメッセージの送信、ポートのモニター、エンドポイントへの波形の送り込み | OSC |
| 生の UDP と TCP | 実験やライブラリからのテキストやバイト列の送信、それらで通信するデバイスのエミュレート | UDP と TCP |
| HTTP | 1 つのリクエストとその完全なレスポンス、Basic・Bearer・Digest 認証、Cookie 保管庫、負荷バースト | HTTP |
| WebSocket | サービスが期待するヘッダーとサブプロトコルでの接続、テキストやバイト列の送信、すべてのメッセージの読み取り | WebSocket |
| MQTT 3.1.1 | ブローカーへの接続、ブローカーが保持するすべてのトピックの観察、QoS 0・1・2 でのパブリッシュ、保持された値の消去 | MQTT |
| ブロードキャストとマルチキャスト | リスト、ブロードキャストアドレス、マルチキャストグループ、サブネットの全ホストへの送信、応答するデバイスの待ち受け | ブロードキャストとディスカバリー |
すべてのフレームを見る
インスペクターは、ツールが送受信するすべてのフレームを 1 つのタイムラインに記録します。フレームはデコードされ、バイト列も残り、絞り込みやエクスポートができます。キャプチャしたフレームは、それをバイト単位でそのまま再送するシグナルにできます。
うまくいったものを残す
うまくいったメッセージはシグナルライブラリに入れます。名前を付けてフォルダーに整理し、それで何が起きるはずかをメモしておけます。再送信は、そのメッセージの画面からも、ライブラリからも、どこからでも Ctrl+K でも行えます。
相手側を演じる
エミュレーターは、システムが通信する API、デバイス、サービスとして応答します。ルートとレスポンスを持つ HTTP API、ルールで応答する OSC・UDP・TCP デバイス、MQTT ブローカーです。遅く応答したり、順番に失敗したり、不正なボディを送ったり、スケジュールに従ってダウンしたりできるので、本物が揃う前に、システムがそうした状況にどう対処するかをテストできます。
ネットワークを意図的に壊す
劣化リレーはクライアントと宛先の間に入り、UDP にはレイテンシ、ジッター、ロス、重複、順序の入れ替え、帯域制限を加え、TCP 接続は遅延させたり、帯域を絞ったり、リセットしたり、ハーフオープンのまま止めたりします。すべての判定はシードに従うので、同じ通信は 2 回目も同じ結果になります。
テストにする
実験は、キャンバス上に描くステップのフローです。リクエストを送り、応答を待ち、それをチェックし、値を抽出し、分岐し、ループし、ブランチを並列に実行し、実行のためにエミュレーターや劣化リレーを起動します。各実行はステップごとに報告され、以前の実行と比較できるレポートとして保存されます。
サービスに負荷をかける
実験の HTTP リクエストは、一定のレート、ランプ、段階、スパイク、ランダムな到着といった負荷をかけて実行でき、計測した結果がしきい値で判定されます。HTTP 画面には手軽な負荷バーストがあり、ストームは自分のサーバーや回線に向けて生の UDP または TCP の負荷を発生させます。
ネットワーク上にあるものを見つける
ブロードキャストとディスカバリーはプローブに応答するデバイスを見つけ、スキャナーはホストのどの TCP ポートが開いているかを示します。
自動化する
signallab コマンドラインは実験をウィンドウなしで実行し、パイプラインが理解できる終了コードで終了します。CI 向けに JUnit レポートも書き出します。signallab mcp を使うと、AI アシスタントが実験を読み、書き、実行できます。サーバーは同じことを HTTP API で提供します。
2 つの実行方法
| デスクトップアプリ | サーバー (ブラウザーで使用) | |
|---|---|---|
| 動作環境 | Windows 10 と 11 (x64)、Linux (x86_64) | Docker イメージとして Linux 上 (amd64 と arm64)、またはソースからビルド |
| 使う場所 | 専用のウィンドウ | サーバーに到達できる任意のマシンの Chrome、Edge、Firefox |
| 通信の送信元 | このコンピューター | サーバー |
| 付属するもの | signallab コマンドライン | signallab コマンドライン (イメージに同梱) |
| 更新 | 指示したときに自身で更新 | イメージとともに更新 |
どちらも同じエンジン上の同じインターフェイスで、すべての画面、インスペクター、実験、レポートが同じように動作します。機器が自分のコンピューターから到達できないネットワーク上にある場合は、サーバーを選びます。機器のそばのラック PC や小型の Linux マシンで動かし、ノート PC やパイプラインから使う形です。インストールと更新とサーバーを参照してください。両者の違いは概念にまとめてあります。
構成
- 画面は、今その場で手作業で行う作業のためのツールです。これを送る、そこで待ち受ける、あのエミュレーターを起動する、といった作業です。サイドバーに一覧があり、各画面は別の画面に切り替えている間も、入力した内容と受信した内容を保持します。ウィンドウを参照してください。
- 実験は、一度組み立てれば毎回同じように何度でも実行できるフローで、実行ごとにレポートが残ります。
- ライブラリは作ったものを保管します。シグナルはシグナルライブラリに、エミュレーターはエミュレーターライブラリに入ります。実験はその両方を使います。
- ジョブは長時間続く処理です。モニター、エミュレーター、リレー、実行などがウィンドウの下部に一覧表示され、そこで 1 つずつ、またはすべてを停止できます。
それぞれの詳細は概念で説明しています。
既定で安全
- Signal Lab は、ボタンを押すまで何も送信せず、送信するのは指定した宛先だけです。唯一の例外はデスクトップアプリの 1 日 1 回の更新確認で、これはオフにできます (更新を参照)。
- 初期セットのシグナル、初期セットのエミュレーター、実験のテンプレートは、すべてこのコンピューター
127.0.0.1を宛先にしています。ネットワークに出るかどうかは、アドレスを入力することで自分で選びます。 - アクセストークンなしで起動したサーバーは
127.0.0.1でだけ待ち受け、それ以外のアドレスは拒否します。 - ファイアウォールが変更されるのは、許可をクリックしたときだけです。
責任ある利用
実在のホストへの実際の通信
ストーム、スキャナー、ブロードキャストは、実在のホストに実際の通信を送ります。ブロードキャストやサブネットスイープは、意図した 1 台だけでなく、セグメント上のすべてのデバイスに届きます。対象にするのは、所有しているシステムかテストを許可されたシステムだけにし、まず自分がどのネットワークにいるかを確認してください。高いレートは回線を飽和させ、侵入検知を作動させることがあります。
Signal Lab のエンジンには安全上の上限があります。スイープが届くのは最大 1024 ホスト、ビーコンが送信するのはすべての宛先を合わせて最大毎秒 50,000 パケットです。これは安全上の上限であって、許可ではありません。
言語
インターフェイスとそのツールチップやエラーメッセージ、signallab コマンドライン、サーバーのサインインページ、Windows のセットアップは、11 の言語に対応しています。English (英語)、Русский (ロシア語)、Español (スペイン語)、Français (フランス語)、Deutsch (ドイツ語)、Português (ブラジルポルトガル語)、中文 (簡体字中国語)、日本語、한국어 (韓国語)、हिन्दी (ヒンディー語)、العربية (アラビア語、右から左に表記) です。言語はヘッダーからその場で切り替えられます。ウィンドウを参照してください。
次のステップ
- Signal Lab をインストールします。
- ウィンドウの構成を把握します。
- このコンピューター上ではじめの一歩を試します。
- その背景にある概念を読みます。