僕は発展途上技術者

Scratch(スクラッチ)を外部のプログラムなどとつなぐ「遠隔センサー接続」を解説する(その1)

スクラッチ(1.4)で Romo を動かしたり、Sphero を動かしてみたりしている。

» iPhone がロボットになる Romo を Scratch でコントロールしてみました

» Sphero を Scratch(スクラッチ)から動かせるようにしたのでこどもでもプログラミングできるよ

「凄い!これってどうやっているんですか?」とその仕組みを大人からもこどもからも良く聞かれる。「スクラッチの「遠隔センサー接続」を使っていて、詳しくはScratch Wikiに載っています」と答えてはいたのだが、ページは英語で書かれているし解説もかなりシンプル過ぎていて、これでわかってください、というのも酷だったので、これから何回かにわけて「遠隔センサー接続」の仕組みについて日本語でできるだけ丁寧に解説してみたいと思う。

シリーズ全エントリーはこちら↓

» Scratch(スクラッチ)を外部のプログラムなどとつなぐ「遠隔センサー接続」を解説する(その1)

» Scratch(スクラッチ)を外部のプログラムなどとつなぐ「遠隔センサー接続」を解説する(その2)

» Scratch(スクラッチ)を外部のプログラムなどとつなぐ「遠隔センサー接続」を解説する(その3)

» Scratch(スクラッチ)を外部のプログラムなどとつなぐ「遠隔センサー接続」を解説する(その4)

» Scratch(スクラッチ)を外部のプログラムなどとつなぐ「遠隔センサー接続」を解説する(その5)

なぜ「遠隔センサー接続」を使うとスクラッチ以外のものが動かせるのか?



そもそもなぜ「遠隔センサー接続」を使うとスクラッチ以外のものが動かせるのか、説明しよう。

たとえばスクラッチから Romo を動かすには、スクラッチから Romo に何らかの命令を送る必要があるのだが、そのためにはスクラッチと Romo が何らかの形でつながっていなくてはならない。

しかし、スクラッチでの操作は、いつもはスクラッチの中で閉じている。何のことを言っているかわからないかもしれないが、たとえば、「制御」カテゴリのなかの「○○を送る」というブロックで考えてみよう。

「○○を送る」ブロックで送った命令は、同じ「制御」カテゴリの「○○を受け取ったとき」ブロックで受け取る。これがスクラッチの中で閉じている、ということだ。スクラッチで送った命令は同じスクラッチの中でしか、普通は受け取れない。

けれどもスクラッチの「遠隔センサー接続」を有効にすれば、「○○を送る」ブロックで送った命令がスクラッチの中だけではなく、スクラッチ以外の別のプログラムでも受け取れるようになるのだ。

たとえば「前進」という命令をスクラッチから受け取ったら Romo を前進させるプログラムをスクラッチとは別に用意しておく。「遠隔センサー接続」を有効にしたスクラッチの「『前進』を送る」ブロックを使えば、「前進」という命令が Romo を動かすプログラムに届き、そのプログラムが Romo を前進させる。

スクラッチから Romo を動かすのに必要な Scratch2Romo や、Sphero を動かす Scratch2Sphero などはすべて、スクラッチからの命令を受け取ってそれぞれ Romo や Sphero など対応するものを動かす橋渡しをするプログラムなのだ。

「遠隔センサー接続」でできること



「遠隔センサー接続」を有効にしたきに、スクラッチとつながったプログラムに対してできることは以下の2つだ。

1. いままで説明したように「○○を送る」で送った命令をスクラッチ以外のプログラムにも送ることができる

2. 「すべてのスプライト用」の変数に値を入れると、その変数の名前と新しくセットされた変数の値の情報を、スクラッチ以外のプログラムに送ることができる

スクラッチとつながったプログラムから逆に、スクラッチに対して以下の2つのことができるようにもなる。

1. スクラッチとつながったプログラムからスクラッチに対して、「○○を送る」と同じ仕組みの命令を送ることができる。スクラッチではこの命令を「○○を受け取ったとき」ブロックで受け取ることができる

2. 自分で好きに名前を付けたセンサーをつくり、その値をスクラッチとつながったプログラムから変えることができる。スクラッチでは、「調べる」カテゴリの「○○センサーの値」ブロックで値を受け取ることができる

このように「遠隔センサー接続」を有効にすれば、スクラッチ → スクラッチ以外のプログラム という一方向だけでなく、スクラッチ以外のプログラム → スクラッチ という方向に対しても情報を送ることができ、双方向のやり取りができるようになる。

「遠隔センサー接続」を有効にするには



スクラッチの「調べる」カテゴリの一番最後の2つのブロック「○○センサーの値」か「ボタンが押された」のブロックの上で右クリックして現れる「遠隔センサー接続を有効にする」を選ぶ。




次回予告



さて次回は、スクラッチからスクラッチとつながった他のプログラムに対して命令を送っている様子、反対にスクラッチとつながった他のプログラムからスクラッチに対して命令を送っている様子を実際に見てみたいと思う。

プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Raspberry Piではじめる どきどきプログラミングを書きました。

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Twitter @jishiha

最近のエントリー

アーカイブ