前回の分散プログラミングでは、Meshという仕組みを使って、複数のScratchが協調して分散処理を行う様子を説明した。その際、裏側の仕組みとして用いたのがリモートセンサープロトコルだった。本来、このプロトコルは外部環境のセンシングのために使われる。

 今回は、このリモートセンサーなど、Scratchが現実の世界とやり取りする方法と、それを使ったフィジカルコンピューティングを紹介する。

Scratchで「調べる」こと

 第1回のオブジェクト指向プログラミング でも触れたように、Scratchは原則としてオブジェクト(スプライト)間の関係を表現する手段を持たない。しかし、処理は複数のスプライトが協調して進められる。協調する手段の一つが、不特定多数にメッセージを送るブロードキャストだ。そして、もう一つが、「調べる」カテゴリーに含まれるブロック群である。

 例を挙げて考えてみよう、テニスゲームのボールがパドルに当たったとき、パドルはボールの存在を何らかの方法で知る必要がある。そこで、パドルは自分の周りの状況を調べる(センシングする)。例えば、<[■]色が触れた>というブロックは、特定の色を持つ何者かが自分に触れたときに真を返す。この仕組みを使うことで、オブジェクト間の結合を疎に保ったまま処理を行うことができる(第1回 オブジェクト思考プログラミング「オブジェクトと状態」を参照)。

図1●音量に応じて大きさが変わるネコのスクリプト
図1●音量に応じて大きさが変わるネコのスクリプト

 この考え方を、コンピュータの中だけでなく、外の世界にまで広げるとどうなるだろう。「調べる」カテゴリーには、(音量)というブロックがある。また、その下には<うるさい>が並んでいる。コンピュータにマイクを接続している場合、(音量)の左にあるチェックボックスをクリックし、モニターを表示させると、このブロックがマイクからの音量を示していることがわかる。<うるさい>は、音量が一定の閾値を超えたとき、真(はい)を返す。

 このブロックを使うと、音に反応する作品を簡単に作れる。図1に音量に応じて大きさが変わるネコのスクリプトを示す。

センサーボードで世界を調べる

図2●センサーボード
[画像のクリックで拡大表示]

 Scratchにはマイク以外にもさまざまなデバイスをつなぐことができる。センサーボード図2)は、MITメディアラボがScratch用に開発した入力装置である。最初はScratch Boardと呼ばれていたものだ。

 センサーボードの仕様、具体的にはPICによる回路図、ファームウエア、プロトコルは公開されており、誰でも自由に作ることができる。カナダのPICO社やアメリカのSparkFun社(CPUをAVRに変更)はこれをPicoBoardの名前で販売している。日本では、このWebページから購入できる。

図3●なのぼ~ど
[画像のクリックで拡大表示]

 また、韓国のPINYのHelloBoardや、日本の「ちっちゃいものくらぶ」による極小サイズで廉価版のなのぼ~ど図3)もある。これらは、Arduinoをベースにスケッチでセンサーボードのプロトコルをエミュレートしたものだ。

 オリジナルのセンサーボードは、iPhoneとほぼ同じサイズで、基板上に組み込まれた以下のセンサーをScratchと組み合わせて用いる。

・スライダー
スライドボリュームの位置を数値で返す

・明るさセンサー
明るさを数値で返す

・音センサー
音量を数値で返す

・タッチセンサー
押されたことを真偽値で返す

・抵抗センサー
端子間の抵抗値を返す。4系統あり、オプションで温度や距離などの外部センサーをつなぐこともできる

 コンピュータにはUSBの仮想シリアルポート経由で接続し、Scratchはつながれたことを自動的に検出する(ポートの手動設定も可能)。

 センサーボードを使うために、Scratchの「調べる」カテゴリーには、[[スライダー▼]センサーの値]と<[ボタンが押された▼]>のブロックが用意されている。センサーの値はタッチセンサー以外、0から100までに正規化されており単位は無い。Scratchで用いられるブロックの引数はこの範囲の値に収まるものが多く、組み合わせて使いやすくなっている。

 [スライダー▼]の▼をクリックしてメニューを開くと、それ以外に「明るさ」「音」「抵抗-A」「抵抗-B」「抵抗-C」「抵抗-D」から選択できる(「傾き」と「距離」については後述する)。同様に[ボタンが押された▼]には、ほかに「Aがつながれた」「Bがつながれた」「Cがつながれた」「Dがつながれた」があり、真偽値を返す。

図4●トロンボーンのスクリプト
[画像のクリックで拡大表示]

 センサーボードの作例は、「ファイル」メニューの「開く」から「例」を選び、さらに「Sensors and Motors」を開くことで見ることができる(以下ではScratchをインストールしていない人でも様子が分かるように、Scratchのサイトで共有されているページへのリンクを示す)。例えば、「Sensorboard 2 Everything」では、それぞれのセンサーをScratchの持つ視覚効果と連動させている。

 センサーボードは単なる素材であり、それを何に使うかはユーザーに委ねられている。光センサーを使って、日の出とともにScratchの画面でも太陽が昇ったり(Sensorboard 1 Sunrise)、異なる果物の抵抗値を音階に置き換えて演奏したり(Sensorboard 4 FruitOPhone)、紙皿とアルミホイルを工作してゲームコントローラーを作ったり(Sensorboard 5 Squish)、音センサーを吹いて音量、スライダーで音階を決めるトロンボーンを作ることもできる(Sensorboard 3 Trombone図4)。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら