# MacMedic 🩺 - Xcodeプロジェクトセットアップガイド

## プロジェクト構成

```
MacMedic/
├── MacMedic/
│   ├── MacMedicApp.swift          # @main エントリポイント
│   ├── Models/
│   │   └── AppState.swift         # グローバル状態 + SidebarSection enum
│   ├── Services/
│   │   ├── AuthorizationManager.swift  # sudo権限管理
│   │   └── Shell.swift            # シェルコマンド実行ヘルパー
│   ├── Views/
│   │   ├── ContentView.swift      # サイドバー + ナビゲーション
│   │   ├── UninstallerView.swift  # アンインストーラー
│   │   ├── CacheView.swift        # キャッシュ削除
│   │   ├── InstallerView.swift    # macOSインストーラー + USB作成
│   │   ├── BackupView.swift       # Time Machine / カスタムバックアップ
│   │   ├── StartupItemsView.swift # 起動項目管理
│   │   ├── StorageView.swift      # ストレージ分析
│   │   ├── NetworkView.swift      # ネットワーク診断
│   │   └── SysInfoView.swift      # システム情報
│   └── Resources/
│       └── Info.plist
```

## Xcodeでの新規プロジェクト作成手順

### 1. プロジェクト作成
- Xcode 26 を起動
- **File > New > Project** → **macOS > App**
- Product Name: `MacMedic`
- Team: 自分のApple ID（無料でもOK）
- Bundle Identifier: `com.yourname.MacMedic`
- Interface: **SwiftUI**
- Language: **Swift**
- ✅ **Include Tests は外してOK**

### 2. ファイル配置
このフォルダの内容をXcodeプロジェクトにドラッグ＆ドロップ：
- `MacMedic/` フォルダ以下のすべての `.swift` ファイル
- `Resources/Info.plist` で既存のInfo.plistを置き換える

### 3. Xcodeのプロジェクト設定
**TARGETS > MacMedic > General:**
- Minimum Deployments: **macOS 15.0** 以上（Tahoeならそのまま）

**TARGETS > MacMedic > Signing & Capabilities:**
- **+ Capability** から以下を追加：
  - `App Sandbox` → ❌ **OFF にする**（メンテナンスツールなのでSandbox不要）
  - `Hardened Runtime` → ✅ ON
  - `com.apple.security.temporary-exception.files.absolute-path.read-write` → `/` を追加

> ⚠️ **Sandboxをオフにする理由:** アンインストーラー・キャッシュ削除・USB作成などで
> システム全域へのアクセスが必要なため。

### 4. Entitlements
自動生成される `MacMedic.entitlements` を確認：
```xml
<key>com.apple.security.app-sandbox</key>
<false/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
```

### 5. ビルド & 実行
- **Cmd + B** でビルド
- **Cmd + R** で実行
- 初回起動時にシステムダイアログが出て管理者パスワードを求められる → OK！

## 機能一覧

| 機能 | 説明 |
|------|------|
| 🗑 アンインストーラー | アプリ本体 + Library配下の残存ファイルを完全削除 |
| 🧹 キャッシュ削除 | ユーザー・システム・Xcode・ブラウザ・ログ・一時ファイルを選択削除 |
| 💿 macOSインストーラー | `softwareupdate` でフルインストーラーDL + `createinstallmedia` でUSB作成 |
| 💾 バックアップ | Time Machine即時開始 / tar.gzカスタムバックアップ（除外パス設定可） |
| ⚡ 起動項目管理 | Login Items / LaunchAgent / LaunchDaemon の有効・無効切替 |
| 📊 ストレージ分析 | カテゴリ別使用量 + 大きなファイル (>100MB) 一覧 |
| 🌐 ネットワーク診断 | IP確認 / DNS フラッシュ / Wi-Fi再接続 / Ping / 速度テスト |
| ℹ️ システム情報 | OS・CPU・メモリ・GPU・温度・バッテリー・開発ツール情報 + レポート保存 |

## 今後の拡張アイデア
- [ ] SMJobBless で XPC ヘルパー化（`AuthorizationExecuteWithPrivileges` の代替）
- [ ] 重複ファイル検出
- [ ] Homebrew 一括アップデート UI
- [ ] メモリ解放（`purge` コマンド）
- [ ] SIP ステータス表示
