Scratch Remote Sensor Protocol on UDP

Scratch と外部アプリをつなぐ Remote Sensor Protocol は公開当初から楽しく利用してきた。何年か前のScratch@MITで韓国から参加のSeunbumらと椅子を並べて公開されたばかりのRemote Sensor Protocolを使ってメッセージを送り合ったことが懐かしい。Scratch 2.0では未対応だが、Raspberry PiのScratchは1.4ベースなのでもうしばらくは利用されるだろう。

公開されたときに、「TCPだけでなくUDPでも利用できる」となっていたというおぼろげな記憶があった。しかし、後でネットで調べても出てくるのはTCPの仕様だけで、UDPを使っているひとも見当たらないし、ずっと記憶違いかと思っていた。

プロトコルの仕様は Remote Sensors Protocol – Scratch Wiki が正式な参照元になっている。ここにはTCPを使ってサーバーとなるScratchへ接続するように書いてある。これに従ってクライアントをつくれば問題なく通信できるのだが、TCP接続なので接続先をIPアドレスで指定しなければならない。

もしUDPならLAN内へブロードキャストできるので、ScratchのIPアドレスを指定せずに、LAN内のScratchならどれでも同時にセンサー値を受け取ることができる。たとえば教室やワークショップ会場でセンサーを1つ用意しておいて、それを複数のScratchで参照して各自のプロジェクトを同時につくるなどの使い方ができるだろう。

最近、Scratchと各種センサーを無線でつなげるプロジェクトを進めていて、Scratch 1.4のRemote Sensor Protocol関係のSmalltalkコードをあらためて調べてみた。そうしたら、やっぱり、UDPも実装されていたのを発見した。processUDPCommands in Scratch1.4

UDPの仕様は基本的にTCPに準じていて、頭に付けられる送信データサイズ指定を無くしたメッセージフォーマットになっていた。

TCP: <size: 4 bytes><msg: size bytes>
UDP: <msg: size bytes>

ということで、Arduino用のUDP対応Scratch Remote Sensor Protocol ライブラリを近日公開予定です。


これはScratch Advent Calendar 2015 – Adventar の12/11の記事として書きました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です