VisionOSでプログラミングをほんのちょっとだけ触ってみて思ったこと
VisionOSのSDKが公開されたので出先でダウンロードして早速試してみた。エミュレータはそれだけで楽しい。VisionOSでどんなことができるか想像しやすい。どんなイメージビデオよりも説得力があり、肌触りがある。
VisonOSのSDKはMacとApple IDがあれば誰でも無料でダウンロードできる。たぶん。僕は何年も個人アカウントのApple Developer Promgramへの支払いをしてない。
UnityでVisionOSを触る前にSwiftでVisionOSを触ってみる。
触ってみてわかったのは、全く絶望的なくらい、「空間大のiPad」でしかないということ。
プログラミングモデル的にはこれまでiOSアプリを作ってきた人にとってはかなりとっつきやすいだろう。例えば平面的なアプリなら、ほとんどそのまま動きそうである。
反面、例えばお絵描きアプリみたいなのが標準で入っているが、お絵描きを視線入力でやるのは相当難しそうだ。
真っ先に誰かが作りそうなのは、画像認識を使ってお絵描きをするアプリだろうと思う。
視線入力よりは手書き入力したい。ただ、それがそう簡単にできるならAppleは最初からやってるはずで、なかなかの難易度だからサードパーティ製アプリが出てきてこなれてきたところで標準搭載するはずである。と言っても、そのラグ(サードパーティアプリが人気になってAppleが標準機能にするまでの時間)は最低2年、長くて5年から10年はかかるだろう。
立体的なアプリの場合、作り方がかなり限定される。
RealityKitで実装するようなものは書きやすいはず。
サンプルのHello Worldは、Hello Worldという単語では説明しきれないくらい情報量が多い。
https://twitter.com/shi3z/status/1672449925391458304
ただ、これが一つのVisionOSアプリのスタンダードになることは間違いない。
Hello Worldアプリは、まず平面的なアプリとして立ち上がる。
メニューから項目を選ぶと、平面から地球儀が立体的に飛び出して、その周りを月やハッブル宇宙望遠鏡がグルグル回る。
次に、「太陽系」モードに移行すると、全体が没入モードになり、空間上に太陽系が浮かぶ。実にシームレスなARからVRへの移行だ。
ただ、これで表現できるのは、物体をたくさん空間に置くことで表現できるものだけである。チームラボならこれでも十分作品が作れるだろう。難しいところは全くない。
Happy Beamサンプルは、カメラからの入力とARを組み合わせたアプリだ。
これは実機がないとなかなか開発がキツそうだ。
ジオラマのサンプルはジオラマの空間表示とモーフィングのサンプルだ。
最初から空間に何か出てくるアプリを作る場合には参考になりそうだ。
しかしVisionOSのサンプルは凝ってるな。凝りすぎとも言える。Direct3Dの最初のサンプルくらい(無駄に)凝っている。
地形表示をするようなアプリは断然こういう形になるだろう。
ところで、VisionOSを(エミュレータ上で)触ってみた感想としては、「よくできたHoloLens」というイメージである。
HoloLensは、最初のアレックス・キップマンのデモが凄すぎて、「異次元かよ」と思わせるのに十分だった。しかし、実際に触ってみると、実はシングルスレッドで、同時に動かせるアプリは一つだけ、あるアプリが動作中は他のアプリは停止するという、「まあそんなもんだよね」というものだった。
VisionOSも同じで、二つ以上のアプリを同時に操作することはできない。これがmacOSとの最大の違いでもある。
例えばSafariは同時に一つしか開けない。本来欲しい使い道としてはねWebブラウザの画面は何枚も空間に配置したいところだが、M2チップを搭載しているにも関わらず、それができない。タブを複数切り替えることができるのみだ。
これはユーザーインターフェースの問題なのか、OSの設計思想の問題なのか微妙だが、プログラムは格段に作りやすくなる反面、ユーザーの期待を裏切るかもしれない部分だ。まあ50万円も払える人はそんなこと気にしないと思うが(HoloLensも40万円くらいしたが、ガッカリしたけど他の体験が衝撃的で金返せとまでは思わなかった)。
M2チップを搭載していながら、マルチウィンドウ的に使う選択肢を用意しなかったのは、Appleらしいとも言える。マルチウィンドウに対応するとユーザーは混乱するしフィッシング詐欺への対策も難しくなる。そのリスクを取るくらいならまずは単体の空間コンピューティングアプリの作りこみを優先しようというのだろう。
まあ色々な人に色々な意見があるだろうが、VisionOSを使って思ったのは、これをきっかけにiPhoneに対するAndroidのような、新しく、(一見難解という)リスクはあるけどオープンで攻めた仕様のOSが生まれるのではないかという期待が湧いてきた。
空間コンピューティングを標榜しているのに、空間にあるアプリはそれぞれがシングルスレッドで動くというのはどうもおかしいと感じる。
つまりSafariをみている間はGoogleMapは止まっている。まあ同時に使うことは稀だろうが、例えば僕ならTerminalをたくさん起動したりSafariの画面をたくさん開いたりして、ディープラーニングの学習過程を複数同時に確認したい。それができないのなら、自宅の7面マルチディプレイ環境の方がよほど「空間コンピューティング」的であるとさえ思う。
まあある種の遊びとして、例えばJavaScriptのようなもので空間を記述し、擬似的なマルチタスク環境を作って遊ぶ、いわばシングルスレッド時代のMacOSのデスクトップアクセサリ的なものはあり得るかもしれない。まあそういうリスクのあるものはサードパーティが勝手に作りなはれということなのだろう。
単にWebKitを複数のウィンドウで動かすだけのような素朴なアプリでも最初は需要があるだろう。というか僕が欲しい。でもこんなのは誰かが勝手に作りそうだ。
iOSがタッチコンピューティングの最終回答ではないように(そう思っているのが世界に僕一人だとしても)、VisionOSもまた、空間コンピューティングの最終回答ではなさそうだ。しかし、どちらも最終回答に限りなく近い完成度があるし、そもそも目的が根本的に違う。
いずれにせよ、久しぶりにワクワクするようなことが起きようとしているのは間違いなさそうだ。