Newer
Older
TIASDataHub / docs / 02_ENV / ENV_02_環境構築手順.md

環境構築手順 (Environment Setup)

環境の再構築・別の PC での作業開始時に使う手順.プロジェクト作成時に一度だけ行う設定は ENV_03 にまとめる.

前提ツール (Prerequisites)

ツール用途備考
gitバージョン管理運用は .claude/rules/git-conventions.md
ghGitHub CLI手元 PC のみ.PR 作成・リポジトリ設定
uvPythttps://astral.sh/uv/install.ps1 | iex"(ユーザー領域%USERPROFILE%.local\binに入る.winget install astral-sh.uv` でもよい)
Python 3.12実行環境uv python install 3.12(uv が管理する..python-version で固定)
Python 3.7 以上 + bash.claude/hooks/ の実行手元 PC のみ(研究室 PC では Claude Code を使わない).Windows は Git for Windows 付属の bash.※ Python が見つからないとアクセス制限フックが全ツールをブロックする
OpenSSH研究室 PC の操作Windows 11 標準.SSH の別名 labpc(研究室 PC.Tailscale 経由)は SmTIAS-LightSim で構築済みのものを使う

場所ごとの役割 (Roles by Location)

場所役割臨床データ
手元 PC開発.ダミーデータでのテスト置かない
研究室 PC(DESKTOP-1QLOO91.SSH の別名 labpc)目録とデータ置き場を置き,CLI で登録・manifest の書き出しを行う原本
計算サーバ(Newton・Archimedes)使う側のリポジトリが学習・解析を行う.研究室 PC から manifest と作業用コピーを受け取る作業用コピー

手元 PC のセットアップ (Local Setup)

git clone https://github.com/rintoHasegawa/TIASDataHub.git
cd TIASDataHub
uv sync
uv run pytest
  • uv sync で .venv/ に依存(実行時は pydantic のみ.開発用に pytest・ruff・Pillow)が入る
  • 手元 PC には臨床データを置かない.テストはダミーデータ(テスト内で一時ディレクトリに作る)だけで動く

研究室 PC の操作方針 (Lab PC Operation Policy)

研究室 PC は手元 PC から SSH(ssh labpc)で操作する.研究室 PC の前で作業したり,研究室 PC で Claude Code を開いたりはしない(2026-10-02 のユーザー判断).

  • 研究室 PC は main を取り込んで CLI を実行するだけにし,研究室 PC では編集・コミットしない(変更は手元 PC で作業ブランチ → PR で main に入れる)
  • SSH 経由の操作は非対話で行う(パスワード入力・GUI が必要な操作は SSH ではできない)
  • SSH 経由でデータの中身を表示しない..claude/repo-access.json のフックは SSH の先のファイル読み取りまでは止められないため,データの確認は CLI の集計出力(件数・ハッシュの不一致・参照切れ等.患者 ID・ファイル名を含まない)で行う.type・Get-Content 等でデータ置き場・目録・対応表を直接読まない
  • データの置き場所は研究室 PC 上の設定ファイルから CLI が読む.SSH のコマンドにデータのパスを書かなくて済むようにする(仕様設計で決める)
  • 研究室 PC 側で人間が必要な作業: 新しいデータを研究室 PC に置くこと(USB 等で持ち込む場合),GUI でしか動かないプログラムの操作,研究室 PC の起動と Tailscale への接続の維持

研究室 PC のセットアップ (Lab PC Setup)

GitHub から取得する.研究室 PC には個人のアカウントの認証情報を置かず,このリポジトリ専用の読み取り専用のデプロイキー(SSH の別名 github-tiasdatahub)で取得する(設定は ENV_03「研究室 PC のデプロイキー」).手元 PC から次のように実行する(uv は非対話の SSH では PATH に入らないため絶対パスで呼ぶ).

