Make it inspiring
 

UDP

複数のプロトコルをレイヤーごとに定義したインターネットプロトコルセットにおいて、トランスポートレイヤーに位置するプロトコルがTCPとUDPというプロトコルです。このレイヤーのプロトコルの役目は、その下のレイヤーにあるIPプロトコルと上のレイヤーにあるアプリケーション層を繋ぐ役割です。TCPやUDPはIPプロトコルで伝送されてくるデータをポート番号で整理して適切なアプリケーションにそれを振り分けます。

UDP は同じレイヤーにあるTCPと異なり、コネクションレス型の転送サービスで、送信先が確実にデータを受信したか確認したり、データの消失などを検知して再送するといった制御を行わないため、接続の信頼性は上位アプリケーションで補う必要があります。

この送信側と受信側がハンドシェイクをしない点を指して、通信に確実性がないと説明されることがあるが、リアルタイム性のあるデータストリームには、こうした通信が不可欠で、音声のように連続してデータが更新されるようなデータの場合、またTCPと異なり1対Nへの同時配信といったアプリケーションにUDPは最適なプロトコルになります。

またUDPの仕組みがシンプルで、高速に処理でき、UDPを使って変数やメッセージを送信する際にも、簡単に利用できることから、ショー制御のトリガーなどにも利用されています。ここでは主に、具体的にUDPプロトコルを使って可能なショー制御についての事例を解説します。

 

UDPのフォーマットは非常にシンプルです。データの前に付加されるUDPヘッダーは、ほぼ宛先のポート番号と送り手のポート番号の記載のみと言えます。送信側はUDPヘッダーに続くデータを一方的に送ります。送り先も特定のIPではなく、ブロードキャストやマルチキャストの通信で行いますので、つながる相手に一斉送信です。

送信元の設定例

UDPでデータを送るアプリやツールなどはオンラインで数多く見つかりますが、ここではショーコントローラーソフトウェアの代表的な例としてMedialon Managerの例を取り上げてみます。

この例では画面の中に配置したフェーダーを動かすことで得られる変化する値をUDPで送信するバリアブル(変数)に格納し、フェーダーを操作するたびに、このタスクが起動し、都度、UDP送信するため、結果的に連続的なデータが受信先に届きます。この設定では特定のIP番号とポート番号を指定し、特定の相手先にデータを送信しています。

このようなUDP送信のためのドライバーを備えるまたプログラムが可能なソフトウェアであれば、UDPを使ってテキストメッセージや変化する数値を任意のコンピューターに送信が可能です。Touch Designer,  Unity といったソフトウェアや、Raspbery Piなどのコンピューターを利用する際も、UDP送信は非常にシンプルで簡単にデータを送信することができます。

受信側の結果

送信したデータが受信側の装置で受信した結果を確認します。ここではModulo Playerメディアサーバーを例に、受信結果を確認します。Modulo Playerのようなメディアサーバーと呼ばれる製品は、主にプロジェクションアートやデジタルサイネージ、イベントなどの映像演出に利用されるジャンルの製品になりますが、その多くがショーコントロール機能を持ち、外部機器の制御や逆に外部のコントローラーからのデータを受信し、そのデータを用いて内部の制御に利用したりすることができるようになっています。ここに挙げたModulo Playerという製品も、外部からくるUDPのバリューで外部機器の動作に追従するトラッキングや、または特定のバリューを用いてタスクのトリガーなどを実行できます。

UDPによるコミュニケーションは、PCとの接続が容易であるため、こうしたショーコントロールに多用されます。