Motionは、PCなどの機器に直接に触れることなく、主に手を使ったジェスチャーで操作ができるモーションコントローラーです。マイクロソフト社のKinectと同様、自分でアプリを開発することもできるため、UIの新たな可能性をエンジニアの間でも注目のデバイスです。Motionのサンプルプログラミングを10回にわたって解説します。長丁場になりますが、読者の皆さんを飽きさせない、面白いサンプルプログラミングの開発方法を解説していきたいと思います。お付き合いのほどよろしくお願いいたします。Motionを実際に持っている方が対象です。Motionを使うと、どのようなことができるのかの参考にはなると思います。Controllerレビュー」をご覧になるとわかると思います。この連載に入る前に、ぜひ一読をおすすめします。Motion社の直販など通販サイトを利用することになります。下記の購入サイトから12,165円で入手できます(2013年10月現在)。Controller海外サイトからの購入に多少不安を感じる方もいらっしゃるかもしれませんが、価格は日本円で表示されますし、決して高い買い物ではないでしょう。他にも、Amazonなどから購入が可能です。Motionに興味を持たれた方は、購入を考えてみてはいかがでしょうか。X10.7以降に対応しています。8.1でも問題なく動作していますので、ご安心ください。はじめに、このサンプルを作成した筆者の環境を紹介します。8の環境で作成し、動かしたものです。8.1でも動作はしますが、一部動きが動画と異なる動きになりますので、ご了承ください。Motionの実行環境をインストールしておく必要があります。Motionが接続可能になります。Windows」(図1参照)を任意のフォルダにダウンロードして、解凍しておいてください。この解説はWindowsをメインとするので、Windows版をダウンロードします。Motionのバージョンをチェックして、バージョンアップされている場合は、最新のファイルをダウンロードしてください。更新の連絡も来るので、最初のインストール以降は連絡が来た時に更新すれば良いでしょう。この記事が掲載されるころには、また新しいバージョンになっている可能性もあります。その点はご了承ください。Windows」ボタンをクリックしてダウンロードする(クリックで拡大)今回は、5本の指をアップ・ダウンすることで、円のサイズを変化させるサンプルです。開発手順を見ていきましょう。MotionアプリはWPFで作成します。略で、魅力的な外観のユーザー・エクスペリエンスを持つWindowsクライアント・アプリケーションを作成するための次世代プレゼンテーション・システムです。WPFを使用することにより、スタンドアロン・アプリケーションやブラウザーによってホストされるアプリケーションを広範囲にわたって作成できます。詳細については下記ウィキペディアのページを参照してください。3.5と4.0に対応しています。4.5でも動作します)。4.5で作成しています。4.0で作成すると安心でしょう)。[名前]欄には、ここでは「FingerRecognizeUpDown」と指定します。エクスプローラー]の上部にある[すべてのファイルを表示]アイコンをクリックして、[参照設定]を表示させます。その[参照設定]の右クリック・メニューで[参照の追加]を選択します。「最近使用したファイル」内に、「LeapCSharp.NET4.0.dll」が見当たらない場合は、[参照]ボタンから、「<解凍したフォルダ>\LeapDeveloperKit\LeapSDK\lib」フォルダ内の「LeapCSharp.NET4.0.dll」ファイルを指定して[OK]ボタンをクリックします(図2)。図2:[参照]ボタンをクリックして「LeapCSharp.NET4.0.dll」を指定する。エクスプローラー]内のプロジェクト項目の右クリック・メニューから[追加]−[既存の項目]を選択して(図3参照)、「<解凍したフォルダ>\LeapDeveloperKit\LeapSDK\lib\x86」フォルダ内の「LeapCSharp.dll」と「Leap.dll」の2つのファイルを追加します。CPU」または「x86」の場合は、x86フォルダ内のDLLファイル、「x64」ならx64フォルダ内のDLLファイルを選択する必要があります。これを間違わないよう注意してください。CPU」になっているので、x86フォルダ内のファイルを指定しています。各自の[構成マネージャ]の値に対応して読み込むフォルダを指定してください。エクスプローラー]内に図4のように「LeapCSharp.dll」と「Leap.dll」が追加されます。エクスプローラー]内に「LeapCSharp.dll」と「Leap.dll」が追加された(クリックで拡大)プロパティを設定する「LeapCSharp.dll」と「Leap.dll」のプロパティから、[出力ディレクトリーにコピー]を「常にコピー」するに変更しておきます。これは、2つのDLLファイル共にしておく必要があります(図5)。Motionアプリについて今回のアプリは、5本の指を空中でアップすることで円が拡大、ダウンすることで、円が縮小するアプリです(図6)。図6:5本の指をアップ・ダウンすることで円が拡大縮小する。Motionから手を離し、再度手をかざしてアップするとより大きく拡大する。縮小する場合も同じだ(クリックで拡大)実際に動かした画面を動画で紹介します。今回のサンプルは、「コールバック方式」を使用しています。ControllerクラスとListenerクラス(Leap名前空間)を利用した方式のことです。これ以外に、Controllerクラス(Leap名前空間)だけを使用した「ポーリング方式」というのがあります。Motion開発の全体像」を参照してください。Controllerのフレームレートでフレームを取得する方法として、Listenerオブジェクトを使う方法があり、今回はListenerオブジェクトを使用しています。Controllerオブジェクトは、新しいフレームが使用できるときにListenerのonFrameコールバック関数を呼び出し、OnFrameハンドラでは、Frameオブジェクト自体を呼び出すControllerのFrameメソッドを呼び出すことができます。今回は、以下の2つのコールバックメソッドを使用しています。Motion開発のファースト・インプレッション」を参照してください。Motionセンサーと接続されたときに呼び出されます。onFrameは、フレームのデータが更新されたときに呼び出されます。Motionセンサーのデータはすべてここで処理されます。プログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。活動に本格的に参加、.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。