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

プロジェクト作成時に**一度だけ**行う初期設定．

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

Private リポジトリとして作成する（臨床データは含めないが，研究途中のコードを公開しないため）．2026-10-02 時点で作成済み．

```bash
gh repo create rintoHasegawa/TIASDataHub --private --source=. --remote=origin \
  --description "舌診研究のデータを研究室 PC で一元管理する共有データ基盤"
```

## リポジトリのセキュリティ設定 (Repository Security Settings)

Dependabot alerts（脆弱性検出）と Dependabot security updates は**リポジトリごとに既定で OFF** なので，作成直後に有効化する（冪等なので再実行してよい）．2026-10-02 に実施し，検証済み．

```bash
gh api -X PUT repos/rintoHasegawa/TIASDataHub/vulnerability-alerts
gh api -X PUT repos/rintoHasegawa/TIASDataHub/automated-security-fixes
```

検証:

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

※ 依存バージョンの定期更新は `.github/dependabot.yml` で設定する（`uv`・`github-actions`．リポジトリ設定とは独立に動く）．

## 研究室 PC のツール導入 (Lab PC Tools)

2026-10-02 に手元 PC から SSH（`ssh labpc`）で実施．研究室 PC には `git` はあったが，`uv`・`gh` は無く，`python` は Microsoft Store の案内用スタブだけだった．

```powershell
powershell -NoProfile -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
C:\Users\Papin\.local\bin\uv.exe python install 3.12
```

- uv 0.12.22・Python 3.12.15 がユーザー領域（`C:\Users\Papin\.local\bin`・`C:\Users\Papin\AppData\Roaming\uv\python\`）に入った．管理者権限は不要
- `gh` は入れない（研究室 PC では編集・コミットしない）

## 研究室 PC のデプロイキー (Lab PC Deploy Key)

研究室 PC が GitHub（Private）から取得するため，このリポジトリ専用の**読み取り専用のデプロイキー**を使う（個人のアカウントの認証情報を研究室 PC に置かないため）．2026-10-02 に手元 PC から SSH で実施．

1. 研究室 PC で鍵を作る（パスフレーズなし）

   ```bash
   ssh -n labpc 'ssh-keygen -q -t ed25519 -f C:\Users\Papin\.ssh\id_ed25519_tiasdatahub -N "" -C papin-DESKTOP-1QLOO91-TIASDataHub-deploy'
   ```

2. 公開鍵をデプロイキーとして登録する（手元 PC の `gh`．既定で読み取り専用）

   ```bash
   ssh -n labpc 'type C:\Users\Papin\.ssh\id_ed25519_tiasdatahub.pub' > labpc_deploy.pub
   gh repo deploy-key add labpc_deploy.pub --repo rintoHasegawa/TIASDataHub --title "labpc DESKTOP-1QLOO91 (read-only)"
   ```

3. 研究室 PC の `C:\Users\Papin\.ssh\config` に別名を追加する

   ```text
   Host github-tiasdatahub
       HostName github.com
       User git
       IdentityFile C:/Users/Papin/.ssh/id_ed25519_tiasdatahub
       IdentitiesOnly yes
   ```

4. 接続を確かめる．初回は GitHub のホスト鍵を受け入れる（指紋が GitHub の公開値 `SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU`（ED25519）と一致することを `ssh-keygen -lF github.com` で確認した）

   ```bash
   ssh -n labpc "ssh -o StrictHostKeyChecking=accept-new -T github-tiasdatahub"
   ssh -n labpc "git ls-remote git@github-tiasdatahub:rintoHasegawa/TIASDataHub.git"
   ```

- 別名を鍵ごとに分けているのは，GitHub のデプロイキーが 1 つのリポジトリにしか登録できないため（他のリポジトリを研究室 PC に置く場合は，そのリポジトリ用の鍵と別名を同様に作る）
- 鍵を作り直したら，GitHub の Settings → Deploy keys から古い鍵を削除する

## 研究室 PC への配置 (Lab PC Deployment)

立ち上げの成果物を `main` に取り込んだ後に行う．手順は [ENV_02「研究室 PC のセットアップ」](ENV_02_環境構築手順.md)．

- ※ 未検証（2026-10-02 時点で `main` は初期コミットのみ）

## Claude のアクセス制限 (Claude Access Restriction)

Claude にデータの中身を読ませないため，`.claude/repo-access.json` の `deny_read` にデータの置き場所を書く．研究室 PC は手元 PC から SSH で操作するため（[ENV_02「研究室 PC の操作方針」](ENV_02_環境構築手順.md)），このフックが効くのは手元 PC のパスと，コマンド文字列に現れたパスだけである．SSH の先での読み取りは，CLI の出力規則と「SSH でデータの中身を表示しない」運用で防ぐ．

```json
{
  "deny_read": [
    "C:/Users/Papin/clinical-data",
    "data",
    "exports"
  ]
}
```

- 目録の DB ファイル・データ置き場・manifest の出力先を仕様設計で決めたら，リポジトリの外に置く場所もここに追加する

## 人間が確認すべき事項 (Human Checklist)

Claude は実施できない．

- 倫理審査で定められた臨床データの保管ルール（保管場所・アクセスできる人の範囲・保管期間・計算サーバへのコピーの可否）
- 目録の DB ファイルのバックアップ方法（仕様設計で決める．バックアップ先も OneDrive の同期対象外にする）
