try! Swift Tokyo 2025 2日目感想

try! Swift Tokyo 2025 2日目の感想も1日目に続き、雑に綴っていきます。

https://tryswift.jp

1日目の感想はこちら。

https://qiita.com/stotic-dev/items/38afaac8cb2e0d866e9a

---

## visionOS 向け TabletopKit でゲームを作ろう

TableTopKit という VisionOS 向けのフレームワークを用いて、ボードゲームを実装する方法について紹介されていました。

TableTopKit はその名の通り「テーブル上で行うゲーム」の作成に特化しており、テーブルの生成や椅子に着席する動作などを表現する API が用意されています。そのため、直感的かつ簡単にボードゲームを構築できる印象を受けました。

WWDC のセッション動画や公式ドキュメントでも TableTopKit のデモが紹介されており、非常にリッチな UI のボードゲームが実現されていて、デモレベルでもここまでできるのかと感動いたしました。こういった事例を見ると、VisionOS のアプリ開発に対するモチベーションも一層高まります。

- [WWDC2024 セッション動画](https://developer.apple.com/jp/videos/play/wwdc2024/10091)
- [TabletopKit ドキュメント](https://developer.apple.com/documentation/tabletopkit)

---

## 一度作れば、どんな入力でもプレイ可能な iOS ゲーム

iOS アプリで作成したゲームを、さまざまな入力方法で操作できるという内容でした。以下のような多様な入力が紹介されており、いずれも非常に興味深いものでした。

- CoreMotion フレームワークを活用した、iPhone の傾きによる入力
- [accessibilityAdjustableAction](https://developer.apple.com/documentation/swiftui/modifiedcontent/accessibilityadjustableaction(_:)/) によるキーボード操作
- [GameController フレームワーク](https://developer.apple.com/documentation/gamecontroller/) を用いたゲームコントローラーでの操作
- Eye Tracking を用いた [onHover](https://developer.apple.com/documentation/swiftui/view/onhover(perform:)) 入力（iOS18 から導入されたアクセシビリティ機能）

特に Eye Tracking 技術はまさに近未来的で、映画で見たような体験が現実になっていると感じ、非常に感動しました。いつかこの技術を使って何か作ってみたいです。

---

## MSDF と Metal を用いた美しいテキストレンダリング

MSDF（Multi-channel Signed Distance Field）という技術を用いることで、ズームしても文字がぼやけることなく、美しくレンダリングできるという内容でした。

ただし、Metal や低レイヤーのグラフィックスに関する知識が求められるため、個人的には難易度が高く、すべてを理解することはできませんでした。グラフィックの専門知識をお持ちの方であれば、より深く理解できるのではないかと思います。

また、[MSDF AtlasGen](https://github.com/Chlumsky/msdf-atlas-gen) というライブラリを使えば、比較的簡単に実装できるとのことでした。

---

## SwiftUI でレイマーチングシェーダー

こちらも Metal 関連のセッションで、Metal によってどのようなことが可能か、そしてその実装方法について紹介されていました。

レイマーチングなど初めて聞く用語も多く、前のセッションと同様に、私には少々難易度が高かったです。ただ、SwiftUI 内で `#shader` のようなマクロを用い、Swift 構文でシェーダーを記述していた点は非常に印象的でした。

`SwiftGLSL` というライブラリを利用しているっぽく、[こちらのリポジトリ](https://github.com/aheze/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 モデルが紹介されていました：

- [DreamFusion](https://dreamfusion3d.github.io/)
- [Shap-E](https://github.com/openai/shap-e)
- [Stable Fast 3D](https://github.com/Stability-AI/stable-fast-3d)

---

## Swift OpenAPI を使ったコーディング --ゼロから構築するストリーミング ChatGPT プロキシ

Swift によるプロキシサーバーの構築が非常に高速に行われていて、非常に驚きました。

これまで Swift でサーバーを構築するイメージはありませんでしたが、Swift Package Manager を活用して、iOS 開発者でも手が届きそうな構成になっていました。

今回紹介されたライブコーディングのリポジトリはこちらです：

- [swift-openapi-generator](https://github.com/apple/swift-openapi-generator)

また、Swift でのサーバーサイド開発には [Vapor](https://docs.vapor.codes/ja/) というフレームワークが用いられるようです。個人アプリのバックエンドなどで、ぜひ使ってみたいと思いました。

---

## Apple Vision Pro: ハンドトラッキングを基盤とした新インターフェース

VisionOS の特性を活かした UI コンポーネント `SystemOverlay` の実装方法が紹介されていました。

VisionOS の開発にとても興味を持ちましたが、Simulator 上では試せない機能もあるとのことで、やはり Vision Pro を持っていない開発者にとっては少しハードルが高いと感じました。今後、その辺りが改善されることを願っています。

---

## RealityKit で iOS アプリに命を吹き込む

iOS アプリにおいて 3D モデルを扱う方法に関するセッションでした。

個人的にはまだ知識不足で、RealityKit や photogrammetryAPI など理解が追いつきませんでしたが、以下の公式リソースを参考に再度学習してみたいと思っています：

- [RealityKit + photogrammetry](https://developer.apple.com/documentation/realitykit/creating_a_photogrammetry_command-line_app)
- [WWDC2021 セッション動画](https://developer.apple.com/videos/play/wwdc2021/10076/)

---

## Swift × Android: Skip が切り拓くクロスプラットフォーム開発の未来

Swift でクロスプラットフォーム開発が可能になるという点に非常に魅力を感じており、このセッションを楽しみにしていました。

Skip を導入する上での疑問点に関する回答も紹介されており、非常に参考になりました：

1. **UI はどうなる？**  
   → Swift から Kotlin + Jetpack Compose への変換（トランスパイルモード）によって、プラットフォームに即した UI を実装可能。

2. **トランスパイルモードとネイティブモード、どちらがおすすめ？**  
   → ネイティブモード（Swift をそのまま使う）がおすすめとのことです。
     SwiftからKotolinへ変換できない構文もあるらしく、トランスパイルモードだと実装時に考えることが増えるみたいですね。

3. **既存アプリへの導入は？**  
   → 技術的には可能ですが、難易度が高く、あまり推奨されないとのこと。

現在はまだ発展途上の段階ですが、今後の成長に非常に期待しています。次に個人アプリを開発する際には、ぜひ Skip を使ってみたいと思いました。

---

## J1 プロサッカーチーム FC 町田ゼルビアの Immersive 動画を撮影し Swift で Viewer を実装し体験会実施した

VisionPro の持つユーザー体験のインパクトを強く感じられるセッションでした。

タイトルの通り、VisionOS 上で Immersive 動画を再生するアプリを実装し、実際に体験してもらったとのことでした。体験中のユーザーの感動した表情が非常に印象的で、やはり VisionOS の開発は魅力的だと再認識しました。

また、アプリ開発において「体験の目的に関係ない要素は極力排除する」という姿勢が徹底されていた点も非常に参考になりました。これは VisionOS に限らず、すべてのプロダクト開発において大切な考え方だと感じました。

不要なフィーチャーを排除し、目的に集中したシンプルなアプリに仕上げたことが、体験の質を高める上で重要なポイントだったように思います。

---

以上、1日目に引き続き、雑な感想でした！
2日目のセッションはグラフィックス関連の内容が多かったですね。
1日目に比べ、個人的にはかなり難しい内容が多かったため、グラフィックスの知識が全然足りないことに気づけました！
ここはこういう意味だよとかのコメントも大歓迎ですので、何かありましたらコメントください！！！