Sunday, February 28, 2016 javascript,enchant-js

子ども向けプログラミング Ping-Pong Game

enchant.js で Ping Pong Game をつくりはじめた話。

ping-pong

Galaxy Note 5 の Screen Off Memo という機能が素敵らしい。 しかし、この機能は Galaxy Note 5 以前の機種では使えない。さらに調べてみると、Galaxy Note 3,4 などでも Screen Off Memo 同等の機能を実装したアプリが Google Paly にある。これを自分も実装したいなぁと思っていろいろ調べたけれど、実現方法がなぞだった。ならば自分なりに実現を方法を考えてみたのだが「S-Pen を抜いたときにそれを関知する方法」と「Lock Screen Widget」 とを組み合わせれば、Screen Off Memo っぽいアプリがつくれるのではないか?という考えに至った。 だがしかし、Android 5.0 Lollipop 以降では、Lock Screen Widget が廃止されたらしい。あーじゃあどうすればいいんだよ。 その辺で疲れてきて調査をやめた。

今日は仕事が一段落した久しぶりの休日なので、ジュンク堂で Android 本を探してみた。お目当ては Lock Screen Widget 代替機能などについての解説。Android 4.4 KitKat のころまでは新機能などわりと豆に情報をチェックしていたけど、それ以降はあまり知らない。Android 5 Lollipop や 6 Mashumaron の機能について薄く広く解説している本ないかなと思って探したけど、少なくともそこの書店にはなかった。もうこの手のことはネット上しか情報はないのかもね。

Android のとなりあたりの棚を見ていると、Processing の本が並んでいる。思いのほか Processing 関連の本がたくさんあったので、いくつか見ていたら、Processingでピンポンゲームをつくるという本があった。へーProcessing でビジュアルをつくり出すだけではなく、インタラクティブなゲームをつくることもできるんだ。これちょうど子ども向けプログラミングにいいなぁ〜と。だけどなんで Processing なんだろう。子ども向けプログラミングなら、やっぱり JavaScript じゃない?と。まあその本は別に子ども向けプログラミングな本ではないのだから、もちろんProcessingで構わないんだけど。

さらに調べてみると、最近は HTML5仕様として Gamepad API なるものもある。たとえば Logicool などから出ている USB ゲームパッド F310 あたりが使えそうな雰囲気。しかしそれを使わなくとも Wiiのリモコンが Ubuntu に接続できることが判明。それならうちに何個もあるからまずはそれで試すか。これはちょっとおもしろいかも・・・と俄然やる気が出てくる。ピンポンゲーム x JavaScript x Wiiリモコン の組み合わせがなんだか楽しそう。

Wiiリモコン と Ubuntu の接続は結構苦労したけれどできてしまえばとても簡単だった。 しかも、wminput を使うと、Wiiリモコンでの操作を特定のキーに割り当てられるので、Gamepad API のようなものを使わなくても済むこともわかった。 あとは、JavaScript でピンポンゲームを書いて、カーソルキー と Wiiリモコン を接続すれば、Wiiリモコンでブラウザ上で作動するJavaScript ピンポンゲームで遊べるというわけ。これもうだいぶ前に流行っていたことみたいだけどすごいね。

あとは、JavaScript でピンポンゲームを書くだけ。といっても子ども向けだから、全部完成させるのではなく、自分でもつくってみたいというくらいには、動きにおもしろ味があって、さらに実装するときには挫折しない程度にコードは簡単に留めて置く必要がある。できれば 素のJavaScript で済ますことができればと思ったが、Looper について調べていて即挫折。これは Looper を自前でJS実装するところで子どもは挫折してしまう(だろう)。

調べてみると enchant.js が良さそう。ついでに、気になっていた enchantMOON について調べてみたら 2015年末で販売は終了していた。MyScriptのライセンス料が毎年発生するが、ハードの売り上げによる利益がそれに見合わないから、ということらしい。ちょっと残念におもいつつも、enchant.js を使ってみたらこれはすばらしい。enchant.js のフレームワークについて全部で15〜30分くらいしか時間を使っていない。ほとんどすぐにアプリケーション部分(ピンポンゲーム)のコードを書くことができた。

コードはこちら ピンポンゲーム