AndroidスマートフォンとScratchを組み合わせて使う話
皆さんのお家には使い古した昔のAndroid携帯は転がってないですか?
今回はそういうスマートフォンを使ってScratchと組み合わせて遊んでみる話です。
Scratchを遠隔で操作したりセンサー情報と言うと有線接続が多いですが、この方法を使うと特別な機器無しにワイアレスでScratchを操作したり、スマートフォンが持っている各種センサーを作品作りに利用することが出来ます。「使い古した」って書いてありますが、(子どもに渡しても大丈夫であれば)今使ってるのやタブレットでも もちろん動きます。
組み合わせて遊ぶ?
Scratch 1.4(Windows/Mac/Linux,RasPi)には Remote Sensors Protocolと言う仕組みが入っていて、外からScratchに情報を送って遊ぶことが出来ます。
どんなアプリがあるの?
調べてみたところ、AndroidとScratchを組み合わせて遊べるアプリは後述の物を除くと4つ。
- Scratch Sensors
加速度センサー情報(傾き具合)と方位をScratchに送る - Scratch Sensors Mod
5つのメッセージをScratchに送る(Scratch Sensorsの改造版) - Scratcher Control
ボタン(4方向・4ボタン)、加速度センサー情報、明るさ、ボイスコマンド、ジェスチャーをScratchに送る - Scratch OSC Bridge / OSC対応 Androidアプリ
OSC(演奏データ通信プロトコル)をScratchで使えるようにするソフト(Win/Mac/Linux)。OSC対応のスマートフォンアプリ(Android,iPhone/iPad)はScratch用に作られたわけではないけど、センサーを利用した物も色々出てる。
Scratch用に作られ一番機能が豊富なのはScratcher Controlでjavaで出来たサーバーを経由するとScratch 2.0で使用も可能です。
他のセンサーも使いたい
で、本題。
Scratch Sensor以外のアプリはスマートフォンをワイアレスコントローラーにするのが目的。これはこれで良いのですが、単に画面中の何かを操作するんじゃ無くて、アートっぽい作品や、物理的な工作(RasPi)と組み合わせてみるのも楽しいですよね。で、最近のAndroidって沢山センサー付いてるじゃないですか。
調べてみると加速度、ジャイロ、照度、磁界、傾き、圧力、近接、温度、重力、直線化速度、回転、湿度、GPSなどが入って居るみたい。全部入ってない機械もあるだろうけど、この辺を”ワイアレス”でScratchの中で利用できたらなんだかワクワクしませんか?
最新のAndroidではセンサーの種類も多いけど、Scratchで遊ぶのに面白そうなセンサーは少なかったのと、当初の「古いAndroid端末の再利用(android 2.2で使える)」を目的(あわよくばお父さんから専用に子どもへプレゼントしてくれそう)に、古い端末でも対応している、加速度、照度、接近センサー、音、方位をScratchに送るアプリを作ってみました。
Android Sensor for Scratch
「作ってみました」とは書いたけどJavaを書くのは初めてで、若干時間がかかり、本当はScratch dayにあわせて宣伝とかしたかったけど無理でした。で、出来上がったのがコレ。
加速度センサー(x,y,z)、方角、周囲の音量、周囲の明るさ、スマートフォンとの距離、スライダー(ボリュームキー)の情報をScratchで使えます。
接近センサーはcmで取れると書いてあったので期待したけど、自分の端末では、8か0(接近したか否か)だけしか取れませんでした。先頭の写真のAndroid2.2では照度(センサー入ってない)と音量がダメ(この時代のLG端末では取れないらしい)でした。
Android携帯とScratch 1.4が入ったPCを同一LANで接続して、しかるべき手順を踏み接続するとセンサー値のブロックが現れます。あとは普通にScratch中でブロックとして使用します。
自由度 高く使えるように複数台でも使えるようにしました。同時に何台のスマートフォンが使えるかは試せなかった(少なくとも2台は行ける)のですが、複数台使ったばかばかしい作品とか …見てみたいなぁ。
Scratch Extension Protocol (2.0)
ただ、Scratch 1.4って 若干今更感があるじゃないですか。Scratch 2.0でも動くのかなぁとScratch 2.0 offline editorを触ってみたのですがセンサー→右クリックしても何も出ません。調べてみるとScratch Extension Protocol (2.0)ってのが出来てて、shift + fileでファイルを読み込ませて/URLを指定してhttpでお喋りできるみたい。
Scratchのようなビジュアル系だけじゃなくて、キーボード打って作るプログラムも楽しいよーって紹介するときに、どうやったら楽しんで貰えるかなぁと思ったけど、Extension Protocol (2.0)を利用してエクステンション作って、サーバー側を書いてみるとかしたら楽しいんじゃないかなぁと思いました。
- Scratch Extension Protocol (2.0)
http://wiki.scratch.mit.edu/wiki/Scratch_Extension_Protocol_(2.0)
- Leap MotionでScratchを操作する
https://airspace.leapmotion.com/apps/scratch-2-0-plug-in-for-leap-motion/windows - node.jsにメッセージを送るサンプル
https://github.com/nathan/scratchext
ただ、Scratch 2.0はベースがWebアプリだけに1.4のようなScratch側での待ち受けは今のところできないようです。オープンソースで出ているpythonで書かれた1.4→2.0への変換サーバーも上手く動かすことはできませんでしたが、上記のScratcher Control Serverのような物を書けば使えるはずです。ただ、他のソフトを入れるってのは正直面倒&Adobe Airはサーバー機能もあるっぽいのでScratch offline editorでよろしくサポートしてくれると嬉しいのですが…
最後に
是非使ってみて、感想などを「google playのレビュー欄」にいただけると嬉しいです。不具合あったら下記ページ「使い方」のコメント欄とかで教えてください。複数台組み合わせて、機械のセンサーボードでは出来なかったような作品作りに使って貰えたりすると嬉しいです。
持ってるのはiPhoneだから使えないって? swift面白そうだけどMac持ってないので挑戦すら出来ないや…
あと、キミの英語は間違っているよと言うのがあれば、添削した奴を送っていただけると非常にありがたいです。
ダウンロードと詳しい使い方は↓をクリックしてご覧下さい。
■Android Sensor for Scratch
https://s4scratch.moyashi-koubou.com