見出し画像

Vision Proで空間ジェスチャーアプリを作った物語

こんにちは、還暦を迎える現役プログラマーの橋本(@AlohaYos)です。

Newton MessagePadからAppleの世界に入り、iPhone →iPad →Watch →TV →Vision Proとアプリを作り続けてきました。(顧客企業のプロトタイプ制作業務が多かったので、自社アプリはそんなに多くありません)

中島さんのTweetでシンギュラリティ・ソサエティを知ったのが2023年6月頃のことでした。面白そうなイベントがあったので、息子とユニットを組んで7月からのBootCampに参加。6月のWWDCで発表されたばかりのVision Proのアプリ制作を題材にすることにしました。

この話はvisionOSで空間ジェスチャーを使ったアプリを発売し、そのテクニックをオープンソース化するまでの物語です。BootCampを通じて出来上がったアプリ “Air Poolbar“は、こんな感じ。

なぜVision Pro?

BootCampのキックオフがあり、錚々たるSingularity Societyメンターやスタッフと参加者の中、東京から遥か遠い金沢に陣取っている地味な私達。みんながAIについて熱く語っている中、BootCamp的にそこはレッドオーシャンだと思って(笑)、誰もやりそうにないVision Proのアプリ制作を選択しました。じつは「誰もやりそうにない」からこそ大変な思いをしていく事になるのですが…。

空間コンピューティング・インターフェイスとは何だろう

私は工場などの泥臭い現場にコンピュータを導入する仕事を長くしていたので「人間とのインターフェイス」をずっと考え続けて来ました。使い易いとは、どういう事なのか。そしてAppleが提唱する「空間コンピューティング」ではどのようなインターフェイスが最適なのか。

理解できないことはやってみるしかないわけで、今までに無かった「空間ジェスチャー」を使った製品を作ってみようと思い立ったわけです。若い頃、近所に耳の聞こえない子供が住んでいて、その子と会話するために手話を独学した事がありますが、手話というのはシンプルなようで非常に表現力があります。それを想い出し「空間ジェスチャー」の可能性を感じたわけです。

無いものは作る。とにかく出来るところから始めよう

ところがベータ版のXcodeでvisionOSのサンプルコードを読み始めてみると、さっそく壁に突き当りました。

  • visionOSはNDAが多くて英語の情報さえも少なすぎる。

  • 誰もジェスチャーをやっている人がいない。

  • ハンドトラッキングはVision Pro実機でしかできない!

  • Vision Proの発売は未定!

どうしよう…BootCampは半年間。成果が出せるメドが立たない…。
こういう時にムクムクと闘争心が沸き立つのが私の性格で(笑)
シャープのMZ-80Kから始まった私のプログラマー歴。当時は乱数を発生させるルーチンや矩形を塗りつぶすルーチンさえもアセンブラで自作する時代でしたから、とにかく無いなら作るというのが普通でした。

今回も「ハンドトラッキングできないなら、できるようにする」と決め、Macのカメラに写った自分の手の画像を使ってvisionOSのハンドトラッキングを置き換えるHandTrackFakeという仕組みを作りました(後にオープンソース化)。
Macカメラに向かって手を動かし、それをvisionOSシミュレータの中に投影して、シミュレータ内の空間オブジェクトを動かしてみます。

  動いた!

ここまで2ヶ月ちょっと掛かりました。

 Vision Proラボへ通う

Appleに行けばVision Proの実機が使えるという話を聞いて、さっそくvisionOSラボに参加。Apple側も新しいデバイスを世に問うという姿勢でヤル気を出しています。

業務の合間を縫って、金沢から六本木まで日帰りで8回参加しました。
HandTrackFakeを使って机上デバッグしていたアプリが1発で動いた時には感動しました。

通算で50時間ほど実機を使い、アップルWWDR部門のスタッフとは顔見知りになって、私には毎回同じデスクが用意されるようになりました(笑)ラボにはvisionOSを開発しているエンジニア本人が参加してくれていて、質問をするとその場で答えてくれます。ただし全ての疑問が解消するわけでもなく、分からない事も増えていきます。

Apple本社へ行く

ここはひとつ、アップル本社エンジニアに聞くしかないと考えた私は、本社で開催されるvisionOSセッション(WWDCをvisionOS専用に小さくしたようなセッション)に参加。セッション後の懇親会では、Reality Composer Proなどの3Dツールを作っているチームやvisionOSチームのメンバーに直に質問をし、自分の作ってきたアプリを見せてアピール。HandTrackFakeに食いつくエンジニアが多くいました(笑)

Air Poolbar発売

11月のBootCamp中間発表で方向性は間違っていないと確認した上で「Vision Pro発売初日からアプリを売り出す」と決めて、本当のビリヤードのような空間ジェスチャーアクションでプレイできるアプリ「Air Poolbar」を完成に向けて作り続けました。
この時点でも実機の発売日は決まっていません。

2023→2024年の年越しをvisionOSアプリ制作に費やし、やがて2024年1月8日に「Vision Proは2月2日に発売」という発表。私達のアプリは1月9日にApp Store審査に提出しましたが、この時点では製品版のVision Proが存在していません。ラボでは特殊な装備の付いた実機(NDAなので言えませんが)でテストしていたので、本当にうまく動くのか不安が残った状態でした。

不安な製品を利用者に使ってもらうわけにはいきません。私はアメリカの住所を持っていたので、製品版Vision Proを買いに行くことにしました。iPhoneの時のようなお祭り騒ぎも無い中、すんなりと製品版を手に入れた私は、そのままアパートに帰ってデバッグを始め、動きのおかしい所を修正してアップデート申請。現在までに6度の修正版をアップデートし、ようやく落ち着いてきました。もっと楽しい使い方を考えるフェーズです。

仲間を求めてオープンソースへ

BootCampでの私達の目標は次の3つでした。

1.空間ジェスチャーを使ったvisionOSアプリを販売すること
2.アプリ制作で使ったテクニックをオープンソースにすること
3.参加エンジニアを募って空間ジェスチャーライブラリを作ること

アプリの販売に漕ぎ着けた後は、空間ジェスチャーで遊べるシンプルなアプリを作り、そこに独自のジェスチャーを追加できるテンプレートを添付してオープンソース化しました。技術的に詳しい内容はQiitaの記事を読んでみてください。

Qiita記事:Vision Pro 空間ジェスチャーを作る

これからは仲間を集める3番めのフェーズに入ります。
まだ海のものとも山のものとも分からない空間コンピューティングですが、だからこそ試行錯誤して楽しめる時期でもあります。
まだまだ楽しもうと思いますので、興味のある方はオープンソースVisionGestureをfolkして、ぜひプルリクエストを送ってください!

次は空間ジェスチャーと自然言語UIをミックスして、手話のように人間の表現力を育てるようなアプリやシステムを手掛けてみたいです。

できる道を作るのがエンジニア

テック業界にそれなりに長くいて会社も経営しているので、新技術を使ったビジネスも考えてはいますが、やはり自分の手を動かしてモノを作り出し、それが人の役に立って評価された時には喜びを感じます。

半年近く、ガムシャラに息子とvisionOSアプリを作り続けてきましたが、「できない理由を探すぐらいなら、できる道を探すほうが楽しい」という基本に戻る旅でした。

今回、アップルWWDRスタッフとBootCamp関係者のみなさんには、大変に刺激をもらいました。締切り設定してもらったからこそDay1からvisionOSアプリが販売できたと感じています。

Singularity Societyメンターの皆様、BootCamp参加者のみなさん、長期間にわたるサポートをありがとうございました!

この記事が気に入ったらサポートをしてみませんか?