spatial-swiftui-developer について
空間SwiftUIを開発するためのスキルで、シーンや描画方式の選択、RealityKit連携、操作パターンを扱います。アーキテクチャやビルドの課題は関連スキルへ案内し、必要な資料に絞って参照します。
主な機能
- 01描画方式の選択
- 02Model3DとRealityViewの指針
- 03RealityKitコンテンツの変更パターン
- 04空間操作とレイアウトの指針
- 05シーンのライフサイクルとウィンドウ管理
活用シーン
- 01Model3Dによる3Dアセット表示
- 02カスタムRealityKitエンティティグラフの構築
- 03空間ジェスチャーとコントロールの追加
- 04ウィンドウと没入型シーンの管理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tomkrikorian/ visionosagents --skill spatial-swiftui-developerインストール後、Claude Code で/spatial-swiftui-developerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/buttons-and-controls.mdinteraction.mdmodel3d.mdrealityview.mdspatial-layout.mdswiftui-scene-lifecycle.mdswiftui-spatial-overview.mdwindowing-immersion.md詳細
Spatial SwiftUI Developer
クイックスタート
- タスクが実際には表示面の選択、シーンの所有権、またはファイル構成に関するものであれば、まず
spatial-app-architectureに切り替えます。 - タスクが
Chart3D、SurfacePlot、3D チャートのマーク、またはChart3DPoseに関するものであれば、$swiftui-chart3d-developerに切り替えます。 - レンダリングの方式を選びます。シンプルなアセット表示には
Model3D、カスタムのエンティティグラフとアタッチメントにはRealityViewを使います。 - 該当する参照ファイルだけを読み込みます。
- 読み込みは非同期にし、RealityKit の変更は所定のエントリーポイント内で行います。
- ビルド、起動、シミュレーター、テストの問題は
build-run-debugに引き継ぎます。
参照ファイルを読み込むタイミング
| 参照 | 使用する場面 |
|---|---|
swiftui-spatial-overview.md | このスキルの一般的な機能一覧、例、振り分けの指針が必要なとき。 |
model3d.md | 非同期のモデル読み込み、アセット、アニメーション、操作に Model3D を使うとき。 |
realityview.md | RealityView、アタッチメント、RealityKit 統合のパターンを設定するとき。 |
interaction.md | 空間入力のジェスチャや操作のパターンを実装するとき。 |
buttons-and-controls.md | 表示される SwiftUI ボタン、ボタンとしてスタイル設定されたリンク、ツールバー、フォーム、コントロール面を実装するとき。 |
swiftui-scene-lifecycle.md | Window、WindowGroup、ImmersiveSpace、開く/閉じる、復元、起動に関する正式な仕様を確認するとき。 |
windowing-immersion.md | ウィンドウ、ボリューム表示面、またはイマーシブ空間への遷移を管理するとき。 |
spatial-layout.md | SwiftUI の空間レイアウト API、サイズ指定、デバッグツールを使うとき。 |
ワークフロー
- アーキテクチャとシーンの所有権がすでに確定していることを確認します。
- レンダリング面として
Model3D、RealityView、ウィンドウ、ボリューム、イマーシブシーンのいずれかを選びます。 - 該当する参照ファイルだけを読み込みます。
- 実現可能な最小限のシーンを実装し、変更は適切なレイヤー内で行います。
- 選択した SwiftUI と RealityKit の統合方法を要約します。
ガードレール
- 表示されるすべてのボタンに、明示的な
.buttonBorderShape(...)を指定します(ラベル付きアクションには.capsule、アイコンのみのボタンには.circle、カード型ボタンには背景に合わせた.roundedRectangle(radius:)を使います。visionOS では、これによってボタンのホバー強調表示の形状も決まります)。ボタン以外のホバー面では、.hoverEffect()と、対応する.contentShape(.hoverEffect, ...)を組み合わせます。コントロールのコードを書く前にbuttons-and-controls.mdを読み込みます。これは、大きなタスクの一部として付随的にボタンを扱う場合にも適用されます。 - RealityKit の読み込みは非同期にし、アセットやエンティティの読み込みでメインアクターをブロックしないでください。
- RealityKit のコンテンツは、SwiftUI の body コードではなく、
RealityViewの make または update クロージャ内、あるいはシステム内で変更します。 Model3Dはシンプルな表示とレイアウトが必要な場合にのみ使い、カスタム ECS グラフには使わないでください。ImmersiveSpaceは、独自のライフサイクルと環境アクションを持つ別個のシーンとして扱います。defaultSizeは初期値の目安としてのみ使います。システムによってジオメトリが制限されたり、復元されたりする場合があります。- Chart3D と空間データの可視化には
$swiftui-chart3d-developerを使います。 - 起動、ビルド、シミュレーター、codesign、またはデバッグのワークフローに関する質問は
build-run-debugに切り替えます。 - API の使い方ではなく、シーンの境界、所有権、または機能の分割に関する質問には
spatial-app-architectureを使います。 - visionOS 27 の SwiftUI では、新しいシーン、ボリューム、イマーシブ機能の API は追加されていません。ここでのガイダンスは visionOS 27 に対応しています。27 での新機能として、ジェスチャの
inputKinds:フィルタリング(interaction.mdを参照)と、visionOS にも適用されるクロスプラットフォームのツールバーおよびナビゲーションの改善があります。
出力に含める内容
以下を提示してください。
- 選択したレンダリング方式とシーンのパス
- 使用した参照資料
- 関連する API の範囲(
Model3D、RealityView、ウィンドウ管理、インタラクション、レイアウト) - 主な実装上の制約または落とし穴
- 必要に応じて、アーキテクチャ、Chart3D、またはビルド/デバッグへの案内
コメント
Markdown 対応