This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
NSEasyConnectは、Nintendo Switchの「スマートフォンへ送る」機能を使って、スクリーンショットやプレイ動画をiPhoneに取り込んだり、SNSへ共有したりするためのiOSアプリです。
# プロジェクトのビルド
xcodebuild -scheme NSEasyConnect -configuration Debug build
# リリースビルド
xcodebuild -scheme NSEasyConnect -configuration Release build
# テスト実行
xcodebuild test -scheme NSEasyConnect -destination 'platform=iOS Simulator,name=iPhone 15'
# テストプランを使用したテスト
xcodebuild test -testPlan NSEasyConnect
# 依存関係のインストール
bundle install
# セキュアキーの生成(環境変数が必要)
bundle exec arkana
# コードフォーマット
swift run --package-path BuildTools swiftformat .
# ライセンス情報の生成
license-plist --config-path license_plist.yml
# アプリスクリーンショット生成・アップロード
bundle exec fastlane ios screenshots
# App Storeメタデータアップロード
bundle exec fastlane ios metadata
- MVVM + Clean Architecture: UI層、ビジネスロジック層、データ層の明確な分離
- SwiftUI + UIKit ハイブリッド: SwiftUIをメインとし、複雑なナビゲーションでUIKitを併用
- Use Case パターン: ビジネスロジックをUse Caseクラスに集約
- Repository パターン: データアクセスの抽象化(Core Data、Firebase Firestore、UserDefaults)
UI (SwiftUI Views) → ViewModels → Use Cases → Repositories → Storage
Screen/
- 機能別のスクリーンとコンポーネントBaseViewModel
- 共通機能(エラーハンドリング、ローディング状態、Use Case実行)AppState
- グローバル状態管理(サブスクリプション状態、設定、バッジ)
UseCase/
- 機能別のUse Case(UseCaseProtocolを実装)- 非同期処理にasync/awaitパターンを使用
- Result型によるエラーハンドリング
Repository/
- プロトコルベースのリポジトリパターンDatabase/
- Core DataエンティティとコントローラーModel/
- ドメインモデル(Sendable準拠)
- プロトコルベースの手動依存性注入
- Providerパターンで外部サービスを抽象化
- Repository → Use Case → ViewModel の階層で注入
- Firebase: Analytics、Crashlytics、Firestore、Authentication
- RevenueCat: サブスクリプション管理
- Nintendo Switch: カスタムネットワーキングによる写真・動画転送
- Core Data: ローカルデータ永続化
- コアモデルに多言語サポートを組み込み
- String(localized:)パターンでローカライズ文字列
- 地域固有のコンテンツと機能
- Arkanaを使用してAPIキーを安全に管理
- GoogleService-Info.plistはCI/CDで注入
- 機密情報をコードにハードコードしない
- SwiftFormatを使用したコードフォーマット
- プロトコルベース設計によるテスト容易性
- 包括的なテストカバレッジ(リポジトリとUse Case)
- @MainActorアノテーションでUIアップデートを適切に処理
- Sendableプロトコル準拠でスレッドセーフティを確保
- 画像・動画処理の最適化
PhotoConnect/
- メインアプリケーションコードNSEasyConnectTests/
- テストコードBuildTools/
- 開発ツール(SwiftFormat)ArkanaKeys/
- セキュアキー管理パッケージfastlane/
- CI/CDとApp Store管理ci_scripts/
- Xcode Cloudビルドスクリプト