プロジェクト作成時に 一度だけ 行う初期設定.
private リポジトリとして作成する(臨床データは含めないが,研究途中のコードを公開しないため).
gh repo create rintoHasegawa/TIASJudgeModel --private --source=. --remote=origin \ --description "舌画像から舌色 5 分類を推定する機械学習モデル(TIASjudge 用)"
Dependabot alerts(脆弱性検出)と Dependabot security updates はリポジトリごとに既定で OFF なので,作成直後に有効化する(冪等なので再実行してよい).
gh api -X PUT repos/rintoHasegawa/TIASJudgeModel/vulnerability-alerts gh api -X PUT repos/rintoHasegawa/TIASJudgeModel/automated-security-fixes
検証:
gh api repos/rintoHasegawa/TIASJudgeModel/vulnerability-alerts # 204 なら有効(404 なら無効)
gh api repos/rintoHasegawa/TIASJudgeModel/automated-security-fixes # {"enabled":true,...} なら有効
※ 依存バージョンの定期更新は .github/dependabot.yml で設定する(別物.リポジトリ設定とは独立に動く).
mkdir -p ~/work/TIASJudgeModel # コード置き場(push で上書きされる) mkdir -p ~/data/TIASJudgeModel # データ置き場(push の対象外) chmod 700 ~/data/TIASJudgeModel # 共用サーバなので自分だけに絞る
コードを初回送信したあと,サーバ上で以下を確認する.
cd ~/work/TIASJudgeModel uv sync uv run python -c "import torch; print(torch.cuda.is_available(), torch.cuda.device_count())"
uv sync は CUDA 版 PyTorch が入るため時間がかかる.True と GPU 台数が出ることを確認する.False の場合は ENV_01「CPU / GPU の依存差」に従う.
原本は研究室 PC に置き,研究室 LAN 内で Newton へ一度だけコピーする.手元 PC を経由させない.
C:\Users\Papin\clinical-data\TIASJudgeModel\
ラベルごとの 9 フォルダに PNG が直置きされている(内訳は TEST_01 データセット構成調査).
⚠ 研究室 PC では「ドキュメント」フォルダが OneDrive(
OneDrive - 千葉大学)にリダイレクトされている.臨床データをドキュメント・デスクトップ配下に置くとクラウドへ同期されるため置かない.上記のプロファイル直下の独自フォルダは同期対象外である.
日本語フォルダ名をそのまま転送すると Windows(CP932)と Linux(UTF-8)の文字コード差で名前が壊れるため,ASCII のスラッグ名に対応付けてコピーする.
| 研究室 PC のフォルダ | サーバ上のディレクトリ |
|---|---|
淡紅(正常) | images/light_red_normal |
暗赤紅_あり | images/dark_red_strong |
暗赤紅_ややあり | images/dark_red_mild |
紫_あり | images/purple_strong |
紫_ややあり | images/purple_mild |
紅_あり | images/red_strong |
紅_ややあり | images/red_mild |
淡白_あり | images/pale_strong |
淡白_ややあり | images/pale_mild |
研究室 PC から Newton へ非対話で転送するため,研究室 PC 専用の鍵を作って Newton に登録する(2026-09-27 に実施済み).
C:\Users\Papin\.ssh\id_ed25519_newton(パスフレーズなし.コメントは papin-DESKTOP-1QLOO91-to-Newton-TIASJudgeModel)~/.ssh/authorized_keys に追記済み-o StrictHostKeyChecking=accept-new)※ Windows の OpenSSH サーバーは SSH エージェント転送に対応していないため,手元の鍵を研究室 PC 経由で使い回すことはできない(専用鍵が必要になる理由).
研究室 PC で作業する(hostname で研究室 PC であることを確かめてから実行する)
PowerShell で以下を実行する(対応表どおりに 9 フォルダを転送する)
$key = "$env:USERPROFILE\.ssh\id_ed25519_newton"
$root = "C:\Users\Papin\clinical-data\TIASJudgeModel"
$rhost = "hasegawa@192.168.23.14"
$map = [ordered]@{
"淡紅(正常)" = "light_red_normal"
"暗赤紅_あり" = "dark_red_strong"
"暗赤紅_ややあり" = "dark_red_mild"
"紫_あり" = "purple_strong"
"紫_ややあり" = "purple_mild"
"紅_あり" = "red_strong"
"紅_ややあり" = "red_mild"
"淡白_あり" = "pale_strong"
"淡白_ややあり" = "pale_mild"
}
foreach ($k in $map.Keys) {
$slug = $map[$k]
ssh -i $key $rhost "mkdir -p ~/data/TIASJudgeModel/images/$slug"
$files = @(Get-ChildItem -LiteralPath (Join-Path $root $k) -File -Filter *.png)
for ($i = 0; $i -lt $files.Count; $i += 100) {
$chunk = $files[$i..([Math]::Min($i+99, $files.Count-1))] | ForEach-Object { $_.FullName }
scp -i $key -q @chunk ($rhost + ":~/data/TIASJudgeModel/images/" + $slug + "/")
}
}
※ scp "...\*.png" のようにワイルドカードを渡す方式は使わない(PowerShell はネイティブコマンドの引数を展開しないため).ファイル一覧を列挙して 100 件ずつ渡す(コマンドライン長の上限を避けるため).
コピー後に件数を突き合わせる
(Get-ChildItem -LiteralPath $src -Recurse -File).Count # 研究室 PC 側(1085 の見込み) ssh hasegawa@192.168.23.14 "find ~/data/TIASJudgeModel/images -type f | wc -l"
原本は研究室 PC に残す(Newton 側は作業用コピー)
2026-09-27 に上記手順で転送完了.Newton 側 ~/data/TIASJudgeModel/images/ に 9 ディレクトリ・1085 ファイル(443 MB).研究室 PC 側の件数と完全一致し,非 PNG は 0 件.ディレクトリ権限は drwx------.転送は研究室 PC → Newton の直送であり,手元 PC は制御コマンドのみを送っている(画像は手元を通っていない).
以降は再転送しない.データセットの内容確認(枚数・クラス分布・破損チェック)はサーバ上のコマンドで行い,集計結果のみを手元で見る.
※ 研究室 PC から Newton への鍵が未登録の場合はパスワードを求められる.
研究室 PC を ProxyJump の踏み台にする設定は SmTIAS-LightSim で構築済みのため,本プロジェクトでの追加作業は不要(未設定の場合は同プロジェクトの docs/02_ENV/ENV_02_環境構築手順.md「学外から接続する(研究室 PC 経由)」に従う).
Claude は実施できない.着手前に確認する.