axiom-ios-games について
axiom-ios-gamesは、iOSゲームやインタラクティブな3D体験を開発・保守する人向けのルーティングスキルです。SpriteKit、SceneKit、RealityKitの課題に応じて、ガイド、リファレンス、診断、SpriteKitの自動監査へ案内します。
主な機能
- 01SpriteKit、SceneKit、RealityKitのタスク振り分け
- 02設計・API・診断ガイドの選択
- 03SceneKitからRealityKitへの移行案内
- 04SpriteKitコード自動スキャンへの案内
活用シーン
- 01新しい2Dゲームのスキル選定
- 02SpriteKitの物理や性能問題の調査
- 03SceneKitプロジェクトの保守や移行
- 04RealityKitでの3D・AR体験の構築
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ charleswiltgen/ axiom --skill axiom-ios-gamesインストール後、Claude Code で/axiom-ios-gamesを入力して読み込まれたか確認します。
詳細
iOS ゲームルーター
ゲーム開発、SpriteKit、SceneKit、RealityKit、またはインタラクティブシミュレーションに関する作業では、必ずこのスキルを使用してください。
使用するタイミング
次の場合に、このルーターを使用します。
- 新しい SpriteKit ゲームまたはプロトタイプ(2D)を構築する
- SceneKit または RealityKit で 3D ゲームを構築する
- 物理演算(衝突、接触、力、ジョイント)を実装する
- ゲームアーキテクチャ(シーン、レイヤー、カメラ、ECS)を設定する
- SpriteKit、SceneKit、または RealityKit の問題をデバッグする
- ゲームのパフォーマンス(ドローコール、ノード数、エンティティ数、バッチ処理)を最適化する
- ゲームループ、デルタタイム、または一時停止処理を管理する
- ゲームでのタッチ/入力処理を実装する
- SpriteKit または RealityKit を SwiftUI と統合する
- パーティクルエフェクト、テクスチャアトラス、または 3D モデルを扱う
- SpriteKit、SceneKit、または RealityKit の API の詳細を調べる
- SceneKit から RealityKit に移行する
- RealityKit で AR ゲームを構築する
ルーティングロジック
SpriteKit(2D)
アーキテクチャ、パターン、ベストプラクティス → /skill axiom-spritekit
- シーングラフモデル、座標系、アンカーポイント
- 物理エンジン:ビットマスクの管理、接触検出、ボディタイプ
- アクションシステム:シーケンス、グループ化、名前付きアクション、タイミング
- 入力処理:タッチ、座標変換
- パフォーマンス:ドローコール、バッチ処理、オブジェクトプール、SKShapeNode の落とし穴
- ゲームループ:フレームサイクル、デルタタイム、一時停止処理
- シーン遷移とデータ受け渡し
- SwiftUI との統合(SpriteView、UIViewRepresentable)
- Metal との統合(SKRenderer)
- アンチパターンとコードレビューのチェックリスト
- 押し返し用テンプレートを使ったプレッシャーシナリオ
API リファレンスと検索 → /skill axiom-spritekit-ref
- 全 16 種類のノードタイプとプロパティ、パフォーマンスに関する注意事項
- SKPhysicsBody の作成メソッドとプロパティ
- SKAction の完全なカタログ(移動、回転、拡大縮小、フェード、合成、物理演算)
- テクスチャとアトラスの管理
- SKConstraint の種類と SKRange
- SKView の設定とスケールモード
- SKEmitterNode のプロパティとプリセット
- SKRenderer のセットアップと SKShader の構文
トラブルシューティングと診断 → /skill axiom-spritekit-diag
- 物理接触が発生しない(6 分岐の判断ツリー)
- オブジェクトが壁をすり抜ける(5 分岐)
- フレームレートが低い(主要な分岐 4 つ、末端 12 個)
- タッチが認識されない(6 分岐)
- メモリの急増とクラッシュ(5 分岐)
- 座標の混乱(5 分岐)
- シーン遷移時のクラッシュ(5 分岐)
自動スキャン → spritekit-auditor エージェントを起動するか、/axiom:audit spritekit を実行します(物理ビットマスク、ドローコールの無駄、ノードの蓄積、アクションによるメモリリーク、座標の混乱、タッチ処理、オブジェクトプールの欠如、デバッグオーバーレイの欠如を検査)
SceneKit(3D — 非推奨)
SceneKit は iOS 26 で事実上非推奨になりました。 既存コードの保守に限って使用してください。新しい 3D プロジェクトでは RealityKit を使用してください。
保守と移行計画 → /skill axiom-scenekit
- シーングラフのアーキテクチャ、座標系、変換
- レンダリング:SCNView、SceneView(非推奨)、SCNViewRepresentable
- ジオメトリ、PBR マテリアル、シェーダーモディファイア
- ライティング、アニメーション(SCNAction、SCNTransaction、CAAnimation ブリッジ)
- 物理演算:ボディ、衝突カテゴリ、接触デリゲート
- アセットパイプライン:Model I/O、USD/DAE/SCN 形式
- ARKit との統合(レガシーな ARSCNView)
- 移行の判断ツリー(移行する場合と保守する場合)
- アンチパターンとプレッシャーシナリオ
API リファレンスと移行マッピング → /skill axiom-scenekit-ref
- SceneKit → RealityKit の概念対応表
- シーングラフ API:SCNScene、SCNNode、SCNGeometry
- マテリアル:ライティングモデル、PBR プロパティ、シェーダーモディファイア
- ライティング:全種類のライトとプロパティ
- カメラ:SCNCamera のプロパティ
- 物理演算:ボディタイプ、形状、ジョイント
- アニメーション:SCNAction カタログ、タイミング関数
- 制約:全種類の制約
RealityKit(3D — モダン)
ゲーム以外の3Dコンテンツ表示(製品ビューアー、AR試着、空間コンピューティング)では、ios-graphicsルーターもこれらのRealityKitスキルに振り分けます。
アーキテクチャ、ECS、ベストプラクティス → /skill axiom-realitykit
- Entity-Component-Systemのメンタルモデルとパラダイムシフト
- Entity階層、トランスフォーム、ワールド空間クエリ
- 組み込みコンポーネントとカスタムコンポーネント、コンポーネントのライフサイクル
- Systemプロトコル、更新順序、イベント処理
- SwiftUIとの統合:RealityView、Model3D、アタッチメント
- iOSでのAR:AnchorEntityの種類、SpatialTrackingSession
- インタラクション:ManipulationComponent、ジェスチャー、ヒットテスト
- マテリアル:SimpleMaterial、PBR、Unlit、Occlusion、ShaderGraph、Custom
- 物理演算:衝突形状、グループ/フィルター、イベント、力
- アニメーション:トランスフォーム、USD再生、再生制御
- オーディオ:空間オーディオ、環境音、チャンネル
- パフォーマンス:インスタンシング、コンポーネントの頻繁な生成・破棄、形状の最適化
- マルチプレイヤー:同期、所有権
- アンチパターンとコードレビューのチェックリスト
- 高負荷シナリオ
APIリファレンスと検索 → /skill axiom-realitykit-ref
- Entity API:プロパティ、階層、サブクラス
- すべてのプロパティを含むコンポーネントの完全なカタログ
- MeshResourceジェネレーター
- ShapeResourceの種類とパフォーマンス
- SystemプロトコルとEntityQuery
- Sceneイベントのカタログ
- RealityView API:イニシャライザー、コンテンツ、ジェスチャー
- Model3D API
- マテリアルシステム:すべての種類と完全なプロパティ一覧
- アニメーションのタイミング関数と再生制御
- オーディオコンポーネントと再生
- RealityRenderer(Metal統合)
トラブルシューティングと診断 → /skill axiom-realitykit-diag
- Entityが表示されない(8分岐の判断ツリー)
- Anchorがトラッキングされない(6分岐)
- ジェスチャーに反応しない(6分岐)
- パフォーマンスの問題(7分岐)
- マテリアルの見た目がおかしい(6分岐)
- 物理演算が機能しない(6分岐)
- マルチプレイヤーの同期の問題(5分岐)
判断ツリー
- 2D SpriteKitゲームを構築/設計していますか? → axiom-spritekit
- 特定のSpriteKit APIの使い方を知りたいですか? → axiom-spritekit-ref
- SpriteKitが壊れている、またはパフォーマンスが悪いですか? → axiom-spritekit-diag
- 既存のSceneKitコードを保守していますか? → axiom-scenekit
- SceneKit APIリファレンスまたは移行マッピングが必要ですか? → axiom-scenekit-ref
- 新しい3Dゲームまたはエクスペリエンスを構築していますか? → axiom-realitykit
- 特定のRealityKit APIの使い方を知りたいですか? → axiom-realitykit-ref
- RealityKitのEntityが表示されない、ジェスチャーが機能しない、またはパフォーマンスに問題がありますか? → axiom-realitykit-diag
- SceneKitからRealityKitに移行していますか? → axiom-scenekit(移行ツリー)+ axiom-scenekit-ref(マッピング表)
- ARゲームを構築していますか? → axiom-realitykit
- 物理演算の接触が機能しませんか(SpriteKit)? → axiom-spritekit-diag(症状1)
- フレームレートが低下していますか(SpriteKit)? → axiom-spritekit-diag(症状3)
- 座標/位置が分かりにくいですか(SpriteKit)? → axiom-spritekit-diag(症状6)
- アクションの完全な一覧が必要ですか? → axiom-spritekit-ref(パート3)
- 物理ボディの設定リファレンスが必要ですか? → axiom-spritekit-ref(パート2)
- Entityが表示されませんか(RealityKit)? → axiom-realitykit-diag(症状1)
- ジェスチャーに反応しませんか(RealityKit)? → axiom-realitykit-diag(症状3)
- SpriteKitコードを自動スキャンしたいですか? → spritekit-auditor(エージェント)
合理化への反論
| 考え | 実際 |
|---|---|
| "SpriteKit はシンプルだから、スキルは必要ない" | 物理ビットマスクのデフォルト値は 0xFFFFFFFF で、誤検出の衝突を引き起こします。ビットマスクのチェックリストを使えば、2 分で見つけられます。 |
| "SKShapeNode を使えばいい。手っ取り早い" | SKShapeNode ごとに個別の描画呼び出しが発生します。50 個なら描画呼び出しも 50 回です。axiom-spritekit には、テクスチャに事前レンダリングするパターンがあります。 |
| "座標系は自分で把握できる" | SpriteKit の原点は左下(UIKit とは逆)です。さらにアンカーポイントも加わります。axiom-spritekit-diag の症状 6 で、5 分で解決できます。 |
| "物理演算は単純だ" | 3 種類のビットマスクプロパティ、コールバック内での変更ルール、トンネリングのエッジケースがあります。axiom-spritekit のセクション 3 ですべての注意点を解説しています。 |
| "自分のデバイスでは問題なく動く" | パフォーマンスはデバイスによって大きく異なります。axiom-spritekit のセクション 6 に、デバッグオーバーレイのチェックリストがあります。 |
| "新しいプロジェクトには SceneKit で問題ない" | SceneKit は iOS 26 で非推奨扱いとなっています。新機能は追加されず、セキュリティパッチのみが提供されます。axiom-scenekit には移行の判断ツリーがあります。 |
| "RealityKit はあとで学べばいい" | SceneKit のコードはすべて移行時の負債になります。axiom-scenekit-ref には概念の対応表があるため、移行を抽象論ではなく具体的に把握できます。 |
| "シンプルな 3D アプリに ECS は大げさだ" | すでに ECS を使っています。Entity と ModelComponent です。axiom-realitykit では、シンプルな構成から複雑な構成へ拡張する方法を解説しています。 |
| "タップにコリジョンシェイプは必要ない" | RealityKit のジェスチャには CollisionComponent が必要です。axiom-realitykit-diag を使えば、30 分かけて推測する代わりに 2 分で診断できます。 |
| "ゲームの更新には Timer を使えばいい" | Timer ベースの更新ではフレームを逃し、レンダリングとも同期されません。axiom-realitykit には System パターンがあります。 |
重要なパターン
axiom-spritekit:
- 明示的なビットマスクを使った PhysicsCategory 構造体(デフォルトの
0xFFFFFFFFは誤検出の衝突を引き起こします) - ビューポートと HUD を分離するカメラノードパターン
- SKShapeNode をテクスチャに事前レンダリングする変換
- すべての
SKAction.runクロージャで[weak self]を使用 - スパイラル・オブ・デスをクランプするデルタタイム
axiom-spritekit-ref:
- ノードタイプの完全な一覧表(バッチ処理時の動作を含む 16 種類)
- 物理ボディの作成方法(円が最も低コスト、テクスチャが最も高コスト)
- 合成パターンを含むアクションの完全な一覧
- SKView のデバッグオーバーレイとスケールモードの一覧表
axiom-spritekit-diag:
- 5 ステップのビットマスクチェックリスト(推測に 30~120 分かける代わりに 2 分)
- 最初の診断手順として必須のデバッグオーバーレイ
- トンネリング防止のフローチャート
showsNodeCountの推移によるメモリ増加の診断
axiom-scenekit:
- 移行の判断ツリー(新規プロジェクト → RealityKit、既存プロジェクト → 維持または移行)
- 移行前の USDZ アセット変換(
xcrun scntool) - SceneView の非推奨化と SCNViewRepresentable による置き換え
- 「とりあえず SceneKit を使う」という合理化への反証となるシナリオ
axiom-scenekit-ref:
- SceneKit から RealityKit への概念対応表
- すべてのマテリアルのライティングモデルとプロパティ
- 制約の完全な一覧
axiom-realitykit:
- ECS への考え方の切り替えをまとめた表(シーングラフの考え方 → ECS の考え方)
- カスタムコンポーネントの登録(
registerComponent()) - コンポーネント更新の読み取り・変更・書き込みパターン
- すべてのインタラクションで必須となる CollisionComponent
- タイマーの代わりにシステムベースで更新
axiom-realitykit-ref:
- すべてのプロパティを含むコンポーネントの完全な一覧
- MeshResource のジェネレーターと ShapeResource の種類
- シーンイベントの一覧
- すべての PBR プロパティを含むマテリアルシステム
axiom-realitykit-diag:
- エンティティの可視性チェックリスト(8 つの分岐、推測に 30~60 分かける代わりに 2~5 分)
- ジェスチャのデバッグ(まず CollisionComponent を確認)
- パフォーマンス診断(エンティティ数、リソース共有、コンポーネントの頻繁な変更)
- 物理演算の制約:エンティティは同じアンカーを共有する必要があります
呼び出し例
ユーザー:「SpriteKit のゲームを作っています」
→ 呼び出し:/skill axiom-spritekit
ユーザー:「物理接触が発生しません」
→ 呼び出し:/skill axiom-spritekit-diag
ユーザー:「テクスチャから物理ボディを作成するにはどうすればよいですか?」
→ 呼び出し:/skill axiom-spritekit-ref
ユーザー:「ゲームのフレームレートが低下しています」
→ 呼び出し:/skill axiom-spritekit-diag
ユーザー:「SpriteKit を SwiftUI で設定するにはどうすればよいですか?」
→ 呼び出し:/skill axiom-spritekit
ユーザー:「どのようなアクションタイプを使用できますか?」
→ 呼び出し:/skill axiom-spritekit-ref
ユーザー:「オブジェクトが壁をすり抜けます」
→ 呼び出し:/skill axiom-spritekit-diag
ユーザー:「3D ゲームを作りたいです」
→ 呼び出し:/skill axiom-realitykit
ユーザー:「SwiftUI アプリに 3D モデルを追加するにはどうすればよいですか?」
→ 呼び出し:/skill axiom-realitykit
ユーザー:「RealityKit のエンティティが表示されません」
→ 呼び出し:/skill axiom-realitykit-diag
ユーザー:「RealityKit で物理演算を設定するにはどうすればよいですか?」
→ 呼び出し:/skill axiom-realitykit-ref
ユーザー:「SceneKit から RealityKit に移行しています」
→ 呼び出し:/skill axiom-scenekit + /skill axiom-scenekit-ref
ユーザー:「SCNNode に相当する RealityKit の機能は何ですか?」
→ 呼び出し:/skill axiom-scenekit-ref
ユーザー:「新しい 3D プロジェクトに SceneKit を使うべきですか?」
→ 呼び出し:/skill axiom-scenekit
ユーザー:「RealityKit のエンティティでタップジェスチャが機能しません」
→ 呼び出し:/skill axiom-realitykit-diag
ユーザー:「RealityKit で ECS を設定するにはどうすればよいですか?」
→ 呼び出し:/skill axiom-realitykit
ユーザー:「AR コンテンツがトラッキングされません」
→ 呼び出し:/skill axiom-realitykit-diag
ユーザー:「RealityKit ではどのようなマテリアルを使用できますか?」
→ 呼び出し:/skill axiom-realitykit-ref
ユーザー:「RealityKit でエンティティをアニメーションさせるにはどうすればよいですか?」
→ 呼び出し:/skill axiom-realitykit-ref
ユーザー:「ゲームプレイ中にメモリ使用量が増え続けます」
→ 呼び出し:/skill axiom-spritekit-diag
ユーザー:「炎にはどのようなパーティクルエミッター設定を使うべきですか?」
→ 呼び出し:/skill axiom-spritekit-ref
ユーザー:「SpriteKit のコードをスキャンして、よくある問題がないか確認してもらえますか?」
→ 呼び出し:spritekit-auditor エージェント