diff --git a/CLAUDE.md b/CLAUDE.md index cd88dc0..660f71d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ ## 開発進捗 -最新: /setup フェーズ 2(技術選定)まで完了.次はフェーズ 3(環境構築) +最新: /setup フェーズ 3(環境構築)まで完了.次はフェーズ 4(仕様設計) ※ 本欄は**最新ステップ 1 行のみ上書き更新**.詳細な進捗履歴(動機・設計判断・失敗パターン)は [docs/PROGRESS.md](docs/PROGRESS.md) に追記する.運用ルールは `.claude/rules/progress-log.md` を参照(該当ファイル編集時に自動ロードされる). ## 必須ルール(コード実装時) diff --git "a/docs/02_ENV/ENV_02_\347\222\260\345\242\203\346\247\213\347\257\211\346\211\213\351\240\206.md" "b/docs/02_ENV/ENV_02_\347\222\260\345\242\203\346\247\213\347\257\211\346\211\213\351\240\206.md" new file mode 100644 index 0000000..c4a2a08 --- /dev/null +++ "b/docs/02_ENV/ENV_02_\347\222\260\345\242\203\346\247\213\347\257\211\346\211\213\351\240\206.md" @@ -0,0 +1,55 @@ +# 環境構築手順 (Environment Setup) + +新しいデバイスで開発を始める・環境を作り直すときの手順.**どのデバイスでも clone から数分で開発再開できる**ことを目標とし,環境の定義(Python バージョン・依存パッケージ)はすべてリポジトリ内(`pyproject.toml` / `uv.lock`)で管理する. + +## 前提ツールのインストール (Prerequisites) + +デバイスに必要なのは以下の 3 ツールのみ.Python 本体は不要(uv がリポジトリ指定のバージョンを自動取得する). + +### Windows + +```powershell +winget install Git.Git GitHub.cli astral-sh.uv +``` + +### macOS + +```bash +brew install git gh uv +``` + +インストール確認: `git --version` / `gh --version` / `uv --version` + +## セットアップ手順 (Steps) + +OS を問わず同一の手順. + +```bash +# 1. GitHub 認証(初回のみ.ブラウザが開く) +gh auth login + +# 2. リポジトリを取得 +gh repo clone <オーナー名>/TIASjudge +cd TIASjudge + +# 3. 依存パッケージを同期(Python 3.12 も自動取得される) +uv sync + +# 4. 動作確認 +uv run pytest +``` + +以上で完了.アプリの起動やテスト等の日常コマンドは `ENV_04_開発コマンド.md` を参照する. + +## 環境再現性のルール (Reproducibility Rules) + +どのデバイスでも同じ環境になることを守るため,以下を徹底する. + +- 依存パッケージの追加は必ず `uv add <パッケージ>` で行い,`pyproject.toml` と `uv.lock` の変更をコミットする(`pip install` を直接使わない) +- コード・設定に**デバイス固有の絶対パスを書かない**(旧実装で `C:\opencv-2.4.13.6` 直書きにより再現性が失われた反省による) +- OS 依存の処理(パス区切り・フォント等)を避け,Windows / macOS 両方で動く書き方をする + +## 補足 (Notes) + +- エディタは任意.VS Code を使う場合は Python + Ruff 拡張を推奨 +- 旧実装(`org/`)は Git 管理外.参照したい場合は管理者からバックアップを受け取り,リポジトリ直下に `org/` として配置する(無くても開発は可能) diff --git "a/docs/02_ENV/ENV_03_\347\256\241\347\220\206\350\200\205\347\224\250\347\222\260\345\242\203\346\247\213\347\257\211\346\211\213\351\240\206.md" "b/docs/02_ENV/ENV_03_\347\256\241\347\220\206\350\200\205\347\224\250\347\222\260\345\242\203\346\247\213\347\257\211\346\211\213\351\240\206.md" new file mode 100644 index 0000000..bdea8ef --- /dev/null +++ "b/docs/02_ENV/ENV_03_\347\256\241\347\220\206\350\200\205\347\224\250\347\222\260\345\242\203\346\247\213\347\257\211\346\211\213\351\240\206.md" @@ -0,0 +1,27 @@ +# 管理者用環境構築手順 (Admin Setup) + +プロジェクト作成時に一度だけ行う初期設定. + +## GitHub リポジトリの作成 (Repository Setup) + +どのデバイスからでも clone できるよう,リポジトリを GitHub に置く. + +```bash +# 1. GitHub にリポジトリを作成し,ローカルと紐付けてプッシュ +gh repo create TIASjudge --private --source=. --push + +# 2. main ブランチの作成(初回コミットが作業ブランチにある場合) +# PR を作成して main へマージするか,以下でローカルマージする +git checkout -b main +git merge chore/project-setup +git push -u origin main +``` + +## ブランチ保護(任意)(Branch Protection) + +main への直接プッシュを防ぐ場合,GitHub の Settings → Branches で main に保護ルール(PR 必須化)を設定する. + +## 旧実装データの保管 (Legacy Source) + +- `org/`(旧実装一式)は Git 管理外のため,紛失しないよう別途バックアップを保管する(クラウドストレージ等).新デバイスで参照したい場合はそこから取得する +- 特に `data.csv`(医師評価データ)と変換行列 CSV は診断機能の動作に必須.新実装ではリポジトリ内の `data/` に移して Git 管理する予定(フェーズ 4 で設計) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index e9debcb..2ce9969 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -13,3 +13,4 @@ - [x] **/setup フェーズ 1〜2 完了(要件定義・技術選定)**: 旧実装 `org/src`(C++ / MFC / OpenCV 2.4)を解析し,同一機能の再構築を目的として PLAN_01・ENV_01 を作成.開発モードは solo. - 設計判断: 技術スタックは Python + PySide6 + opencv-python を採用.MFC 継続・C# 案は Mac 対応の可能性が無いため却下(ユーザー要件: 当面 Windows,将来 Mac も視野).SVM は現行と同じ OpenCV 実装(`cv2.ml.SVM`)を使い診断結果の同一性を担保する方針 - 旧実装は `org/` に置き参照専用とする(.gitignore で Git 管理外) +- [x] **/setup フェーズ 3 完了(環境構築)**: ENV_02(メンバー用)・ENV_03(管理者用)を作成.「どのデバイスでも clone → uv sync で開発再開できる」を方針とし,環境定義は pyproject.toml / uv.lock でリポジトリ内に持たせる(デバイス側は git / gh / uv のみ).ENV_04(開発コマンド)は pyproject 作成時に確定させるため後回し.GitHub リポジトリ作成はユーザー実施待ち(ENV_03 参照)