memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

ULTRALEAP(leapmotion)のV5(Gemini)&(Win11 or Mac)でもWebSocketが使えたよ〜🎉

背景

昨日、こんなエントリーを書きました。

memorandums.hatenablog.com

Mac用のレガシーアプリ(V2)のリンクが切れてて困ってますとLeapMotionに送った返事がきたんですね。

返信内容は、V2はCatalina以降のmacosでは動作しない、ということと、最新のV5(Gemini)を使ってくれ、ということでした。

で、もう一度、MacにGeminiを入れてみたんですがやはりWebSocketはオープンされていないわけで。調べると、5.2以降からWebSocket機能が削除されちゃったらしいんですね。色々な理由で。ついでにLeapJSも対応しないと。

ダメだこりゃと思ったんですが、LeapMotionにはForumの代わりにdiscordが用意されていてそこでもしかすると何かヒントがないかな。。。と思ってアクセスしてみたんです。leapjsで検索したら対処方法が書かれていました。ありがたい。

以下、Windows11とmacos(Sonoma)で動作することを確認しています。ネットには情報を見かけなかったので書いておきますね。

手順

まず、こちらからGeminiをいれます。ちなみにこれはSDKを使えるようにするためのものであって(LeapMotionと通信するバックグラウンドプロセスが自動的に起動されている)、ビジュアライザとか設定画面は開く必要はないです。接続確認くらいですかね。このアプリの機能をUIから使うとすれば。V4以前のようにWebのアクセスを許可するとかいうメニューはありませんのでご注意ください。

それから、Discordで公開されているLeapCのAPIで実装されたミドルウェアをダウンロードします。以下のスレッドに少なくとも現時点では公開されていましたので、それを入手します。

discord.com

公開主によるとオープンソースにするつもりはない、と回答されていたようですので。。。どこかに保存しておくとよいのかなぁ。。。か自分で作るかでしょうか。面倒ですね。以下の4つのファイルが公開されていました。

Windowsの場合

gemini-websocket-poc.zipを解凍して、その中にあるUltraleap-Tracking-WS.exeをダブルクリックするだけでコマンドプロンプトが起動しWebSocketサーバが動作しました。あとは自分で開発した leapjsのアプリを起動すれば動くはずです。

Macの場合

僕のはM1なのでUltraleap-WS-MacOS-Silicon.zipを解凍します。その中にあるUltraleap-Tracking-WSをダブルクリックすれば動作するかもしれません。お使いの環境によっては。

動作しない場合は、まず、必要なのがlibwebsocketsなので、これをbrewでインストールします。

brew install libwebsockets

これでまた、Ultraleap-Tracking-WSをダブルクリックしてみてください。これで動作する場合もあると思います。

ちなみに動作後の画面も貼っておきますね。何をもって動作しているかわからない方もいると思いますので。Starting server...と出ていれば大丈夫でしょう。

で、これでもエラーが出る場合があると思います。私はそうでした。原因は、同ディレクトリに入っているlibLeapC.5.dylibという動的ライブラリが読み込めないとUltraleap-Tracking-WSが動作できわけです。エラーメッセージを読むとですね。ということで、Ultraleap-Tracking-WSと同じディレクトリ内にある動的ライブラリを読み込めるようにカレントディレクトリの環境変数に追加します。

環境変数をお使いのシェル用のファイルに追加します。僕はzshなので、.zprofileに以下を追加しました。

export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH

これで僕は起動しました。leapjsで作成したアプリと通信できたことも確認しています。

とりあえず、情報でした。

ちなみにLeapMotionは10年以上前に購入した初代のものです。

追記

さきほど、LeapMotionの方から以下の返信をいただきました。Geminiアプリで公式にWebSocketに対応する予定とのことです。このハックはそれまでの一時的な処置になりますね。楽しみです。LeapMotion2を購入して支援しないと。。。と思います。ハードが優秀なので使えちゃう問題があるんですけどね。。。

Whilst LeapJS is not currently support in Gemini V5, we are currently working on bringing back WebSocket support to Gemini V5 and this is still going through QA. In the meantime I recommend that you use the unofficial WebSocket middleware that was shared on Discord.

We will share an update via our Discord server and social media channels regarding official support for using Websockets as soon as we can.