Skip to content

Instantly share code, notes, and snippets.

@CH3COOH
Last active June 22, 2025 01:30
Show Gist options
  • Save CH3COOH/d25fe978eb8f5e58c3e26b880f402f32 to your computer and use it in GitHub Desktop.
Save CH3COOH/d25fe978eb8f5e58c3e26b880f402f32 to your computer and use it in GitHub Desktop.
NSEasyConnect の CLAUDE.md

CLAUDE.md

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

Fastlane

# アプリスクリーンショット生成・アップロード
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

主要コンポーネント

UI層

  • 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ビルドスクリプト
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment