前回の分散プログラミングでは、Meshという仕組みを使って、複数のScratchが協調して分散処理を行う様子を説明した。その際、裏側の仕組みとして用いたのがリモートセンサープロトコルだった。本来、このプロトコルは外部環境のセンシングのために使われる。
今回は、このリモートセンサーなど、Scratchが現実の世界とやり取りする方法と、それを使ったフィジカルコンピューティングを紹介する。
Scratchで「調べる」こと
第1回のオブジェクト指向プログラミング でも触れたように、Scratchは原則としてオブジェクト(スプライト)間の関係を表現する手段を持たない。しかし、処理は複数のスプライトが協調して進められる。協調する手段の一つが、不特定多数にメッセージを送るブロードキャストだ。そして、もう一つが、「調べる」カテゴリーに含まれるブロック群である。
例を挙げて考えてみよう、テニスゲームのボールがパドルに当たったとき、パドルはボールの存在を何らかの方法で知る必要がある。そこで、パドルは自分の周りの状況を調べる(センシングする)。例えば、<[■]色が触れた>というブロックは、特定の色を持つ何者かが自分に触れたときに真を返す。この仕組みを使うことで、オブジェクト間の結合を疎に保ったまま処理を行うことができる(第1回 オブジェクト思考プログラミング「オブジェクトと状態」を参照)。
![図1●音量に応じて大きさが変わるネコのスクリプト](zu1.jpg)
この考え方を、コンピュータの中だけでなく、外の世界にまで広げるとどうなるだろう。「調べる」カテゴリーには、(音量)というブロックがある。また、その下には<うるさい>が並んでいる。コンピュータにマイクを接続している場合、(音量)の左にあるチェックボックスをクリックし、モニターを表示させると、このブロックがマイクからの音量を示していることがわかる。<うるさい>は、音量が一定の閾値を超えたとき、真(はい)を返す。
このブロックを使うと、音に反応する作品を簡単に作れる。図1に音量に応じて大きさが変わるネコのスクリプトを示す。
センサーボードで世界を調べる
Scratchにはマイク以外にもさまざまなデバイスをつなぐことができる。センサーボード(図2)は、MITメディアラボがScratch用に開発した入力装置である。最初はScratch Boardと呼ばれていたものだ。
センサーボードの仕様、具体的にはPICによる回路図、ファームウエア、プロトコルは公開されており、誰でも自由に作ることができる。カナダのPICO社やアメリカのSparkFun社(CPUをAVRに変更)はこれをPicoBoardの名前で販売している。日本では、このWebページから購入できる。
また、韓国のPINYのHelloBoardや、日本の「ちっちゃいものくらぶ」による極小サイズで廉価版のなのぼ~ど(図3)もある。これらは、Arduinoをベースにスケッチでセンサーボードのプロトコルをエミュレートしたものだ。
オリジナルのセンサーボードは、iPhoneとほぼ同じサイズで、基板上に組み込まれた以下のセンサーをScratchと組み合わせて用いる。
・スライダー
スライドボリュームの位置を数値で返す
・明るさセンサー
明るさを数値で返す
・音センサー
音量を数値で返す
・タッチセンサー
押されたことを真偽値で返す
・抵抗センサー
端子間の抵抗値を返す。4系統あり、オプションで温度や距離などの外部センサーをつなぐこともできる
コンピュータにはUSBの仮想シリアルポート経由で接続し、Scratchはつながれたことを自動的に検出する(ポートの手動設定も可能)。
センサーボードを使うために、Scratchの「調べる」カテゴリーには、[[スライダー▼]センサーの値]と<[ボタンが押された▼]>のブロックが用意されている。センサーの値はタッチセンサー以外、0から100までに正規化されており単位は無い。Scratchで用いられるブロックの引数はこの範囲の値に収まるものが多く、組み合わせて使いやすくなっている。
[スライダー▼]の▼をクリックしてメニューを開くと、それ以外に「明るさ」「音」「抵抗-A」「抵抗-B」「抵抗-C」「抵抗-D」から選択できる(「傾き」と「距離」については後述する)。同様に[ボタンが押された▼]には、ほかに「Aがつながれた」「Bがつながれた」「Cがつながれた」「Dがつながれた」があり、真偽値を返す。
センサーボードの作例は、「ファイル」メニューの「開く」から「例」を選び、さらに「Sensors and Motors」を開くことで見ることができる(以下ではScratchをインストールしていない人でも様子が分かるように、Scratchのサイトで共有されているページへのリンクを示す)。例えば、「Sensorboard 2 Everything」では、それぞれのセンサーをScratchの持つ視覚効果と連動させている。
センサーボードは単なる素材であり、それを何に使うかはユーザーに委ねられている。光センサーを使って、日の出とともにScratchの画面でも太陽が昇ったり(Sensorboard 1 Sunrise)、異なる果物の抵抗値を音階に置き換えて演奏したり(Sensorboard 4 FruitOPhone)、紙皿とアルミホイルを工作してゲームコントローラーを作ったり(Sensorboard 5 Squish)、音センサーを吹いて音量、スライダーで音階を決めるトロンボーンを作ることもできる(Sensorboard 3 Trombone、図4)。