# iOS開発環境セットアップ完全手順

## 📋 前提条件チェックリスト

### ハードウェア
- [ ] 2017 MacBook Air以降
- [ ] メモリ8GB以上
- [ ] ストレージ空き容量30GB以上

### ソフトウェア
- [ ] macOS Big Sur 11.x（2017 MacBook Air最大）
- [ ] Xcode 13.2.1（Big Sur最大対応）
- [ ] Flutter SDK 3.10.1以降

---

## Step 1: Flutter iOS toolchain確認（5分）

```bash
flutter doctor -v

# 期待される出力
[✓] Flutter (Channel stable, 3.10.1, on macOS Big Sur 11.x)
[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13C100
    • CocoaPods version 1.11.x

[✓] Android Studio (version 2023.x)
[!] iOS deploy (iOS 12.0 or higher required)
```

**トラブルシュート**:

```bash
# Xcodeが見つからない
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

# Xcode license未承認
sudo xcodebuild -license accept

# CocoaPods未インストール
sudo gem install cocoapods
```

---

## Step 2: iOSプロジェクトファイル生成（10分）

```bash
cd ~/posimai-project/ponshu_room_lite

# 既存ファイルを保持しつつiOSファイル生成
flutter create .

# 確認
ls -la ios/
# 期待: Runner.xcodeproj, Runner.xcworkspace, Podfile等が生成される
```

**注意**: 既存のAndroidファイルは影響を受けません

---

## Step 3: Podfile確認と設定（15分）

### 3-1. Podfile内容確認

```bash
cat ios/Podfile
```

### 3-2. プラットフォーム設定

```ruby
# ios/Podfile（自動生成後の確認）
platform :ios, '12.0'  # iOS 12.0以上対応（2017デバイス対応）

# CocoaPods 1.11.x用設定
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
    end
  end
end
```

### 3-3. 依存関係インストール

```bash
cd ios
pod install  # 初回は5-10分かかる

# 成功メッセージ
# Pod installation complete! There are X dependencies from the Podfile...

cd ..
```

**トラブルシュート**:

```bash
# エラー: CocoaPods could not find compatible versions
pod repo update  # Podリポジトリ更新（10-15分）
pod install

# エラー: ffi gem missing
sudo gem install ffi

# 2017 MacBook Airでメモリ不足
# 他のアプリケーションを終了してから再試行
```

---

## Step 4: Firebase iOS設定（30分）

### 4-1. Firebase Console設定

1. https://console.firebase.google.com/
2. プロジェクト「ponshu-room」選択
3. **プロジェクトの設定** → **全般**
4. **アプリを追加** → **iOS**

### 4-2. Bundle ID設定

```
Bundle ID: com.posimai.ponshu_room_lite
Apple App Nickname: Ponshu Room Lite
App Store ID: （後で設定）
```

### 4-3. GoogleService-Info.plist取得

1. Firebase Consoleから`GoogleService-Info.plist`をダウンロード
2. ファイル配置:
```bash
mv ~/Downloads/GoogleService-Info.plist ios/Runner/
```

3. 確認:
```bash
cat ios/Runner/GoogleService-Info.plist | grep BUNDLE_ID
# 期待: com.posimai.ponshu_room_lite
```


### 4-4. REVERSED_CLIENT_ID取得

```bash
cat ios/Runner/GoogleService-Info.plist | grep REVERSED_CLIENT_ID
# 出力例: <string>com.googleusercontent.apps.123456789-xxxx</string>
```

この値を次のステップで使用

---

## Step 5: Info.plist完全設定（20分）

```bash
open ios/Runner/Info.plist
# Xcode または テキストエディタで開く
```

### 5-1. 権限記述（既存確認 + 追加）

```xml
<!-- 既存（確認のみ） -->
<key>NSCameraUsageDescription</key>
<string>日本酒のラベルを撮影するためにカメラを使用します</string>

<key>NSPhotoLibraryAddUsageDescription</key>
<string>撮影した日本酒の写真をギャラリーに保存します</string>

<!-- 追加必須 -->
<key>NSPhotoLibraryUsageDescription</key>
<string>日本酒の写真をギャラリーから選択します</string>
```

