はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Leap Motion Architectureの日本語訳

Leap Motionの日本語情報は非常に限られているので公式ドキュメントをざっくり日本語訳にしました。誤訳などあったらお知らせください。

本エントリは

https://developer.leapmotion.com/documentation/GetStarted/Leap_Architecture.html

の日本語訳となります。

Leap Motion Architecture

Leap Motionコントローラーは、一般的なクライアントOSをサポートしています。Leap MotionソフトウェアはService(Windows)またはdaemon(MacとLinux)として実行されます。ソフトウェアはUSB経由でLeap Motionコントローラーデバイスと接続します。Leap対応のアプリケーションはLeap Motion serviceにアクセスしてモーショントラッキングデータを受信します。Leap Motion SDKは、Leap Motionデータを取得するために、ネイティブインターフェースとWebSocketインターフェースの2つのAPIが用意されています。これらのAPIを使用すると、ブラウザ環境で実行されるJavaScriptなど、いくつかのプログラミング言語でLeap対応のアプリケーションを作成することができます。

注意:

Leap Motion service/daemon127.0.0.1:5905のTCPポートを使ってアプリケーションと通信します。このアドレスとポートがファイアウォールや他のプログラムによって遮断されないようにしてください。

Topics

Application Programming Interfaces

Leap Motion SDKにはLeap Motion serviceからトラッキングデータを取得するためのネイティブインターフェースとWebSocketインターフェースの2つのAPIが用意されています。ネイティブインターフェースは、新しいLeap対応アプリケーションを作成するために使用するDLLです。WebSocketインターフェースやJavaScriptクライアントライブラリを使用すると、Leap対応のWebアプリケーションを作成することが出来ます。

Leap Motion Application Interface

アプリケーションインターフェースは、DLLとして提供されます。このライブラリは、Leap Motion serviceに接続し、トラッキングデータをアプリケーションに提供します。C++Objective-Cアプリケーションでライブラリをリンクできます。また、JavaVB.NET / C#及びPythonからはそれぞれの言語用バインディングを使って直接ライブラリにリンクすることもできます。

  1. Leap Motion serviceはUSB経由でLeap Motionコントローラーからデータを受信します。そして、その情報を処理してLeap対応アプリケーションにデータを送信します。デフォルトでは、サービスはフォアグランドアプリケーションにトラッキングデータを送信します。しかし、アプリケーションはバックグランドでデータを受信するように要求できます。この要求はユーザーにより拒否できます。
  2. Leap Settings Appは、サービスとは別に実行され、利用者がLeap Motionの設定を構成できます。Leap Settings AppはWindowsならばコントロールパネルアプレットとして、Mac OS Xならメニューバーアプリケーションとして実装されています。
  3. フォアグランドのLeap対応アプリケーションが、Leap Motion serviceからモーショントラッキングデータを受け取ります。Leap対応アプリケーションはLeap Motionネイティブライブラリを使用してLeap Motion serviceに接続できます。
    ネイティブライブラリとの接続は、C++Objective-Cならば直接、JavaVB.NET / C#およびPythonならば言語ラッパーライブラリを貸してリンクできます。
  4. Leap対応アプリケーションがバックグラウンドになったときは、Leap Motion serviceはそのアプリに対してのデータの送信を停止します。バックグランド動作できるアプリケーションであれば、バックグラウンドになったときにデータ受信を要求することが出来ます。バックグラウンドでは、構成設定はフォアグラウンドアプリによって決定されます。
Leap Motion WebSocket Interface

Leap Motion serviceがlocalhostの6437ポートでWebSocketThe サーバーとして動作します。WebSocketインターフェースはJSONメッセージの形式でトラッキングデータを提供します。JavaScriptクライアントライブラリは、JSONメッセージを通常のJavaScriptオブジェクトとしてトラッキングデータを提供します。

  1. Leap Motion serviceは「http://127.0.0.1:6437」でリスニングするWebSocketサーバーを提供します。
  2. Leap Motionコントロールパネルを使って利用者がWebScoketサーバーの有効/無効を設定できます。
  3. サーバーはJSONメッセージ形式でトラッキングデータを送信します。アプリケーションからはサーバーに設定メッセージを送信することができます。
  4. leap.jsクライアントJavaScriptライブラリは、Webアプリケーションで使用されることを前提としています。ライブラリはサーバーへの接続を確立し、JSONメッセージを処理します。JavaScriptライブラリによって提供されるAPIはネイティブAPIの考え方と構造を踏襲しています。