ssh -n labpc "cd C:\Users\Papin\source && git clone git@github-tiasdatahub:rintoHasegawa/TIASDataHub.git"
ssh -n labpc "cd C:\Users\Papin\source\TIASDataHub && C:\Users\Papin\.local\bin\uv.exe sync --no-dev --extra import"

更新するとき(init は新しいマイグレーションがあれば適用する.無ければ何もしない):

ssh -n labpc "cd C:\Users\Papin\source\TIASDataHub && git pull && C:\Users\Papin\.local\bin\uv.exe sync --no-dev --extra import && C:\Users\Papin\.local\bin\uv.exe run --no-dev --extra import tiasdata init"
  • clone・uv sync・更新(git pull → uv sync → init)は 2026-10-09 に上記の手順で行い,確認済み
  • 研究室 PC からは取得しかできない(デプロイキーは読み取り専用).研究室 PC では編集・push しない(上記「操作方針」)
  • 置き場所は C:\Users\Papin\source\(OneDrive の同期対象外).ドキュメント・デスクトップ配下には置かない(研究室 PC ではドキュメントフォルダが OneDrive にリダイレクトされている)
  • 目録・ストア・対応表は E:\clinical-data\tiasdata\・tiasdata-identity\ に置き,場所は設定ファイル C:\Users\Papin\.config\tiasdata\config.toml に書く(配置と設定のキーは SPEC_01「配置」「設定ファイル」).設定ファイルは 2026-10-09 に作成済み(取り込み元 tiasjudgemodel・計算サーバ newton・archimedes.中身は SPEC_01 の例のとおり).作り直すときは既存のものを上書きしない

使う側のリポジトリへの組み込み (Using from Other Repositories)

Python のプロジェクトでは,本リポジトリを git サブモジュールとして置き,編集可能なパッケージとして読み込む.

git submodule add https://github.com/rintoHasegawa/TIASDataHub.git external/TIASDataHub
# 使う側の pyproject.toml
[project]
dependencies = ["tiasdata"]

[tool.uv.sources]
tiasdata = { path = "external/TIASDataHub", editable = true }
  • サブモジュールは本リポジトリの main にマージ済みのコミットを指す.使う側の作業中に基盤を直した場合は,サブモジュールの中で作業ブランチを切って本リポジトリに PR を出し,マージ後にサブモジュールの参照を更新する
  • ※ 未検証(使う側への組み込みは実装フェーズで行う)

臨床データの取り扱い (Clinical Data Handling)

手順ではなく,守るべき制約である.

  • データ本体と,実際の患者 ID ↔ 研究用 ID の対応表はリポジトリに入れない..gitignore で /data/・*.sqlite・*.db・/exports/ 等を除外しているが,そもそもリポジトリの配下に置かない
  • 手元 PC に臨床データを置かない
  • Claude にデータの中身を読ませない..claude/repo-access.json の deny_read に研究室 PC のデータフォルダ(E:/clinical-data)とリポジトリ内の data/・exports/ を入れている.データ置き場・DB の場所を追加・変更したら,このリストも更新する

環境再現性のルール (Reproducibility Rules)

  • 依存の追加は uv add(開発用は uv add --dev).uv.lock はコミットする
  • 実行時の依存は最小限にする(使う側に入るため.ENV_01)
  • データの置き場所をコードに書かない(設定ファイル・環境変数で渡す)

トラブルシューティング (Troubleshooting)

症状原因対処
python --version が Python とだけ出るMicrosoft Store の案内用スタブ(WindowsApps\python.exe)が呼ばれているuv python install 3.12 で入れた Python を使う.プロジェクト内では uv run を使えば uv が管理する Python が使われる
SSH で uv が見つからない非対話の SSH セッションに PATH の変更が反映されていないC:\Users\Papin\.local\bin\uv.exe を絶対パスで呼ぶ
SSH の出力が文字化けする研究室 PC の出力が CP932手元で iconv -f cp932 -t utf-8 を通す
ファイル操作系のツールが全てブロックされるフック用の Python が見つからないpython3 / python / py のいずれかが起動できるようにする