TOPシステム開発> 【新・言語進化論】アレで使われている言語って何?> 第5回:Wiiリモコン+PCのアプリケーション開発 (1/3)




【新・言語進化論】アレで使われている言語って何?

【新・言語進化論】アレで使われている言語って何?

第5回:Wiiリモコン+PCのアプリケーション開発

著者:tokkyo

公開日:2007/11/30(金)

Wiiリモコンのすごさとプロトコル

本連載もいよいよ最終回。そのテーマとして、大人気のゲームコンソールとそのリモコンがどんな「言語=プロトコル」で通信しているかに着目してみた。プロトコルがわかれば、PCと接続して「言語=プログラム言語」でアプリケーションが開発できる可能性がみえてくる。今回取り上げるのは「Wiiリモコン」だ。

2006年に発売が開始された任天堂「Wii」のコントローラ「Wiiリモコン」は、通常のボタン類のほかに「3軸の加速度センサ」と赤外線を検出する「CMOSセンサ」が搭載されている点が大きな特徴だ。さらに、振動モーターやスピーカー、EEPROM(Electronically Erasable and Programmable Read Only Memory)などもあの小さいリモコンの中に内蔵されている。

内蔵された加速度センサはXYZ各軸に対して±3Gまでの重力加速度を検出が可能で、振ったり傾けたりといった動作の検出に使用される。一方CMOSセンサでは、付属のセンサーバーの両端に入っている赤外線LEDの光(目視できない)の位置が、Wiiリモコンからみてどこに存在しているかを1024×768の分解能で検出している。

実はセンサーバーはただの光源でしかない。Wiiリモコンの側に搭載されたCMOSセンサでセンサーバーを定常的に撮影しているとイメージするとわかりやすいだろう。このCMOSセンサで得られる2つの点の間隔を計算することにより、センサーバーとWiiリモコン間の距離を計算できる。これはWii上のアプリケーションでの、カーソルのポインティングなどに使われている。

そしてWiiリモコンはWii本体との間で、これらのセンサの値とボタンの情報を「Bluetooth」という無線通信の規格を利用してやり取りをしている。

図1:Wiiリモコンの仕組み
図1:Wiiリモコンの仕組み
(画像をクリックすると別ウィンドウに拡大図を表示します)

PCや携帯電話などでも使われているBluetoothには、機器の種類ごとに策定されたプロトコルがあり、これをプロファイルと呼び標準化している。つまりWiiリモコンは「Bluetoohという汎用の規格」を使用しているため、WindowsやMac OS Xなどから認識させ、利用できる可能性が高いということだ。

実際、何も手を加えない状態でWiiリモコンをBluetoothを内蔵したPCに接続してみると、マウスやキーボードと同じ「HID(ヒューマンインターフェイスデバイス)」として認識される。しかし、そのままの状態では残念ながらボタン類が検出されない。

Wiiの発売以前からこの新しいコントローラをPCで使えないかと一部のマニアの間で関心が高まっていた。アメリカやヨーロッパではWiiが先行発売されており、日本に先駆けて解析が進んでいたという状況もあった。

具体的な解析手順は詳しくはわからないが、WebサイトなどをみているとWiiとの通信のパケットを解析する機械を寄付を募って購入しようとしていたり、とりあえずさまざまなデータを送りつけて反応をみたり、といった手法がとられていたようだ。

そして発売から時間が経つにつれ、特殊なデータ(コマンド)をWiiリモコンに送りつけることで、リモコンがセンサのデータを送信してくることがわかってきた。そして日本でWiiが発売される前に、LinuxからWiiリモコンを使用する方法が確立された。詳しい情報は「WiiLi(http://wiili.org)」に掲載されているのでご覧いただきたい。

次ページ以降では、Wiiリモコンのプロトコルの詳細と開発手法について紹介する。 次のページ




tokkyo
著者プロフィール
tokkyo
1983年ノルウェー王国生まれ。2006年早稲田大学理工学部情報学科卒。現在は東アジアを拠点に、おなかすいた族の族長として人類総おなかすいた族計画を遂行中。お問い合わせはお近くのおなかすいた族まで。
http://onakasuita.org


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第5回:Wiiリモコン+PCのアプリケーション開発
Wiiリモコンのすごさとプロトコル
  プロトコルの詳細と開発について
  実際のアプリケーションの説明と今後の可能性
【新・言語進化論】アレで使われている言語って何?
第1回 iPod touchはハンドヘルドMac!?
第2回 Second Lifeの開発はオブジェクトに通ず
第3回 cell computing βirthでハイビジョンアニメを作る
第4回 C++からJavaへ分散コンピューティング環境を移植した
第5回 Wiiリモコン+PCのアプリケーション開発