# 管理者用環境構築手順 (Admin Setup Guide)

プロジェクト作成時に一度だけ行う初期設定．管理者が実施する．

## GitHub リポジトリの作成 (Create GitHub Repository)

```bash
gh repo create SmTIAS-Capture --private
```

※ GitHub CLI（`gh`）が未認証の場合は `gh auth login` を先に実行する．

## Dependabot の有効化 (Enable Dependabot)

**Dependabot alerts**（依存パッケージの既知脆弱性の検出）と **Dependabot security updates**（脆弱性を直す PR の自動作成）は，GitHub のリポジトリごとに**既定で OFF** になっている．有効化しないと脆弱性が一切通知されないため，リポジトリ作成直後に有効化する．

実行にはリポジトリの admin 権限が必要（無い場合は 403 になるので管理者に依頼する）．リポジトリの clone 内で実行すれば `{owner}/{repo}` は `gh` が自動補完する．

```bash
gh api -X PUT repos/rintoHasegawa/SmTIAS-Capture/vulnerability-alerts      # alerts（依存グラフも同時に有効化される）
gh api -X PUT repos/rintoHasegawa/SmTIAS-Capture/automated-security-fixes  # security updates
```

有効化を検証する（冪等なコマンドなので再実行してよい）．

```bash
gh api repos/rintoHasegawa/SmTIAS-Capture/vulnerability-alerts       # 204 なら有効．404 なら無効
gh api repos/rintoHasegawa/SmTIAS-Capture/automated-security-fixes   # {"enabled":true,...} なら有効
```

※ 上記はリポジトリ設定であり，リポジトリ内の `.github/dependabot.yml`（依存バージョンの定期更新 PR の設定）とは別物．両者は独立して動く．Dependabot が作った PR と alert の処理には `/deps-update` を使う．

## セットアップスクリプトの作成 (Create Setup Script)

メンバーが環境を構築する際に使用するスクリプトを作成し，リポジトリに含める．

### ディレクトリ構成

```text
SmTIAS-Capture/
├── scripts/
│   └── setup.ps1
```

### `scripts/setup.ps1`

セットアップスクリプト本体は `scripts/setup.ps1` にコミット済み．二重管理による乖離を避けるため，本書にはコード全文を載せない（変更はスクリプト側を正とする）．スクリプトは以下を自動実行する．

- Scoop の `extras` バケット追加
- Flutter SDK（`scoop install flutter`）
- Android Studio（`scoop install extras/android-studio`）
- GitHub CLI（`scoop install gh`）

実行後の次手順（Android Studio セットアップウィザード → `flutter doctor --android-licenses` → `flutter doctor` → `gh auth login`）はスクリプト末尾にも表示される．詳細は [ENV_02_環境構築手順.md](ENV_02_環境構築手順.md) を参照．

## VS Code 設定ファイルの作成 (Create VS Code Config)

### `.vscode/extensions.json`

推奨拡張機能を定義する．

```json
{
  "recommendations": [
    "Dart-Code.flutter",
    "Dart-Code.dart-code"
  ]
}
```

### `.vscode/settings.json`

プロジェクト固有の設定を定義する．

```json
{
  "editor.formatOnSave": true,
  "dart.flutterSdkPath": null,
  "[dart]": {
    "editor.defaultFormatter": "Dart-Code.dart-code",
    "editor.rulers": [80]
  }
}
```

## `.gitignore` の作成 (Create .gitignore)

Flutter プロジェクト作成時（`flutter create`）に自動生成されるが，必要に応じて以下を追加する．

- `.env` — 環境変数（機密情報）
- `*.jks` — Android 署名キー

## Flutter プロジェクトの作成 (Create Flutter Project)

```bash
flutter create --org com.example smtias_capture
```

※ パッケージ名・組織名は正式に決定してから実行する．

## チェックリスト (Checklist)

管理者は以下をすべて完了させてからメンバーに展開する．

- [ ] GitHub リポジトリの作成（private）
- [ ] Dependabot alerts / security updates の有効化
- [ ] `scripts/setup.ps1` の作成・動作確認
- [ ] `.vscode/extensions.json` の作成
- [ ] `.vscode/settings.json` の作成
- [ ] `.gitignore` の確認
- [ ] Flutter プロジェクトの作成（`flutter create`）
- [ ] 初回コミット・プッシュ
- [ ] メンバーにリポジトリへのアクセス権を付与
