try! Swift Tokyo 2025 2日目の感想も1日目に続き、雑に綴っていきます。
1日目の感想はこちら。
visionOS 向け TabletopKit でゲームを作ろう
TableTopKit という VisionOS 向けのフレームワークを用いて、ボードゲームを実装する方法について紹介されていました。
TableTopKit はその名の通り「テーブル上で行うゲーム」の作成に特化しており、テーブルの生成や椅子に着席する動作などを表現する API が用意されています。そのため、直感的かつ簡単にボードゲームを構築できる印象を受けました。
WWDC のセッション動画や公式ドキュメントでも TableTopKit のデモが紹介されており、非常にリッチな UI のボードゲームが実現されていて、デモレベルでもここまでできるのかと感動いたしました。こういった事例を見ると、VisionOS のアプリ開発に対するモチベーションも一層高まります。
一度作れば、どんな入力でもプレイ可能な iOS ゲーム
iOS アプリで作成したゲームを、さまざまな入力方法で操作できるという内容でした。以下のような多様な入力が紹介されており、いずれも非常に興味深いものでした。
- CoreMotion フレームワークを活用した、iPhone の傾きによる入力
- accessibilityAdjustableAction によるキーボード操作
- GameController フレームワーク を用いたゲームコントローラーでの操作
- Eye Tracking を用いた onHover 入力(iOS18 から導入されたアクセシビリティ機能)
特に Eye Tracking 技術はまさに近未来的で、映画で見たような体験が現実になっていると感じ、非常に感動しました。いつかこの技術を使って何か作ってみたいです。
MSDF と Metal を用いた美しいテキストレンダリング
MSDF(Multi-channel Signed Distance Field)という技術を用いることで、ズームしても文字がぼやけることなく、美しくレンダリングできるという内容でした。
ただし、Metal や低レイヤーのグラフィックスに関する知識が求められるため、個人的には難易度が高く、すべてを理解することはできませんでした。グラフィックの専門知識をお持ちの方であれば、より深く理解できるのではないかと思います。
また、MSDF AtlasGen というライブラリを使えば、比較的簡単に実装できるとのことでした。
SwiftUI でレイマーチングシェーダー
こちらも Metal 関連のセッションで、Metal によってどのようなことが可能か、そしてその実装方法について紹介されていました。
レイマーチングなど初めて聞く用語も多く、前のセッションと同様に、私には少々難易度が高かったです。ただ、SwiftUI 内で #shader
のようなマクロを用い、Swift 構文でシェーダーを記述していた点は非常に印象的でした。
SwiftGLSL
というライブラリを利用しているっぽく、こちらのリポジトリ にも "Coming soon!" と記載があるため、今後は公開されそうで楽しみです。
Swift でシェーダーが書けるようになると、Metal の学習ハードルも下がりそうですね。
NeXTSTEP 向けアプリを作った話 ― Objective-C を恐れるのをやめ、愛するようになった理由
NeXTSTEP 時代の開発環境でプログラミングを行う様子を拝見できる、非常にエモい内容でした。
「NS」というプレフィックスが NeXTSTEP に由来することは知っていましたが、当時の IDE やビルドプロセスについては全く知らなかったため、非常に新鮮かつ興味深かったです。
特に驚いたのは、当時の IDE が非常に高速だったことと、シンプルながら完成された UI です。現在の Xcode は高機能である分、不安定な面もありますが、改めてその豊かな UI には感謝したいと感じました。
Vision Pro × Text to 3D Model: Swift と生成型 AI が切り拓く新時代の空間コンピューティング
テキストから VisionOS 上に 3D モデルを生成するアプリの実装事例が紹介されていました。
AI によって 3D モデルが生成されるというプロセスは、個人的に非常に驚きでした。「そんなことまでできるのか!」という気づきがありました。
以下のような AI モデルが紹介されていました:
Swift OpenAPI を使ったコーディング --ゼロから構築するストリーミング ChatGPT プロキシ
Swift によるプロキシサーバーの構築が非常に高速に行われていて、非常に驚きました。
これまで Swift でサーバーを構築するイメージはありませんでしたが、Swift Package Manager を活用して、iOS 開発者でも手が届きそうな構成になっていました。
今回紹介されたライブコーディングのリポジトリはこちらです:
また、Swift でのサーバーサイド開発には Vapor というフレームワークが用いられるようです。個人アプリのバックエンドなどで、ぜひ使ってみたいと思いました。
Apple Vision Pro: ハンドトラッキングを基盤とした新インターフェース
VisionOS の特性を活かした UI コンポーネント SystemOverlay
の実装方法が紹介されていました。
VisionOS の開発にとても興味を持ちましたが、Simulator 上では試せない機能もあるとのことで、やはり Vision Pro を持っていない開発者にとっては少しハードルが高いと感じました。今後、その辺りが改善されることを願っています。
RealityKit で iOS アプリに命を吹き込む
iOS アプリにおいて 3D モデルを扱う方法に関するセッションでした。
個人的にはまだ知識不足で、RealityKit や photogrammetryAPI など理解が追いつきませんでしたが、以下の公式リソースを参考に再度学習してみたいと思っています:
Swift × Android: Skip が切り拓くクロスプラットフォーム開発の未来
Swift でクロスプラットフォーム開発が可能になるという点に非常に魅力を感じており、このセッションを楽しみにしていました。
Skip を導入する上での疑問点に関する回答も紹介されており、非常に参考になりました:
-
UI はどうなる?
→ Swift から Kotlin + Jetpack Compose への変換(トランスパイルモード)によって、プラットフォームに即した UI を実装可能。 -
トランスパイルモードとネイティブモード、どちらがおすすめ?
→ ネイティブモード(Swift をそのまま使う)がおすすめとのことです。
SwiftからKotolinへ変換できない構文もあるらしく、トランスパイルモードだと実装時に考えることが増えるみたいですね。 -
既存アプリへの導入は?
→ 技術的には可能ですが、難易度が高く、あまり推奨されないとのこと。
現在はまだ発展途上の段階ですが、今後の成長に非常に期待しています。次に個人アプリを開発する際には、ぜひ Skip を使ってみたいと思いました。
J1 プロサッカーチーム FC 町田ゼルビアの Immersive 動画を撮影し Swift で Viewer を実装し体験会実施した
VisionPro の持つユーザー体験のインパクトを強く感じられるセッションでした。
タイトルの通り、VisionOS 上で Immersive 動画を再生するアプリを実装し、実際に体験してもらったとのことでした。体験中のユーザーの感動した表情が非常に印象的で、やはり VisionOS の開発は魅力的だと再認識しました。
また、アプリ開発において「体験の目的に関係ない要素は極力排除する」という姿勢が徹底されていた点も非常に参考になりました。これは VisionOS に限らず、すべてのプロダクト開発において大切な考え方だと感じました。
不要なフィーチャーを排除し、目的に集中したシンプルなアプリに仕上げたことが、体験の質を高める上で重要なポイントだったように思います。
以上、1日目に引き続き、雑な感想でした!
2日目のセッションはグラフィックス関連の内容が多かったですね。
1日目に比べ、個人的にはかなり難しい内容が多かったため、グラフィックスの知識が全然足りないことに気づけました!
ここはこういう意味だよとかのコメントも大歓迎ですので、何かありましたらコメントください!!!