このインターフェースはWebアプリケーションでの使用を想定していますが、WebSocket接続ができればWebアプリケーション以外からも使用することがdけいます。サーバーはRFC6455に準拠しています。

Programming Language Support

Leap Motion ライブラリはC++で記載されています。Leap Motionは、オープンソースツールであるSWIGを使って、VB.NET /C#JavaPythonの言語バインディングを生成しています。SWIGで生成された言語バインディングは対応したプログラミング言語の呼び出しを対応したC++で作成されたLeap Motion ライブラリの呼び出しに変換します。各SWIGバインディングは2つの追加ライブラリを使用しています。JavaScriptとWebアプリケーション開発では、Leap Motion WebScoketのサーバー及びクライアント側のJavaScriptライブラリを提供します。

すべてのライブラリ、コード及びLeap対応アプリケーションやPlug-inを開発するために必要なヘッダファイルは、leap.jsクライアントJavaScriptライブラリを除いてLeap Motion SDKに含まれています。Leap Motion SDKLeap Motion Developer Portalからダウンロードすることが出来ます。SDKパッケージはサポートされている各オペレーティングシステムで利用可能です。JavaScriptクライアントライブラリは別に配布されており、LeapJS GitHub repository からダウンロードすることができます。

C++

C++Leap Motionコントローラー向けの開発をするために、APIヘッダファイルをプログラムに追加し、Leap Motion ライブラリとのリンク、プラットフォームに応じたlibLeap.dylib、Leap.dllまたはlibLeap.soのいづれかを含めてください。

Objective-C

Objective-Cのアプリケーションは、手書きのラッパーコードによってサポートされます。Leap対応のObjective-Cアプリケーションを構築するには、ラッパーヘッダーとObjective-C++コードファイルをLeap Motion  C++ ヘッダーと共にアプリケーションに取り込んでください。(それ以外の場合) 純粋な客観的 C アプリケーションでのラッパーで定義されているクラスを使用することができます。LibLeap.dylib を使用してアプリケーションをリンクし、ライブラリ アプリケーション パッケージに含めます。その後、Objective-Cのアプリケーションでラッパーで定義されたクラスを使用することができます。libLeap.dylibを使用してアプリケーションをリンクすると、アプリケーションパッケージにライブラリが含まれるようになります。

VB.NET / C#

VB.NET / C#のmクラス定義は、.NET Framework 3.5用と.NET Framework 4.0用を提供しています。コードからはLeapCSharp.NET3.5.dllまたはLeapCSharp.NET4.0.dllのどちらか(同一名前空間なのでターゲットプラットフォームに合うほうを選択)を参照します。このライブラリからは、libCSharp.dylib (Mac)、LeapCSharp.dll (Windows)、libCSharp.so (Linux)のいずれかが呼び出されます。中間ライブラリはそれぞれlibLeap.dylib、Leap.dll、libLeap.soになります。

Java

Leap.jarにはLeap Motion Javaクラスが含まれています。コードは、libLeapJava.dylib (Mac)、LeapJava.dll (Windows)、libLeapJava.so (Linux)を読み込みます。各ライブラリにはJavaからの呼び出しを変換し、libLeap.dylib、Leap.dll、libLeap.soにある基本Leap Motion APIを呼び出すネイティブコードが含まれています。中間ライブラリはそれぞれlibLeap.dylib、Leap.dll、libLeap.soになります。

Python

Leap.pyにはLeap Motion Javaクラスが含まれています。コードは、LeapPython.so (MacとLinux)、LeapPython.dll (Windows)を読み込みます。中間ライブラリはそれぞれlibLeap.dylib、Leap.dll、libLeap.soになります。

JavaScript

Leap Motion JavaScriptは2つの主要コンポーネントがあります。最初のコンポーネントLeap Motion serviceによって提供されるWebSocketサーバーです。WebSocketサーバーはWebアプリケーション(もしくはWebSocketに接続できる任意のアプリケーション)からLeap Motion トラッキングデータをJSONフォーマットメッセージとしてアクセスできるようにします。第二のコンポーネントJavaScriptクライアントライブラリのLeap.jsです。Leap.jsはWebSocketのJSON出力をLeap MotionのネイティブAPIと一貫性のある構造に変換するためのオープンソースJavaScript APIです。

Other Languages

利用可能なコミュニティ製の言語バインディングが多数あります。その一部は、Links and Libraries を参照ください。

Operating System Support

    Leap Motion ソフトウェアは、OS X 10.6以降とWindows 7以降をサポートしています。実験的なα版であるLinux版は開発者が構築する場合のみ利用可能です。