UWBViewerSystemは、UWB(Ultra-Wideband)技術を活用した位置測定・センシングシステムのiOS/macOSアプリケーションです。AndroidデバイスとのBluetooth連携により、リアルタイムな位置測定とデータ可視化を実現します。
- リアルタイム位置測定: UWBセンサーによる高精度な位置測定
- データ可視化: 取得したセンサーデータのリアルタイム表示
- セッション管理: センシングセッションの記録と履歴管理
- 軌跡表示: 移動経路の可視化とトラッキング
- Bluetooth接続: Android端末との無線通信
- デバイスペアリング: アンテナとAndroidデバイスの紐付け管理
- ファイル転送: 測定データの送受信機能
- 接続状態監視: デバイス接続の状態管理と自動復旧
- アンテナ設定: 3D空間でのアンテナ位置・向きの設定
- フロアマップ設定: 測定環境のマップ登録と管理
- システムキャリブレーション: 測定精度向上のための校正機能
- iOS: 17.0以降
- macOS: 14.0以降
- Swift: 5.9以降
- Xcode: 15.0以降
本プロジェクトはClean Architecture + MVVMパターンを採用しており、以下の層構造で設計されています:
UWBViewerSystem/
├── Domain/ # ビジネスロジック層
│ ├── Entity/ # エンティティクラス
│ ├── UseCase/ # ビジネスロジック
│ ├── Repository/ # データアクセス層の抽象化
│ └── DataModel/ # SwiftDataモデル
├── Presentation/ # UI層
│ ├── Scenes/ # 画面とViewModel
│ ├── Router/ # 画面遷移管理
│ └── Common/ # 共通コンポーネント
└── Devices/ # 外部デバイス連携
└── NearByConnection/ # Bluetooth通信
- UI: SwiftUI
- データ永続化: SwiftData (iOS 17+)
- 通信: Google Nearby Connections
- アーキテクチャ: Clean Architecture + MVVM
- DI: Dependency Injection パターン
- テスト: Swift Testing Framework
git clone <repository-url>
cd UWBViewerSystem# Swift Package Manager の依存関係を解決
swift package resolve# SwiftFormat のインストール(Homebrew)
brew install swift-format
# pre-push hook の設定(既に設定済み)
# .git/hooks/pre-push に自動フォーマット設定済み# コマンドラインでのビルド
swift build
# または Xcode でプロジェクトを開く
open UWBViewerSystem.xcodeprojアプリケーションは以下の段階的なフローでセンシングを実行します:
- フロアマップ設定 → 測定環境の設定
- アンテナ設定 → UWBアンテナの位置・向き調整
- デバイスペアリング → Android端末とのペアリング
- システムキャリブレーション → 測定精度の校正
- センシング実行 → データ収集と記録
- データ閲覧 → 結果の可視化と分析
- センシングセッション: 測定セッションの記録
- アンテナ位置データ: 3D空間でのアンテナ配置情報
- ペアリング情報: デバイスとアンテナの関連付け
- リアルタイムデータ: 測定中に取得される位置データ
- 受信ファイル: Android端末から転送されるファイル
- システム活動履歴: アプリケーションの操作ログ
初回起動時に UserDefaults から SwiftData への自動データ移行を実行
# ユニットテストの実行
swift test
# 特定のテストの実行
swift test --filter "SwiftDataRepositoryTests"- SwiftDataRepository の CRUD 操作
- ViewModel のビジネスロジック
- UseCase 層の処理フロー
- データ変換と検証ロジック
- SwiftFormat: コードスタイルの統一
- Pre-push Hook: プッシュ前の自動フォーマット実行
- .swift-format: プロジェクト固有の設定ファイル
- 行長制限: 120文字
- インデント: スペース4文字
- アクセス修飾子: 適切なカプセル化
- 命名規則: Swift標準に準拠
- Entity層: 必要なデータ構造を定義
- UseCase層: ビジネスロジックを実装
- Repository層: データアクセス処理を実装
- ViewModel: UI用のデータ変換を実装
- View: SwiftUIでのUI実装
- テスト: 各層の動作を検証
- コードフォーマットの確認
- ユニットテストの追加と実行
- アーキテクチャ原則の遵守
- 適切なコミットメッセージ
# 依存関係の再解決
swift package clean
swift package resolve
# SwiftData のスキーマ変更時
# アプリを削除してクリーンインストール- Bluetooth権限の確認
- Android端末のDiscovery設定
- ネットワーク環境の確認
- リアルタイムデータの更新頻度調整
- メモリリークの確認
- バックグラウンド処理の最適化
プロジェクトへの貢献を歓迎します:
- Issues での問題報告
- Feature Request での機能提案
- Pull Request での改善提案
- ドキュメントの改善
このプロジェクトは [ライセンス] の下で公開されています。
- SwiftData による完全なデータ永続化システム
- 新しいセンシングフローの実装
- DI パターンの導入とアーキテクチャ改善
- 未使用画面の整理とUI改善
- 自動データ移行機能
- コード品質ツールの統合
- 基本的なUWB測定機能
- Android連携機能
- リアルタイムデータ表示
注意: 本アプリケーションを使用する前に、使用環境でのUWB技術の規制や制限を確認してください。
ここにファイルがあります SwiftDataのパス:
open ~/Library/Containers/net.harutiro.UWBViewerSystem/Data/Library/Application\ Support/net.harutiro.UWBViewerSystem/ファイル構成:
- SwiftData.sqlite - メインのデータベースファイル (172KB)
- SwiftData.sqlite-shm - 共有メモリファイル (32KB)
- SwiftData.sqlite-wal - Write-Ahead Logファイル (3.4MB)