Genesis アーキテクチャ

概要

Swift / SwiftUI で実装した iOS アプリ。ARKit + RealityKit で拡張現実を実現し、MVVM パターンで画面ロジックを管理する。

画面構成

GenesisApp
└── TitleView(タイトル画面)
    ├── DriveView(AR 操作画面)
    │   ├── ARViewContainer(ARKit ラッパー)
    │   ├── Joystick(操作スティック)
    │   ├── SpeedMeter(速度メーター)
    │   └── SteeringIndicator(ステアリング表示)
    ├── CarSelectionView(車種選択画面)
    └── SettingsView(設定画面)

ファイル構成

ios/Genesis/
├── GenesisApp.swift              # アプリエントリーポイント
├── AppSettings.swift             # 設定管理(シングルトン)
├── CarModel.swift                # 車モデルの定義
├── classicCar.usdz               # 3D モデル(Blender 製 USDC を usdzip で再パッケージ)
├── Assets.xcassets/
│   ├── AppIcon.appiconset/
│   └── AR Resources.arresourcegroup/  # 画像認識用リファレンス画像
└── Screen/
    ├── Title/
    │   ├── TitleView.swift
    │   └── TitleViewModel.swift
    ├── Drive/
    │   ├── DriveView.swift
    │   ├── DriveViewModel.swift
    │   ├── ARViewContainer.swift  # UIViewRepresentable で ARView をラップ
    │   ├── Joystick.swift
    │   ├── SpeedMeter.swift
    │   └── SteeringIndicator.swift
    ├── CarSelection/
    │   └── CarSelectionView.swift
    └── Settings/
        └── SettingsView.swift

アーキテクチャパターン

MVVM(Model - View - ViewModel)

役割クラス / ファイル
ModelCarModel, AppSettings
View*View.swift, ARViewContainer.swift
ViewModelTitleViewModel, DriveViewModel

主要コンポーネント

AppSettings

CarModel

ARViewContainer

Joystick

技術スタック

項目内容
言語Swift 5.9+
UI フレームワークSwiftUI
AR フレームワークARKit + RealityKit
3D モデル形式USDZ
設定永続化UserDefaults
最小サポート OSiOS 26.2(ARKit 必須のため実機のみ)
ビルドXcode(ios/Genesis.xcodeproj