はじめの一歩
このセッションに必要なのは Signal Lab だけです。すべてこのコンピューター 127.0.0.1 に送るので、デバイスもネットワークもファイアウォールのルールも関係しません。次のことを行います。
- OSC メッセージを送信し、届くのを確認する。
- 同じメッセージをインスペクターで見る。
- それをライブラリに保存し、どこからでも再送信する。
- エミュレートした HTTP API を起動し、問い合わせる。
- その API に対して実験を実行し、失敗の理由を読み、修正してチェックを追加する。
Signal Lab をまだインストールしていない場合は、インストールと更新を参照してください。ウィンドウのどこに何があるかわからない場合は、ウィンドウを参照してください。
OSC メッセージを送信して届くのを確認する
まず、メッセージを受け取るものを用意します。OSC 画面のモニターです。
- サイドバーで OSC を開きます。
- モニター セクションで バインドアドレス を
127.0.0.1:9000に設定し、モニターがこのコンピューターでだけ待ち受けるようにします。 - 待ち受け開始 を押します。ボタンが 停止 に変わり、コンソールにモニターが待ち受けていることが表示され、モニターが下部パネルの帯にジョブとして現れます。
次に、その横の送信側からメッセージを送ります。
- 送信 セクションで、宛先 host:port は、モニターが待ち受けているポート
127.0.0.1:9000のままにします。 - OSC アドレス は
/hello/avatar/1のまま、引数 の float 引数 1 つも1.0のままにします。独自のアドレスや値を入力してもかまいません。 - 送信 を押すか、宛先またはアドレスのフィールドで Enter を押します。
モニターの表に 1 行が表示されます。列は 時刻 (届いた時刻)、送信元 (127.0.0.1 と送信元のポート)、アドレス、引数 です。送信側の下には、送信した内容とそのバイト数を確認する行が表示されます。もう一度送信すると、繰り返しの回数が数えられます。
ファイアウォールの通知が出た場合
Windows では、モニターを開始すると、ヘッダーの下に Windows ファイアウォールについての通知が表示されることがあります。これは他のマシンからのメッセージに関するもので、127.0.0.1 の通信がフィルターされることはありません。ひとまず 後で を押してください。いつ許可すべきかはファイアウォールの通知で説明しています。
インスペクターで見る
インスペクターは、すべてのツールが送受信するすべてのフレームを記録します。ただし、記録するのはキャプチャがオンの間だけです。
- 下部パネルで インスペクター タブを開きます。
- キャプチャ開始 を押します。タブの点が点灯します。
- 送信側に戻り、もう一度 送信 を押します。
新しいものを上にして 2 行が表示されます。送信したメッセージ (→) と、モニターが受信したメッセージ (←) で、それぞれプロトコル、相手側のアドレス、サイズ、概要が示されます。1 行をクリックすると、フレームの詳細 に、どのツールがどのアドレスで送受信したか、メッセージの デコード結果、そしてメッセージを構成する バイト列 が表示されます。
終わったら キャプチャ停止 を押します。キャプチャがオフの間は負荷がかかりません。詳しくはインスペクターを参照してください。
シグナルとして保存して再送信する
また使いたいメッセージは、シグナルライブラリに入れておきます。
- OSC 画面で、送信側の下にある 保存… を押します。
- ライブラリに保存 ダイアログで、名前 を
First message、フォルダー をTutorialに設定します。新しいフォルダーは、そこに保存するときに作成されます。 - 保存 を押します。
これで送信側はそのシグナルと結び付きました。ボタンには 保存済み と表示され、その横のチップにはシグナルの保存場所が表示されます。引数を変更するとチップに変更が示され、保存 (Ctrl+S) でシグナルを更新できます。
では、3 つの方法で再送信してみます。
- ライブラリから。 チップをクリックすると、
Tutorialフォルダーでそのシグナルが選択された状態で シグナル が開きます (シグナル を開いて、そこでクリックしてもかまいません)。送信 または Ctrl+Enter を押します。一覧でダブルクリックしても送信されます。 - どこからでも。 どの画面でも Ctrl+K を押し、
firstと入力して Enter を押します。 - 実験から。 ノードを追加するとき、メニューの 保存済みシグナル にシグナルが一覧表示され、それを送信するステップとしてすぐに追加できます。
どの方法でも、モニターにはメッセージが届いたことが表示され、コンソールにはシグナルの名前が表示されます。シグナルは、その画面から送った場合とまったく同じものを送信します。詳しくはシグナルを参照してください。
OSC の作業が終わったら、モニターの 停止 を押します。
エミュレートした API に問い合わせる
Signal Lab には、すべて 127.0.0.1 上で動作する 5 つのエミュレーターが付属しています。そのひとつ デモ API は 127.0.0.1:8080 上の HTTP API で、次のルートを持っています。
| リクエスト | 応答 |
|---|---|
GET /health | 200 と {"status":"ok","time":"…"} (現在時刻) |
GET /users/:id | 200 とその ID のユーザー (例: {"id":"42","name":"User 42"}) |
POST /users | 201 と Location ヘッダー、新しい ID |
GET /slow | 1.5 秒後に 200 |
任意のメソッド、/flaky | 503、503、3 回目のリクエスト以降は 200 |
| それ以外 | 404 |
- エミュレーター を開きます。ライブラリ に 5 つが一覧表示されるので、デモ API を選択します。
- 開始 を押します。
127.0.0.1:8080で応答するようになり、ジョブとして実行されます。 - HTTP を開きます。メソッドは
GETです。URL をhttp://127.0.0.1:8080/healthに設定します。 - 送信 を押すか、URL のフィールドで Enter を押します。
レスポンス に、ステータス 200、レイテンシ、サイズ、レスポンスヘッダー、JSON ボディが表示されます。http://127.0.0.1:8080/flaky を 3 回送信してみてください。503 が 2 回返ってから 200 になります。回復するサービスは、再試行するクライアントからはこのように見えます。
エミュレーター に戻ると、ライブ パネルがすべてのリクエストを数え、受信 にそれぞれのリクエストが、応答した ルール と 応答 とともに一覧表示されます。デモ API は次のパートのために実行したままにしておきます。詳しくはエミュレーターを参照してください。
実験を実行する
実験は、何度でも実行できるステップのフローです。Signal Lab が初回に開く実験 (HTTP チェック テンプレート) は、http://127.0.0.1:8080/ にリクエストを送り、応答が 200 であることをチェックします。
テンプレートを開く
- 実験 を開きます。
- キャンバスに 4 つのノード (開始、HTTP リクエスト、HTTP ステータス、終了) が表示されていない場合は、ツールバー左端の ☰ (実験) を押し、テンプレートの一覧で HTTP チェック を選んで、実験を開く を押します。開くとキャンバス上の実験が置き換えられます。Ctrl+Z で前の実験に戻せます。
ノードをクリックすると、右側の プロパティ にその設定が表示されます。実験は編集するたびに自動的に保存されます。
実行して失敗の理由を読む
- 実験を実行 を押します。
キャンバスの下に 実行タイムライン が開き、各ステップについて、開始時 (実行中) と終了時にそれぞれ 1 行が表示されます。時刻、ノード、そして結果です。この実行は失敗します。
- 開始 は成功し、実行のシードを示します。
- HTTP リクエスト は成功します。リクエストが送信され、
HTTP 404という応答が返ってきました。 - HTTP ステータス は失敗します。
200を期待しましたが、404を受信しました。
デモ API には / のルートがないので 404 を返し、チェックがそれを捉えました。タイムラインの一番上の行には 失敗 とその理由が表示されます。行をクリックすると、キャンバス上でそのノードが選択されます。
リクエスト自体が失敗した場合
HTTP リクエスト ステップが接続拒否で失敗した場合は、127.0.0.1:8080 で何も待ち受けていません。エミュレーター で デモ API を起動して、もう一度実行してください。
リクエストを修正する
- HTTP リクエスト ノードをクリックします。
- プロパティ で、URL を
http://127.0.0.1:8080/healthに変更します。 - 実験を実行 を押します。
今度はすべてのステップが成功します。HTTP ステータス には 条件を満たしました、終了 には 完了 と表示され、タイムラインのタイトルには 成功 と表示されます。
チェックを追加する
ステータス 200 は、サービスが応答したことを示すだけで、何を応答したかは示しません。ボディもチェックしましょう。
- HTTP ステータス ノードをクリックします。
- プロパティ で 次に追加 を押します。キャンバスにフォーカスがある状態で A を押してもかまいません。検索フィールド付きのノードのメニューが開きます。
assert_bodyと入力して Enter を押します。HTTP ステータス と 終了 の間に レスポンステキスト ノードが追加されます。接続線はすでにつながっており、含むテキスト フィールドにすぐ入力できる状態になっています。"status":"ok"と入力します。- 実験を実行 を押します。
新しいステップは成功します。テキストをボディに含まれていないものに変えてもう一度実行すると、理由とともに失敗するのを確認できます。
実行が残すもの
- レポート。 実行が終わると、タイムラインのタイトルに レポートを保存しました と表示されます。ポインターを合わせると、そのファイルがわかります。終了した実行は、成功でも失敗でも、使った値とすべてのステップを含むレポートを、データフォルダーの
runsフォルダーに書き込みます。ブラウザーではダウンロードのリンクになります。 - シード。 タイトルには、実行のシードも 固定 とともに表示されます。実行中のランダムな値はそのシードに従うので、シードを固定すればそれらを正確に再現できます。
詳しくは実行とレポートを参照してください。
後片付け
ヘッダーの すべて停止 を押します。デモ API と、まだ実行中のほかのすべてが停止します。シグナル、実験、そのレポートはデータフォルダーに残ります。