Newer
Older
TIASDataHub / docs / 03_PLAN / PLAN_02_開発ステップ.md

開発ステップ (Development Steps)

PLAN_01 要件定義書の成功基準に向けた実装の順序.仕様は SPEC_01〜SPEC_03.

方針 (Policy)

  • マイルストーン 1 は舌色データだけで,取り込み → 版 → バンドル → 計算サーバ → TIASJudgeModel までを一通りつなぐ(2026-10-02 のユーザー判断).セグメンテーション用データ・DeepTIAS の派生データはマイルストーン 2 以降にする
  • 骨組みが種類の追加に耐えるかは,マイルストーン 1 の中でもダミーの所見の種類を 1 つ足すテストで確かめる(成功基準 5)
  • 各ステップは /implement で進め,作業ブランチ → PR で main に入れる.Step 1〜5 は手元 PC だけで完結する(ダミーデータ).Step 6 以降は研究室 PC・計算サーバを使う

マイルストーン 1: 舌色データを基盤経由で使う (Milestone 1)

Step内容完了条件
1設定と目録の土台: config.py(設定ファイルの読み込み・検証),catalog/(接続・マイグレーションの適用),catalog/migrations/catalog/0001(SPEC_02 の全表と最初の種類)・identity/0001(対応表),tiasdata init(2026-10-06 完了)一時ディレクトリの設定ファイルから init で目録ができ,PRAGMA user_version が最新になる.テスト(設定ファイル・マイグレーション)が通る
2ストア: store.py(ハッシュ・コピー・照合),テスト用のダミーデータ(小さい画像・取り込み元のフォルダ)を作る conftest.py(2026-10-06 完了)同じ中身が 1 つにまとまり,コピー後の照合・上書きしないことがテストで確かめられる
3取り込みと点検: kinds/(tongue_color の値の型),importers/tongue_color_folders(9 フォルダ+対応表の xlsx → 症例・撮影・ファイル・所見・由来.患者 ID は identity.sqlite へ),tiasdata import・stats・check(2026-10-06 完了)ダミーの 9 フォルダと対応表を取り込め,同じ患者の複数枚が同じ症例にまとまる.2 回実行しても同じ結果になる.想定外の構成・対応表に無い番号で停止する.保留リストの番号を飛ばし,保留の件数を報告する.出力に患者 ID・元のファイル名が出ない.check がストアの書き込み可能なファイル(読み取り専用が外れたもの)の数を報告する
4データセットと版: datasets/tongue_color.toml,datasets.py(定義の評価・版の作成),tiasdata dataset freeze・list・show所見を足す・訂正しても過去の版の構成が変わらない.構成が同じなら版を作らない.ダミーの所見の種類を 1 つ足しても既存の表を変えずに済む(2026-10-06 完了)
5バンドル: bundle.py(読み込み・検証)・export.py(書き出し),tiasdata export,公開 API(load・open_bundle・Bundle.fingerprint)書き出したバンドルを目録なしで読める.改変・欠けを検出する.同じ版から同じ manifest.csv が得られる(2026-10-08 完了)
6研究室 PC での運用開始: 立ち上げの成果物と Step 1〜5 を main に取り込む → 研究室 PC に GitHub から clone・設定ファイル作成・init → 舌色データ(1085 枚)を取り込み → check・stats → 版 1 を作成 → tiasdata backupすべて手元 PC から SSH で行える.取り込み 1076 枚+保留 9 枚が 1085 枚・9 グループで TIASJudgeModel の TEST_01 と一致し,症例が約 450(2026-10-03 の照合値)になる.check が問題 0 件
7計算サーバへの受け渡し: deliver.py(tar・scp・展開・sha256sum -c・記録),tiasdata deliver版 1 を Newton・Archimedes に渡し,両方で照合が通り,deliveries に記録される.データが手元 PC を通らない
8TIASJudgeModel の切り替え: TIASJudgeModel にサブモジュールを追加し,tiasdata.load("tongue_color", version=1) から現行の manifest の形に変換して学習・評価に使う(TIASJudgeModel 側の作業ブランチで行う)変換した manifest の件数・label・severity の内訳が,現行の manifest から保留の 9 枚を除いたものと一致し,patient_id が患者単位(約 450 人)になる.患者単位の分割で交差検証をやり直し,現行(画像単位)の成績との差を記録する.実験記録にバンドルの指紋が残る.研究室 PC の固定パスを書かずに済む
  • Step 6 の前に,立ち上げの成果物(chore/project-setup)を main に取り込む
  • 舌色データセットの重複 5 組の扱い(2026-10-06 のユーザー判断): 基盤では正解を推測で決めず,確かめられるまで保留にする.保留リスト holds/tiasjudgemodel.toml(SPEC_03「保留リスト」)に 9 枚を載せ,取り込みで飛ばす
    • ファイルが同一で患者 ID が食い違う 2 組(122/184・548/566): 両方とも保留.研究室のサーバの元のデータでどちらの患者かを確かめる
    • ラベルが違う 2 組(381/382・515/516): 両方とも保留.評価者に正しいラベルを確かめる
    • ラベルが同じ重複の 1 組(508/509): DeepTIAS の出力と完全一致する 508 を残し,509 だけ保留
    • 確かめ終わったらリストから外して取り込み直し,データセットの新しい版を作る
  • Step 6・7 はコード(Step 7 の deliver)と運用(研究室 PC・サーバでの実行)が混ざる.運用の手順と結果は ENV_02・ENV_03 に記録する
  • Step 8 の終了時点で PLAN_01 の成功基準 1〜7 を確認する

マイルストーン 2 以降の候補 (Later Milestones)

優先度はマイルストーン 1 の完了後に決める.

候補内容
セグメンテーション用データTongueSegmentation(画像・正解マスク)を取り込む importer を追加する
DeepTIAS の派生データ撮影画像・カラーチャート画像と,DeepTIAS の出力(色補正後の画像・マスク・analysis.csv)を由来付きで登録する.旧 exe(2021 年 12 月版)と現行ソースの出力を版で区別する.取り込み元は整理済みの DeepTIAS_TIASJudgeModel\<番号>\(382・509・516 は元の出力ではなくコピーである点を由来に記録する)
実際の患者 ID を持つデータ対応表(identity.sqlite)を使う取り込み.同じ患者の複数枚・経時的な撮影.倫理審査の保管ルールの確認が前提
他の所見苔の色・厚さ,問診・体質等の種類を追加する
バックアップ目録・ストアを別の媒体に退避する方法を決めて手順化する(ストアのファイルは読み取り専用である点に注意)
編集のコマンドラベルの訂正・撮影の患者の付け替え・ファイルの種類の変更等.どのコマンドもまず試走で影響(変わる件数・影響する版・非破壊か破壊的か)を表示し,破壊的な編集(過去の版の中身が変わる・データが消える)は明示の指定(例: --allow-destructive)が無いと実行しない.編集はいつ・何を・なぜを履歴の表に残す(2026-10-08 のユーザー判断.必要になった時点で作る)
データの削除同意の撤回等でデータを本当に消す必要がある場合の専用コマンド(例: tiasdata purge).影響する版を確かめ,削除を目録に記録してから,読み取り専用を外してストアから消す(SPEC_01「ストアの規則」)
TIASjudge・DeepTIAS からの利用使う側を増やす