### 5-2. Google Sign-In設定

```xml
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <!-- Step 4-4で取得したREVERSED_CLIENT_IDを貼り付け -->
      <string>com.googleusercontent.apps.123456789-xxxx</string>
    </array>
  </dict>
</array>
```

### 5-3. 設定確認

```bash
# NSPhotoLibraryUsageDescriptionが存在するか確認
grep -A 1 "NSPhotoLibraryUsageDescription" ios/Runner/Info.plist

# CFBundleURLSchemesが設定されているか確認
grep -A 5 "CFBundleURLTypes" ios/Runner/Info.plist
```

---

## Step 6: Xcodeでプロジェクトを開く（10分）

```bash
# 重要: .xcodeproj ではなく .xcworkspace を開く
open ios/Runner.xcworkspace
```

### 6-1. Signing設定

1. Xcode左ペイン → **Runner** 選択
2. **Signing & Capabilities** タブ
3. **Team**: Apple Developer Accountを選択
   - 未登録の場合: Add Account → Apple IDでサインイン

4. **Bundle Identifier**: `com.posimai.ponshu_room_lite`確認
5. **Automatically manage signing**: チェック

### 6-2. Deployment Target確認

1. **General** タブ
2. **Deployment Info** → **iOS 12.0** 確認

---

## Step 7: ビルドテスト（15分）

### 7-1. シミュレータ用ビルド

```bash
flutter build ios --debug

# 成功メッセージ
# Built build/ios/Release-iphoneos/Runner.app
```

### 7-2. Xcodeでシミュレータ起動

1. Xcode上部 → デバイス選択 → **iPhone 12 Pro（iOS 15.x）**
2. ▶ ボタンクリック
3. アプリが起動するか確認

---

## Step 8: 実機ビルド（Apple Developer Program必須）

### 8-1. Apple Developer Program登録（任意）

**無料版** (Personal Team):

- 有効期限: 7日間
- 実機1台まで
- App Store配布不可

**有料版** (年間99ドル):

- 有効期限: 1年間
- 実機100台まで
- App Store配布可能
- TestFlight配布可能

### 8-2. 実機接続

```bash
# 実機をUSB接続
flutter devices

# 出力例
# iPhone 13 Pro (mobile) • 00008030-XXXX • ios • iOS 16.1
```

### 8-3. 実機ビルド

```bash
flutter build ios --release
flutter install -d <device_id>

# または Xcodeから
# デバイス選択 → 実機選択 → ▶ ボタン
```

---

## Step 9: トラブルシューティング

### エラー1: Signing for "Runner" requires a development team

**原因**: Teamが未設定

**解決**: Xcode → Signing & Capabilities → Team選択

### エラー2: The operation couldn't be completed

**原因**: デバイスがロックされている

**解決**: iPhoneロック解除 → 「このコンピュータを信頼」

### エラー3: Module 'xxx' not found

**原因**: CocoaPods依存関係エラー

**解決**:

```bash
cd ios
rm -rf Pods Podfile.lock
pod install
cd ..
```

### エラー4: Xcode build failed - Could not find a bundle identifier

**原因**: GoogleService-Info.plist未配置

**解決**: Step 4-3を再確認

### エラー5: 2017 MacBook Airでメモリ不足

**対策**:

- 他のアプリケーションを終了
- Xcode再起動
- ターミナルで`sudo purge`（メモリ解放）
- Virtual Memory確保（10GB以上）

---

## 完了チェックリスト

- [ ] flutter doctor でiOS toolchain ✓
- [ ] CocoaPods依存関係インストール完了
- [ ] Firebase iOS設定完了
- [ ] Info.plist完全設定
- [ ] Xcodeでビルド成功（シミュレータ）
- [ ] 実機ビルド成功（任意）

---

## 次のステップ

`IOS_DEVICE_TEST_CHECKLIST.md`に従って実機テストを実施
