Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
343 commits
Select commit Hold shift + click to select a range
e9a7432
docs(R-1): checks/R-1.md・steering.md を最新化(第3回SEレビュー対応完了)
kiyotis May 21, 2026
71c20ae
docs: steering.md に R-1-refactor タスク追加(TDDベース reader.yaml サブパッケージ分割)
kiyotis May 21, 2026
0b598e6
docs: steering.md を最新化(R-1 ユーザーレビュー NG・R-1-refactor 着手前の状態に更新)
kiyotis May 21, 2026
fb4f2f0
feat(R-1-refactor): YamlTestDataParser を reader.yaml サブパッケージに責務分割(TDD…
kiyotis May 21, 2026
a991482
docs(R-1-refactor): セルフチェックファイル追加(担当者OK・レビュー待ち)
kiyotis May 21, 2026
44d1beb
docs: steering.md を最新化(R-1-refactor QAレビュー指摘対応前の状態に更新)
kiyotis May 21, 2026
3d5f9f4
fix(R-1-refactor): QAエンジニアレビュー指摘 QA-1〜QA-5 を全件対応
kiyotis May 21, 2026
4d22147
fix(R-1-refactor): QAエンジニアレビュー(2回目)指摘 8件を全件対応
kiyotis May 21, 2026
184ac46
refactor(R-1-refactor): Javaエキスパートレビュー指摘を全件対応
kiyotis May 21, 2026
a039dba
refactor(R-1-refactor): ソフトウエアエンジニアレビュー指摘を全件対応
kiyotis May 21, 2026
e0719bd
refactor(R-1-refactor): applyDirectives ラッパーを削除して直接委譲に変更、チェックファイル更新
kiyotis May 21, 2026
4692b91
docs: steering.md を最新化(R-1-refactor 全レビュー通過・ユーザーレビュー待ち状態に更新)
kiyotis May 21, 2026
1a37700
fix(R-1-refactor): 並行アクセス・エラー診断の指摘7件を全件対応
kiyotis May 21, 2026
efce88e
fix(R-1-refactor): A-1/A-2 を revert(並行アクセスなし・既存コードと設計方針統一)
kiyotis May 21, 2026
345bf83
test(R-1-refactor): E-1/E-2/E-3 テストの網羅性を補強
kiyotis May 21, 2026
f1f270b
docs: I-4(異常系仕様の列挙)タスクを追加し、タスク順序を更新
kiyotis May 21, 2026
a088354
docs: I-4 作業方針を修正(YAMLベース → 既存Excel実装ベースで異常系仕様を洗い出す)
kiyotis May 21, 2026
30accc4
docs(I-4): 異常系仕様 14件を ntf-impl-spec-list.md に追加・チェックファイル作成
kiyotis May 22, 2026
0938cd9
docs: I-4 タスク定義を強化(網羅抽出手順・3観点分類・セルフチェック客観化)
kiyotis May 22, 2026
dfd1035
docs: I-1 やり直しに向けて成果物・steering を整理
kiyotis May 22, 2026
cd44b2b
docs: steering に再開手順を追記
kiyotis May 22, 2026
9eda372
docs(I-1): やり直し版を完成させ QA レビュー NG 5件を修正
kiyotis May 22, 2026
4efd1d7
docs(I-1): 横並びチェック不足による文書間不整合を全件修正
kiyotis May 22, 2026
b08de1c
docs: 不要なドラフト・旧版チェックファイルを削除
kiyotis May 22, 2026
ad039c9
docs: steering を I-1 完了後の状態に更新
kiyotis May 22, 2026
2f792de
docs: ntf-spec.md 作成方針をステアリングに追記
kiyotis May 22, 2026
82620c5
docs: NTF テストデータ仕様書(ntf-spec.md / ntf-spec-examples.md)を新規作成
kiyotis May 22, 2026
d89b110
docs: ntf-spec.md / ntf-spec-examples.md を docs/specs/ に移動
kiyotis May 22, 2026
d1aeced
docs: steering を ntf-spec.md FB 対応中の状態に更新
kiyotis May 22, 2026
8fdf9d1
docs: テストサポート層仕様(TS-01〜32)追加・ntf-spec.md 1.1 を3種構造で改訂
kiyotis May 22, 2026
a377603
docs: ntf-spec.md 1.1 の「1行1ケース」を「1エントリ1ケース」に修正
kiyotis May 22, 2026
148734d
docs: ntf-spec.md 横並びチェックによる全体整合修正
kiyotis May 22, 2026
c8d94d4
docs: steering を ntf-spec.md FB 対応中の状態に更新
kiyotis May 22, 2026
d63dc9a
docs: ntf-spec.md 用語をv6解説書に統一(フィールド名称・データ型・フィールド長・カラム等)
kiyotis May 22, 2026
3428976
docs: ntf-spec.md Excel固有用語の残存箇所を修正
kiyotis May 22, 2026
f4da3fe
docs: ntf-spec.md 「HTTPテスト」「バッチテスト」をv6解説書の正式名称に修正
kiyotis May 22, 2026
63e0898
docs: ntf-spec.md テスト種別名をv6解説書の正式名称に修正
kiyotis May 22, 2026
0e14bd1
docs: ntf-spec.md 解説書全ページ読み込みにもとづく用語修正
kiyotis May 22, 2026
0e8688c
docs: NTF解説書(v6)用語リストを追加
kiyotis May 22, 2026
1e2b3a1
docs: steering を ntf-spec.md 用語見直し完了後の状態に更新
kiyotis May 22, 2026
53daa46
docs: ntf-spec.md 1.1節の概要から実装詳細(セクション名)を除去
kiyotis May 22, 2026
8dd66d6
docs: ntf-spec.md 1.1節「期待値」を「検証」に変更
kiyotis May 22, 2026
34189e1
docs: ntf-spec.md 1.1節の章参照リンクを削除
kiyotis May 22, 2026
244eecd
docs: ntf-spec-examples.md に概要・testShots の Example を追加
kiyotis May 22, 2026
0762c30
docs: ntf-spec-examples.md Excelテーブルの先頭空セルずれを全件修正
kiyotis May 22, 2026
2afa6ef
docs: ntf-spec-examples.md ExcelテーブルをBasicTestDataParserTest.xlsの実構造に…
kiyotis May 22, 2026
a9ce699
docs: ntf-spec-examples.md テーブル名・期待値データ・空列を修正
kiyotis May 22, 2026
03f027e
docs: ntf-spec-examples.md #overview の EXPECTED_TABLE に USER_NAME を追加
kiyotis May 22, 2026
c8730c3
docs: ntf-spec-examples.md 冒頭の先頭空セル説明を削除
kiyotis May 22, 2026
f39c221
docs: ntf-spec-examples.md ExcelとYAMLの説明をそれぞれの直下に移動
kiyotis May 22, 2026
a512a5d
docs: ntf-spec-examples.md 冒頭の目的行を削除
kiyotis May 22, 2026
acf0a73
docs: ntf-spec-examples.md #overview の説明文を削除
kiyotis May 22, 2026
2127487
docs: ntf-spec-examples.md #overview に各セクションの説明を追加
kiyotis May 22, 2026
badbc29
docs: ntf-spec-examples.md #overview の説明をまとめてテーブルの下に移動
kiyotis May 22, 2026
e4e34f5
docs: ntf-spec-examples.md #overview の説明を概要レベルに修正
kiyotis May 22, 2026
8e90098
docs: ntf-impl-spec-list に節番号列を追加、ntf-spec から付録削除
kiyotis May 22, 2026
8177f0b
docs: ntf-spec.md から仕様ID参照をすべて削除
kiyotis May 22, 2026
f87e5bf
docs: Exampleアンカーをname属性に修正、SS-19/TS-06の節番号を修正
kiyotis May 22, 2026
b941faa
docs: steering を仕様書/Example分割方針に更新
kiyotis May 22, 2026
966219b
docs: steering 再開手順に実物Excelテストデータ参照ステップを追加
kiyotis May 22, 2026
f59748c
docs: steering を次セッション再開用に更新
kiyotis May 22, 2026
7aad953
docs: ntf-spec.md 2.1節修正 + ntf-spec-examples-*.md 全章作成
kiyotis May 22, 2026
149610d
docs: steering を次セッション再開用に更新
kiyotis May 22, 2026
6f213e8
docs: ntf-spec.md に 1.2節「テストデータの基本構造」を追加
kiyotis May 25, 2026
7c036c2
docs: ntf-spec-examples-overview.md の 1.1/1.2 節順を修正
kiyotis May 25, 2026
5c9007a
docs: Example の inFile/outFile を正しい列名 setUpFile/expectedFile に修正
kiyotis May 25, 2026
08f06e7
docs: Example・仕様書の4件の誤りを修正
kiyotis May 25, 2026
00a9c4b
docs: Example の 1.2節(基本構造)を削除し仕様書本体に一本化
kiyotis May 25, 2026
9f65008
docs: Example 1.1節の見出し・説明文を修正
kiyotis May 25, 2026
ef63c48
docs: spec/Example の重複を解消
kiyotis May 25, 2026
13bd3e7
docs: Example全5ファイルのタイトルから章番号・節名を削除
kiyotis May 25, 2026
651964d
docs: Example overview にコードを読むための最低限の注釈を復元
kiyotis May 25, 2026
fb35fbe
docs: Example の YAML セクションに説明を追加
kiyotis May 25, 2026
dfd9b0f
docs: steering を次セッション再開用に更新(2026-05-25)
kiyotis May 25, 2026
67f271c
docs: ntf-spec.md のセクション識別書式説明を形式非依存に修正
kiyotis May 25, 2026
70d40c4
docs: ntf-spec に Excel/YAML の最小コード例を復活・Example を業務的な記述に更新
kiyotis May 25, 2026
7eca6f5
docs: 2.1節のgroupIdなし・ありのコード例を分離して誤読を防ぐ
kiyotis May 25, 2026
623a0b1
docs: groupId Example を testShots との連携が見える例に書き直し
kiyotis May 25, 2026
dcde30c
docs: 仕様書にgroupIdとtestShotsカラムの連携を明記
kiyotis May 25, 2026
16b331e
docs: 概要節を廃止し1.1/1.2をトップレベル章に昇格、全章番号を繰り上げ
kiyotis May 25, 2026
ccfc5cc
docs: 3.1をセクション識別のみに絞り groupId を 3.4節に分離、steering更新
kiyotis May 25, 2026
262f732
docs: groupIdのセクションを3章から4章末尾(4.5節)に移動
kiyotis May 25, 2026
ec7a5ea
docs: ntf-spec.md 3章を3節構成に整理、Exampleの節番号を修正
kiyotis May 25, 2026
92e7f9e
docs: groupId の Example 見出しを 4.5節に移動し仕様書リンクを整合
kiyotis May 25, 2026
e3a1168
docs: testShots カラム一覧を別ファイルに分離し全処理方式を追記
kiyotis May 25, 2026
6bc560e
docs: testshots ファイルに処理方式へのページ内リンクを追加
kiyotis May 25, 2026
9b7a332
docs: 4.1節のリンクを1本に統合し重複 testShots 記述例を削除
kiyotis May 25, 2026
71806ba
docs: YAML値のクォートルールを2章に明文化
kiyotis May 25, 2026
938aedf
docs: I-1b タスクを追加(仕様ID漏れの洗い出しと補完)
kiyotis May 25, 2026
88c8b16
docs: I-1b タスクを全ソース対象に修正
kiyotis May 25, 2026
7f1819e
docs: steering のチェックボックスと現在の状態を実態に合わせて更新
kiyotis May 25, 2026
244d9d3
docs: steering をフロー再設計(S-1〜S-5→R-1→T-1→V-1 の順に全面再構成)
kiyotis May 25, 2026
0c1a437
docs: steering の現在の状態を次セッション再開用に更新(2026-05-25)
kiyotis May 25, 2026
f8f99dc
docs: steering のソース一覧を確定・再開手順を更新(2026-05-25)
kiyotis May 25, 2026
3704904
docs: S-1 解説書からの仕様抽出(36ファイル、147件)
kiyotis May 25, 2026
3cd4b49
docs: S-2 既存実装からの仕様抽出(全166ファイル、226件抽出)
kiyotis May 25, 2026
559f90a
docs: S-1/S-2 エキスパートレビュー方針をステアリングに追記(1ファイル1エージェント・5並列)
kiyotis May 25, 2026
80f4b74
docs: steering にサブエージェントFB取り込み方針を追記
kiyotis May 25, 2026
0b59a7d
docs: S-1/S-2 エキスパートレビューFB対応方針を作業ステップに明記(一次ソース確認必須)
kiyotis May 25, 2026
3d24b1a
docs: S-1 エキスパートレビューFB反映 バッチ1・2(19件追記、S1-148〜S1-166)
kiyotis May 25, 2026
bf91bcb
docs: S-1 エキスパートレビューFB反映 バッチ3(10件追記、S1-167〜S1-176)
kiyotis May 25, 2026
ad4a111
docs: S-1 バッチ5 FB対応(S1-177〜S1-187、11件追記)
kiyotis May 25, 2026
69a8787
docs: S-1 バッチ6 FB対応(S1-188追記)
kiyotis May 25, 2026
220f827
docs: S-1 エキスパートレビュー全8バッチ完了(S1-188件確定)
kiyotis May 25, 2026
b0a427d
docs: steering 再開手順を S-2 エキスパートレビューへ更新(S-1 完了)
kiyotis May 25, 2026
4cd875c
docs: S-2 エキスパートレビュー FB対応 バッチ9〜12(file系・messaging系)
kiyotis May 25, 2026
9caeb37
docs: S-2 エキスパートレビュー FB対応 バッチ13〜17(reader系・interpreter系・util系・yaml系・db系)
kiyotis May 25, 2026
ceeefeb
docs: S-2 完了(ユーザーレビュー OK)・steering 更新
kiyotis May 25, 2026
3d8b6cc
docs: steering 再開手順を S-3 着手手順に更新
kiyotis May 25, 2026
68f6c70
docs: S-3 完了(仕様リストに S-1/S-2 マッピング列を追加し S-3.md を新規作成)
kiyotis May 25, 2026
b11cf40
docs: S-3 QAエンジニアレビュー FB対応
kiyotis May 25, 2026
e207a33
docs: S-3 QAレビュー追加FB対応(双方向整合性修正)
kiyotis May 25, 2026
962d2ae
docs: S-3 QAレビュー3回目FB対応
kiyotis May 25, 2026
0a684eb
docs: S-3 QAレビュー結果・総合判定を S-3.md に記録
kiyotis May 25, 2026
870fd08
docs: S-3 完了(ユーザーレビュー OK)・steering 再開手順を S-4 着手手順に更新
kiyotis May 25, 2026
10025db
docs: S-4 仕様書全件見直し完了(仕様ID145件対応・旧examples.md削除)
kiyotis May 25, 2026
d3de65e
docs: S-4 完了・steering 再開手順を S-4 ユーザーレビュー手順に更新
kiyotis May 25, 2026
00ba96a
docs: S-4 解説書化対応(ntf-spec.md → ntf-testdata-doc.md リネーム・文体統一)
kiyotis May 26, 2026
0670493
docs: steering 再開手順を S-4 ユーザーレビュー待ち状態に更新(2026-05-26)
kiyotis May 26, 2026
e25ef44
docs: S-4 解説書を Excel/YAML 対比形式に全面改訂
kiyotis May 26, 2026
3de6fa2
docs: S-4 解説書の内部実装記述をユーザー視点に修正
kiyotis May 26, 2026
bc2a586
docs: S-4 解説書から内部実装表現を全件除去しユーザー視点に統一
kiyotis May 26, 2026
4349f81
docs: S-4 ファイルなし時の動作を Excel/YAML 共通仕様として正確に記載
kiyotis May 26, 2026
881811e
docs: S-4 2章のファイルなし時の動作をファイルレベルの説明に絞る
kiyotis May 26, 2026
4768a0a
docs: S-4 5.1節のファイル不存在時の動作から他データ種別への言及を削除
kiyotis May 26, 2026
36248d0
docs: S-4 自明な記述(データなし時のスキップ)を削除
kiyotis May 26, 2026
0a808df
docs: steering 再開手順を S-4 ユーザーレビュー中状態に更新(2026-05-26)
kiyotis May 26, 2026
3b8f359
docs: S-4 解説書を利用者視点で全面見直し
kiyotis May 26, 2026
5e04245
docs: S-4 ユーザーFBに基づき解説書を再見直し
kiyotis May 26, 2026
d0fa602
docs: S-4 未対応FBを対応(点4/点15/点18)
kiyotis May 26, 2026
8e907d2
docs: steering 再開手順を S-4 ユーザーレビュー中状態に更新(2026-05-26)
kiyotis May 26, 2026
12ad320
docs: 共通カラム表を廃止し testShots カラム説明を Examples に集約
kiyotis May 26, 2026
224a281
docs: 4.2節に処理方式別 testShots カラム一覧への直接リンクを追加
kiyotis May 26, 2026
868ab86
docs: 4.3予約ID節を削除しsetUpDbを各処理方式のオプションカラムへ移動
kiyotis May 26, 2026
f56a081
docs: 6.8 エラーになるケースを1カラムテーブルから箇条書きに変更
kiyotis May 26, 2026
ff7eaf1
docs: 11章 DB アサートを削除(テストデータ解説書のスコープ外)
kiyotis May 26, 2026
b2604fe
docs: steering S-4完了・S-5進行中に更新
kiyotis May 26, 2026
86925e9
docs: S-5 仕様IDへの解説書章番号マッピング完了(145件全件)
kiyotis May 26, 2026
35f5a4b
docs: S-5 TS-13/14/15/16/20/21の章番号マッピングを修正(examples-testshots.mdに記載あり)
kiyotis May 26, 2026
d76ce74
docs: S-5 記載漏れ6件をtestshots.mdに追記しS-5.mdマッピングを修正
kiyotis May 26, 2026
db17600
docs: steering S-5完了・R-1進行中に更新
kiyotis May 26, 2026
2ddc0b5
docs: R-1 作業内容を更新(解説書ベースTDD・仕様リストマッピングをR-1内で実施)
kiyotis May 26, 2026
7abfe77
docs: steering 再開手順を R-1 着手状態に更新(2026-05-26)
kiyotis May 26, 2026
f88005f
docs: steering S-1〜S-5詳細定義を削除・R-1チェックボックスを実態に更新
kiyotis May 26, 2026
337e1ba
docs: 作業ルールに「作業内容に従って作業・完了後即更新」を追加
kiyotis May 26, 2026
f282150
docs: R-1作業内容の目的・チェックボックスを解説書ベースに修正
kiyotis May 26, 2026
c9e4440
feat(R-1): 解説書5.5/6.5/6.6/10.2に対応するテストと実装を追加
kiyotis May 26, 2026
fe11bb3
feat(R-1): 解説書8.1/8.3に対応するインタープリタ動作テストを追加
kiyotis May 26, 2026
698db30
docs: 解説書8.1/8.3 LineSeparatorInterpreterのデフォルト動作を正確化
kiyotis May 26, 2026
9dab0e9
feat(R-1): 解説書10.5 rows内の空エントリ({})スキップを実装
kiyotis May 26, 2026
27fc680
feat(R-1): 解説書8.4/8.6 DateTimeInterpreter完全一致・BinaryFileInterpreterのパ…
kiyotis May 26, 2026
c2bce9c
feat(R-1): 解説書8.5 文字種生成インタープリタのテストを追加
kiyotis May 26, 2026
16ecb81
docs: R-1 ギャップ一覧作成・steering更新・G-1/G-2テスト追加(WIP)
kiyotis May 26, 2026
6900d50
feat(R-1): G-1〜G-6 ギャップテストを全件実装・グリーン確認(58件→67件)
kiyotis May 27, 2026
42db20e
docs: G-1〜G-6 完了を反映・steering/gaps更新
kiyotis May 27, 2026
f323bdf
docs: QAレビューFB対応リストをsteeringに記録(14件)
kiyotis May 27, 2026
05c3097
feat(SW-1): SnakeYAML → SnakeYAML Engine 3.0.1 切替(YAML 1.2 Core Schema)
kiyotis May 27, 2026
83e91f5
feat(R-1): QA/Java/SWEレビューFB 13件対応(テスト追加・実装修正・コード品質)
kiyotis May 27, 2026
ab7ac2d
docs: steering更新(FB対応14件完了)・ADR-001更新(Engine 3.0.1切替記録)
kiyotis May 27, 2026
2c686c1
docs: steering再開手順更新(再レビュー対象ファイル明記)
kiyotis May 27, 2026
a03f609
feat(R-1): QA/Java/SWEレビューFB 17件対応(再レビュー全員OK)
kiyotis May 27, 2026
9e5cf23
docs: steering更新(QA/Java/SWE再レビュー全員OK・テスト数74件)
kiyotis May 27, 2026
99394ca
feat(R-1): RS-20テスト追加(FW_HEADERフラグメント不在→空Map代替フロー)
kiyotis May 27, 2026
88b4b3d
docs(R-1): セルフチェック更新(仕様IDマッピング全22件・RS-20テスト追加記録)
kiyotis May 27, 2026
b931b8b
docs: steering更新(仕様IDマッピング・セルフチェック完了マーク)
kiyotis May 27, 2026
479efb0
feat(T-1): トレーサビリティマトリクス完成(テストメソッド列145件追加)
kiyotis May 27, 2026
92f484b
docs(T-1): セルフチェックファイル作成・ステアリングチェックリスト更新
kiyotis May 27, 2026
7c2c346
fix(T-1): QAレビューFB本質3件対応(テスト追加・マッピング修正)
kiyotis May 27, 2026
3271024
docs(steering): T-1 QAレビューOK・ステータス更新(ユーザーレビュー待ち)
kiyotis May 27, 2026
993cd31
refactor(docs): 全成果物を docs/pr75/ に集約・steering.md 概要セクション追加
kiyotis May 27, 2026
7f355b1
docs(specs): 解説書に YAML 1.2 準拠の旨を追記
kiyotis May 27, 2026
51a4aae
docs(steering): 再開手順・進捗を現状に更新(2026-05-27)
kiyotis May 27, 2026
49632af
refactor(docs): 設計フェーズ成果物を design/ サブディレクトリに集約
kiyotis May 27, 2026
5b977a9
docs(steering): R-1/T-1完了・C-1タスク追加(Excel→YAML変換ツール)
kiyotis May 27, 2026
e47d933
docs(C-1): Excel↔YAML双方向変換ツール設計書を作成
kiyotis May 27, 2026
c7d5f42
docs(C-1): TestDataConverter設計書を作成(形式非依存・双方向変換)
kiyotis May 27, 2026
0e7648b
docs(steering): C-1進行中に更新・再開手順を設計書レビューに修正
kiyotis May 27, 2026
052a4dc
docs(C-1): 設計書レビューFB対応(QA10件・N4件)
kiyotis May 27, 2026
cd4916c
docs(steering): C-1進捗反映・設計書リンク追加
kiyotis May 27, 2026
3c0684b
docs(C-1): 仕様リストに変換ツール対象列を追加・設計書1.2節/5章を仕様リスト参照に改訂
kiyotis May 27, 2026
d2ee9ae
docs(C-1): 設計書に対象仕様の変換ルールを全件追記
kiyotis May 27, 2026
71e0376
docs(steering): C-1タスクを巻き戻し・調査タスクC-1-0から再定義
kiyotis May 27, 2026
6ac8f33
docs(steering): Ph-1〜Ph-4の完了済みタスクを圧縮
kiyotis May 27, 2026
c811b0e
docs(steering): C-1-9をセルフチェック・QA/Java/SWE・ユーザーレビューに分割
kiyotis May 27, 2026
48e39fd
docs(steering): 現在の状態セクションを更新・R-1/T-1 FB詳細を圧縮
kiyotis May 27, 2026
1953eda
docs(C-1-0): PoiXlsReader/BasicTestDataParser/YamlTestDataParserのデータフ…
kiyotis May 27, 2026
90a8766
docs(steering): 中間データモデルの命名を確定(TestDataContainer/Section/Block)
kiyotis May 27, 2026
441533b
docs(steering): 現在の状態を更新・C-1-1から再開できるよう再開手順を修正
kiyotis May 27, 2026
3f5337b
docs(C-1-1): 仕様リスト DR-07 の変換ツール対象列の旧命名を修正
kiyotis May 27, 2026
b5e0abb
docs(C-1-2): 設計書と解説書を確定命名・汎用化で全面書き直し
kiyotis May 27, 2026
a4f5867
docs(C-1-3): セルフチェック完了 - 仕様リスト変換ツール対象28件の設計書逆マッピングを確認
kiyotis May 27, 2026
a527d0d
docs(C-1-4): QAレビュー指摘10件を全件対応
kiyotis May 27, 2026
398fa44
docs(C-1-5): Javaエキスパートレビュー指摘11件を全件対応
kiyotis May 27, 2026
52013b5
docs(C-1-6): SWEレビュー指摘11件を全件対応
kiyotis May 27, 2026
1c72db5
docs(C-1-7): 1.1節の目的を手段ではなく本質的な目的に書き直す
kiyotis May 27, 2026
b7eed43
docs(C-1-7): 「逆変換」を「YAML → Excel 変換」に統一
kiyotis May 27, 2026
d9185b3
docs(C-1-7): 2.3節にNTF整合性を統合テストで検知する方針を明記
kiyotis May 27, 2026
8638ae7
docs(C-1-7): 4.2節の除外ファイル決め打ちを廃止し --include/--exclude パターン指定に変更
kiyotis May 27, 2026
75249cf
docs(C-1-7): 設計をExcel↔YAML視点からデータモデル中心に再構成
kiyotis May 27, 2026
7f9a30e
docs(C-1-7): 段階移行ユースケースを削除(このツールが不要にするものであり実現するものではない)
kiyotis May 27, 2026
911c29d
docs(C-1-7): フェーズ定義章を廃止し設計方針に統合(章番号繰り上げ・全参照更新)
kiyotis May 27, 2026
11067c7
docs: 変換ツール設計の原則をステアリングに追記(モデル起点・IN/OUT分離・フォーマットカスタマイズ)
kiyotis May 28, 2026
3833db0
docs(C-1-7): モデル起点設計とモデル非搭載情報の扱いを設計書に反映、ステアリングから削除
kiyotis May 28, 2026
2c46c07
docs(C-1-7): 2.2節「形式名をクラス名に入れない原則」を削除(実装命名規則は設計方針でない)
kiyotis May 28, 2026
e215908
docs(C-1-7): パッケージをnablarch.test.tool.converterに変更、src/main/java配置に修正
kiyotis May 28, 2026
2a5b1ef
docs(C-1-7): C-1-7完了・ステアリングとチェックファイルを更新
kiyotis May 28, 2026
66b5328
feat(C-1-8): TDD実装 - テストデータ変換ツール全クラス実装完了(81テスト全グリーン)
kiyotis May 28, 2026
28c4239
docs(C-1-8): C-1-8完了をステアリングに反映
kiyotis May 28, 2026
a1597cd
docs(C-1-8): ステアリングに実装済みファイル一覧を追記(次回再開用)
kiyotis May 28, 2026
2a04033
fix(C-1-9): セルフチェックで検出した設計書非準拠 6 件を修正
kiyotis May 28, 2026
3a7b359
fix(C-1-10): QAレビュー指摘 Q-1/Q-7/Q-8 を修正
kiyotis May 28, 2026
2076e49
docs(C-1-10): QAレビュー記録を C-1.md に追記
kiyotis May 28, 2026
3ceaadf
fix(C-1-11): Javaエキスパートレビュー指摘 J-3/J-5/J-6/J-8 を修正
kiyotis May 28, 2026
20e13c2
fix(C-1-12): SWEレビュー指摘 S-4 修正・レビュー記録追記
kiyotis May 28, 2026
28d0421
docs(C-1-12): ステアリングとC-1.mdを最新状態に更新
kiyotis May 28, 2026
ddcc6f6
refactor: converterパッケージをmodel/xls/yamlサブパッケージに分割
kiyotis May 28, 2026
6d8db85
test: converterパッケージのカバレッジ向上テストを追加
kiyotis May 28, 2026
a073081
test: YamlSection/YamlMessageBuilder/YamlTableDataBuilderのカバレッジ向上テストを追加
kiyotis May 28, 2026
1b55395
docs(steering): C-1-13-pre完了・C-1-14(Mockitoカバレッジ)タスク追加
kiyotis May 28, 2026
499faf6
docs(steering): C-1-14作業詳細(Mockitoカバレッジ)を追記・再開手順更新
kiyotis May 28, 2026
11e5a50
test(C-1-14): Mockitoで残カバレッジ未達を解消・到達不可防御ガードをC-1.mdに記録
kiyotis May 28, 2026
d406991
docs(steering): C-1-14完了・C-1-15(ユーザーレビュー)へ移行
kiyotis May 28, 2026
a6b1fbd
refactor(model): TestDataBlockをsealedクラス化・XlsFormatWriterの防御ガードを削除
kiyotis May 29, 2026
ac39c70
docs(C-1): C-1.mdの到達不可ガード表からXlsFormatWriter.writeBlock()を削除
kiyotis May 29, 2026
956c2df
refactor: 到達不可ガードをAssertionError("UNREACHABLE:")に統一・readCellsの重複末尾除去を削除
kiyotis May 29, 2026
365c836
docs(C-1): 到達不可ガード表を最新状態に更新
kiyotis May 29, 2026
91406e9
refactor(TestDataConverter): System.exit()を削除・mainテストをシンプル化
kiyotis May 29, 2026
faa94c7
docs(C-1): System.exit()削除によりガード表を7件に更新
kiyotis May 29, 2026
7951023
refactor(XlsFormatReader): DEFAULT DataType のサイレントスキップをAssertionErrorに変更
kiyotis May 29, 2026
8cdad01
test(YamlFormatWriter): mockStaticをsetWritable(false)に置き換えてcatchカバレッジを解消
kiyotis May 29, 2026
220c657
docs(steering): C-1-15進行状況・残作業詳細を更新(2026-05-29)
kiyotis May 29, 2026
1943ba1
test(YamlFormatWriterTest): writeRecordLayoutのtype=null分岐テストを追加し件6カバレ…
kiyotis May 29, 2026
003c283
docs(steering): 成果物一覧を整理(名称修正・内部プロセス項目削除)
kiyotis May 29, 2026
d8e43af
docs(steering): PRレビュアー向けに全面整理(内部運用情報を削除・構成を簡潔化)
kiyotis May 29, 2026
2f257e3
revert: steering.md を全面書き直し前の状態に戻す
kiyotis May 29, 2026
97a8967
docs(steering): PRレビュアー向けと作業ガイドに構成を分離
kiyotis May 29, 2026
5248746
docs(steering): 成果物一覧の冗長な状態注記を削除
kiyotis May 29, 2026
31b4199
feat: JSON Schemaをsrc/main/resourcesに配置しバリデーションテストを追加
kiyotis May 29, 2026
7155d46
docs(steering): S-6(JSON Schema整合性確認)タスクを追加・再開手順を更新
kiyotis May 29, 2026
4ad20ac
feat(S-6): JSON Schema 整合性確認
kiyotis May 29, 2026
a6ddce4
fix(S-6): QAレビュー指摘対応 - directives検証根拠の明示・SingleData経路アサート追加
kiyotis May 29, 2026
3284add
fix(S-6): Javaエキスパートレビュー指摘対応 - 統合煙突テストの設計意図を明記
kiyotis May 29, 2026
8984934
fix(S-6): SWEレビュー指摘対応 - directives網羅完全化・コメント明確化
kiyotis May 29, 2026
56d74b3
docs(S-6): チェックファイル作成・steering更新
kiyotis May 29, 2026
de0c61f
fix(S-6): スキーマの length 型定義を実装・設計書に合わせて修正
kiyotis May 29, 2026
4f3234d
docs(steering): S-6完了・再開手順を V-1 に更新
kiyotis May 29, 2026
1f4ac86
fix(QuotationTrimmer): null ガードを削除(NTF設計方針に合わせ呼び出し側責任に統一)
kiyotis May 29, 2026
a861b8f
docs(steering): スキーマをリンクに修正
kiyotis May 29, 2026
750e800
docs(schema): description から内部実装メモを削除しユーザー向けに整理
kiyotis May 29, 2026
4b26a71
docs(steering): 再開手順に前回セッション対応事項を追記
kiyotis May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,7 @@ buildNumber.properties
# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored)
!/.mvn/wrapper/maven-wrapper.jar

http_dump/
http_dump/

# JaCoCo coverage data
jacoco.exec
36 changes: 36 additions & 0 deletions docs/pr75/adrs/ADR-001-yaml-library.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# ADR-001: YAMLパーサライブラリの選定

- **日付**: 2026-05-20
- **ステータス**: 更新済み(2026-05-27 変更: SnakeYAML 2.6 → SnakeYAML Engine 3.0.1 に切替)

## コンテキスト

`YamlTestDataReader` を実装するにあたり、YAMLファイルをJavaオブジェクト(Map/List)に変換するライブラリが必要になった。
既存の `pom.xml` にはYAML系ライブラリが存在しない。

## 検討候補

| ライブラリ | ライセンス | JARサイズ | CVE安全性 | 速度 | 備考 |
|---|---|---|---|---|---|
| SnakeYAML 1.x | Apache 2.0 | 340 KB | 危険(CVE-2022-1471 等複数) | 基準 | 新規採用禁止 |
| SnakeYAML 2.x | Apache 2.0 | 340 KB | 2.0 で全CVEに対処済み。危険APIは残るが使用しない限り安全 | 基準 | 最新 2.10 |
| SnakeYAML Engine 3.x | Apache 2.0 | 95 KB | 危険な機能が設計上存在しない(CVEゼロ)。YAML 1.2 Core Schema でデフォルト動作 | 約10〜20%速い | 最新 3.0.1(2025) |
| Jackson YAML | Apache 2.0 | 重い | SnakeYAML依存 | — | Jackson本体も必要で過剰 |

## 決定

**`org.snakeyaml:snakeyaml-engine:3.0.1`** を採用する。

## 理由

当初は `org.yaml:snakeyaml:2.6` を採用していたが、以下の問題が顕在化したため切り替えた。

- **YAML 1.1 Norway Problem**: SnakeYAML 2.x はデフォルトで YAML 1.1 仕様に従い、`no`/`yes`/`on`/`off` を Boolean として解釈する。テストデータの `no:` キーが `false` に変換されるという根本的なバグが発生した
- **SnakeYAML Engine はデフォルトで YAML 1.2 Core Schema**: `no`/`yes`/`on`/`off` は文字列として扱われ、Norway Problem が設計上発生しない
- **使用 API は1ファイルに完全隔離**: `YamlLoader.java` のみで使用し、`SafeConstructor` → `Load(LoadSettings)` の等価な API 移行が可能
- JARサイズが小さく(95 KB)、CVE がゼロの点でも SnakeYAML Engine が優る

## 影響

- `pom.xml` の依存を `org.yaml:snakeyaml:2.6` → `org.snakeyaml:snakeyaml-engine:3.0.1` に変更する(スコープは ADR-002 参照)
- `YamlLoader.java` の API を `Yaml(SafeConstructor)` から `Load(LoadSettings)` に移行する
41 changes: 41 additions & 0 deletions docs/pr75/adrs/ADR-002-yaml-dependency-scope.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# ADR-002: snakeyaml-engine の依存スコープ

- **日付**: 2026-05-20
- **ステータス**: 承認済み

## コンテキスト

ADR-001 で選定した `snakeyaml-engine` を `pom.xml` に追加する際のスコープを決定する。
このリポジトリ(`nablarch-testing`)は複数のプロジェクトから依存されるテストサポートライブラリであり、
YAMLテストデータを使わないプロジェクトにも snakeyaml-engine が推移的に入るかどうかが論点になった。

## 検討候補

| スコープ | YAMLを使わないPJへの影響 | 構造変更 | 利用者の手間 | POIとの一貫性 |
|---|---|---|---|---|
| `compile`(省略) | 全PJに自動で入る | なし | なし | ○(POIと同じ) |
| `optional` | 入らない(使う側が明示宣言) | なし | 使う側が pom に1行追加 | △(POIと異なる) |
| モジュール分割(同リポジトリ) | 入らない | pom.xml 大改造・CI変更 | 使う側が明示宣言 | — |
| リポジトリ分割(別リポジトリ) | 入らない | 別リポジトリ作成・リリース管理2倍 | 使う側が明示宣言 | — |

## 決定

**`compile`(スコープ省略)** で追加する。POI と同じ扱い。

```xml
<dependency>
<groupId>org.snakeyaml</groupId>
<artifactId>snakeyaml-engine</artifactId>
<version>2.9</version>
</dependency>
```

## 理由

- 既存の `poi-ooxml` がスコープ省略(compile)で追加されており、それと一貫した方針を採る
- 構造変更なしで済む
- モジュール分割・リポジトリ分割は管理コストが大きく今回の規模に見合わない

## 影響

- `nablarch-testing` に依存する全プロジェクトに `snakeyaml-engine` が推移的に入る(POI と同様)
179 changes: 179 additions & 0 deletions docs/pr75/checks/C-1-0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
# C-1-0 調査結果: 中間データモデルと NTF 整合性担保方式

## 1. PoiXlsReader データフロー

### 1.1 インターフェース・クラス構造

```
TestDataReader (interface)
└── PoiXlsReader (implements TestDataReader)
```

`TestDataReader` インターフェースは以下のメソッドを定義する:
- `void open(String path, String dataName)` — ファイル+シートを開く
- `void close()` — シート参照を解放
- `List<String> readLine()` — 1行分のセル値リストを返す
- `boolean isResourceExisting(String, String)` — ファイル存在確認
- `boolean isDataExisting(String, String)` — ファイル+シート存在確認

### 1.2 データ読み取りフロー

`PoiXlsReader.java`:

1. `open(path, dataName)` (行48): `dataName` を `/` で分割し `fileName/sheetName` 形式を解析。`WorkbookFactory.create()` でブックをロード → `book.getSheet(sheetName)` でシートを取得。LRU サイズ1のブックキャッシュ (`bookCache`) を利用 (行159)。
2. `readLine()` (行83): `readOneLine()` を空行をスキップしながら繰り返し呼び出し、非空行を返す。最終行到達時は `null` を返す。
3. `readOneLine()` (行105): POI の `sheet.getRow(rowIdx++)` で行取得 → `row.getLastCellNum()` 分ループし各セルを `cell.toString()` で文字列化。セルが `null` の場合は空文字 `""` を返す (行123)。先頭セルが `//` で始まる場合はその行でループ終了 (行125)。

戻り値は常に `List<String>` — セルの値をすべて文字列に変換したリスト。

### 1.3 セル値の型変換

`PoiXlsReader.java` 行123:
```java
String cellValue = cell == null ? "" : cell.toString();
```

- **null セル**: 空文字 `""` として扱う(null は返さない)
- **数値セル・文字列セル**: POI の `Cell.toString()` を呼び出す。クラス冒頭コメント (行26) に「Excel に記述されたテストデータは、すべて文字列書式となっている必要がある」と明記されており、**数値書式のセルの動作は保証しない**。
- **コメント行**: 先頭セルが `//` で始まる場合は残りセルを読まずにその1セルだけのリストを返す (行125-127)。

---

## 2. BasicTestDataParser データフロー

### 2.1 セクション解析の仕組み

`TestDataParsingTemplate`(抽象クラス)がコア解析ロジックを担う。

**全行読み込みとキャッシュ** (`TestDataParsingTemplate.java` 行128):
- `parse()` メソッドが `reader.open()` → `readTestData()` → `reader.close()` の順で全行を `List<List<String>>` に読み込む。
- `readTestData()` (行165): コメント行 (`//` 始まり) 除外 → `cutComment()` で各行の `//` 以降を切り落とし → `TestDataInterpreter` チェーンを適用 → `Collections.unmodifiableList` でイミュータブル化してキャッシュ。

**セクション識別** (`TestDataParsingTemplate.java`):
- `getDataType(firstCol)` (行230): 先頭セルの文字列を `DataType.values()` の各 `getName()` と前方一致比較。
- 例: `"SETUP_TABLE[case01]=USER"` → `DataType.SETUP_TABLE_DATA`
- どのタイプにも合致しない場合 → `DataType.DEFAULT`(データ行扱い)
- `getTypeValue(line)` (行250): `=` 以降の文字列(テーブル名 / ファイルパス等)を抽出。

### 2.2 生成するデータオブジェクト

| メソッド | 使用パーサ | 生成オブジェクト | DataType |
|---|---|---|---|
| `getSetupTableData()` (行50) | `TableDataParser` | `List<TableData>` | `SETUP_TABLE_DATA` |
| `getExpectedTableData()` (行171) | `TableDataParser` ×2 | `List<TableData>` | `EXPECTED_TABLE_DATA`, `EXPECTED_COMPLETED` |
| `getListMap()` (行60) | `ListMapParser` | `List<Map<String,String>>` | `LIST_MAP` |
| `getSetupFile()` (行67) | `FixedLengthFileParser` + `VariableLengthFileParser` | `List<DataFile>` | `SETUP_FIXED`, `SETUP_VARIABLE` |
| `getExpectedFile()` (行75) | 同上 | 同上 | `EXPECTED_FIXED`, `EXPECTED_VARIABLE` |
| `getMessage()` (行82) | `MessageParser` | `MessagePool` | `MESSAGE` |

**TableData 生成の詳細** (`TableDataParser.java`):
- `onTargetTypeFound(line)` (行89): `getTypeValue(line)` でテーブル名抽出 → 次の1行を `HeaderLine` として読み込みカラム名取得 → `new TableData(dbInfo, tableName, columnNames, defaultValues)` 生成 (行96)。
- `onReadLine(line)` (行79): `header.excludeMarkerColumns(line)` でマーカーカラム (`[...]` 形式) を除外した行を `processing.addRow(row)` で追加。
- `HeaderLine` (行33): マーカーカラム (`[` 始まり `]` 終わりのカラム) を自動除外する。

**DataFile (FixedLengthFile) 生成の詳細** (`DataFileParser.java`):
- ステータスマシン: `READING_DIRECTIVES_AND_NAMES` → `READING_TYPES` → `READING_LENGTHS` → `READING_VALUES` の順に遷移。
- ディレクティブ行 → `currentFile.setDirective()`、フィールド名行 → `fragment.setNames()` / `fragment.setRecordType()`、型行 → `fragment.setTypes()`、長さ行 → `fragment.setLengths()`、データ行 → `fragment.addValue()`。

---

## 3. YamlTestDataParser データフロー

### 3.1 BasicTestDataParser との対応

`YamlTestDataParser.java` は `BasicTestDataParser` を継承し (行32)、`TestDataParser` インターフェースの全メソッドをオーバーライドする。**`setTestDataReader()` は `UnsupportedOperationException` をスロー** (行59) — `PoiXlsReader` を一切使用しない。

返却するオブジェクト型は `BasicTestDataParser` と完全に同一:

| メソッド | 返却型 |
|---|---|
| `getSetupTableData()` | `List<TableData>` |
| `getExpectedTableData()` | `List<TableData>` |
| `getListMap()` | `List<Map<String,String>>` |
| `getSetupFile()` | `List<DataFile>` |
| `getExpectedFile()` | `List<DataFile>` |
| `getMessage()` | `MessagePool` |

### 3.2 YAML → オブジェクト変換の仕組み

**ロード層** (`YamlLoader.java` 行53):
- SnakeYAML Engine の `Load` クラスで YAML ファイルを解析 → `Map<String, Object>` を返す。LRU サイズ8のキャッシュを保持 (`YAML_CACHE`, 行39)。重複キーは `IllegalStateException` (行61)。

**セクションキー** (`YamlSection.java`):
- `DataType` ↔ YAML セクションキーの対応が定数として定義されている (行29-39):
- `SETUP_TABLE_DATA` → `setup_tables`、`EXPECTED_TABLE_DATA` → `expected_tables`、等

**TableData 構築** (`YamlTableDataBuilder.java` 行66):
- `new TableData(dbInfo, tableName, columnNames, defaultValues)` を生成 (行99) — Excel 経路と同じコンストラクタ。
- 行値を `objectToString(rawVal)` → `interpret(strVal, interps)` で変換 (行107-113)。

**型変換** (`YamlSection.java` 行131 `objectToString()`):
- `null` → `null` (RS-03)
- `Boolean` → `"true"` / `"false"` (RS-04)
- 数値 → 数字文字列 (RS-05)
- その他 → `toString()`

**DataFile 構築** (`YamlFileBuilder.java`):
- `FixedLengthFile` または `VariableLengthFile` を生成し、`DataFileFragment` の同一 API (`setRecordType()` / `setNames()` / `setTypes()` / `setLengths()` / `addValue()`) で値を設定 — Excel の `DataFileParser` と同じ fragment 構築 API を使用 (行149)。

---

## 4. 中間データモデル評価

### 4.1 候補A: NTFオブジェクト再利用(TableData / DataFile 等をそのまま使う)

| 評価項目 | 評価 | 根拠(コード箇所) |
|---|---|---|
| DbInfo 依存 | **NG**: 大きな制約 | `TableData` コンストラクタは `DbInfo` を必須引数に持つ (`TableData.java` 行71)。変換ツール単独実行時に DI コンテナ + DB 接続初期化が必要になる |
| `fillDefaultValues()` の破壊的副作用 | **NG**: 致命的リスク | `EXPECTED_COMPLETED` の `TableData` には `fillDefaultValues()` が自動適用される (`BasicTestDataParser.java` 行177)。この処理は `dbInfo.getColumns()` を呼び DB スキーマ由来の全カラムで `columnNames` を上書きする (`TableData.java` 行706-721)。変換後 YAML に「Excel に存在しない DB デフォルト値カラム」が出力されるリスクがある |
| static キャッシュ競合 | **NG**: 設計上の問題 | `TableDataParser.CACHE`、`DataFileParser.cache`、`TestDataParsingTemplate.TEST_DATA_CACHE` はすべて static LRU Map で JVM 全体共有。変換ツールからパーサを直接呼ぶとテスト実行時のキャッシュが汚染される可能性がある |
| TableData の読み出し | 困難 | カラム名は `columnNames` フィールド (行51) に別管理されており、順序付きで列挙するには `getColumnNames()` + `getValue(row, col)` の組み合わせが必要 |

### 4.2 候補B: 独自モデル(BookModel / SheetModel / SectionModel)

| 評価項目 | 評価 | 根拠(コード箇所) |
|---|---|---|
| DB 依存の排除 | **OK**: 完全に排除可能 | 独自 POJO に `DbInfo` を持ち込む必要がない。変換ツールは「テキスト→テキスト」変換として完結できる |
| Excel 構造との対応 | **OK**: 直接対応 | `TestDataParsingTemplate.readTestData()` が返す `List<List<String>>` は 1シート = 複数セクションの構造をそのまま表現しており、SheetModel → SectionModel の階層に自然に対応する |
| YAML との写像 | **OK**: 明確な1対1写像 | `YamlSection.java` のセクションキー定数 (行29-39) と `dataTypeToSectionKey()` (行184) が `DataType` ↔ YAML キーの完全な写像を定義済み。SectionModel が `DataType` を保持すれば YAML 出力コードは既存定数を参照するだけで済む |
| マーカーカラム処理 | **OK**: 仕様共有で整合 | `HeaderLine.java` 行87-96 と `YamlTableDataBuilder.java` 行92-94 が同一条件 (`[` 始まり `]` 終わり) を使用。独自モデルも同一条件を採用することで両経路と整合 |
| null / 空文字の差異 | **OK**: 設計で吸収可能 | Excel の空セル → `""` (`PoiXlsReader.java` 行123) と YAML の null → `null` (`YamlSection.java` 行131) の差異を独自モデルの変換規則として明示できる |
| NTF との疎結合 | **OK**: 意図的に維持 | NTF のパーサ・データクラスに依存しないため、NTF 側のクラス変更の影響を受けない |
| 実装コスト | 追加実装が必要 | BookModel/SheetModel/SectionModel の POJO を新規作成する必要がある。ただしシンプルな値オブジェクトで十分なため複雑度は低い |

---

## 5. 採用案と根拠

**採用案**: 候補B — 独自モデル (BookModel / SheetModel / SectionModel)

**根拠**:

**(1) DbInfo 依存の排除が必須**
`TableData` のコンストラクタは `DbInfo` を必須引数として受け取る (`TableData.java` 行71)。変換ツールは Excel ↔ YAML のテキスト変換であり DB 接続は不要である。候補Aを採用すると、変換ツール実行のためだけに DI コンテナと DB 接続の初期化が必要になる。これはツールの独立性を著しく損なう。

**(2) `fillDefaultValues()` の破壊的副作用リスク**
`EXPECTED_COMPLETED` セクションの `TableData` には `fillDefaultValues()` が `BasicTestDataParser.java` 行177 で自動的に呼ばれ、`columnNames` を DB スキーマ由来の全カラムで上書きする (`TableData.java` 行706-721)。変換ツールが `TableData` を中間モデルとして使うと、変換後の YAML に「Excel ファイルに書かれていない DB デフォルト値カラム」が出力される恐れがある。これは変換等価性の定義(「NTF が読み込んだとき同じデータオブジェクトが生成されること」)を破壊する。

**(3) static キャッシュの競合**
`TableDataParser.CACHE`、`DataFileParser.cache`、`TestDataParsingTemplate.TEST_DATA_CACHE` はすべて static LRU Map として JVM プロセス全体で共有される。変換ツールが NTF のパーサクラスを直接呼び出すと、このキャッシュに変換中のデータが蓄積し、同一 JVM 内で NTF テストを実行した際にキャッシュが汚染される可能性がある。

**(4) 変換の始点データが既に `List<List<String>>`**
`TestDataParsingTemplate.readTestData()` が返す `List<List<String>>` は Excel の行・列をそのまま表現した構造であり (`TestDataParsingTemplate.java` 行165)、独自モデルへの変換は自然に行える。`DataType.getDataType(firstCol)` の判定ロジック (`TestDataParsingTemplate.java` 行230) も独自モデル構築時に再利用できる。

**(5) YAML との写像が `YamlSection` に既存**
`YamlSection.java` のセクションキー定数 (行29-39) と `dataTypeToSectionKey()` (行184) が `DataType` ↔ YAML セクションキーの完全な写像を既に定義している。SectionModel が `DataType` を保持する設計にすれば、YAML 出力コードは既存定数を参照するだけで済み、メンテナンス箇所が集約される。

**整合性担保方法**:

NTF 本体との整合性は以下の方式で保証する。

1. **Excel 読み込みの文字列化は `PoiXlsReader` の仕様に準拠する**: セル値を文字列化する規則(null セル → `""`、文字列書式前提)は `PoiXlsReader.java` 行123 の実装と同一の規則を独自 `XlsFormatReader` に実装することで保証する。`PoiXlsReader` クラス自体を呼び出すかどうかは実装の選択だが、セル変換規則は一致させる。

2. **DataType 識別ロジックは `TestDataParsingTemplate.getDataType()` の仕様に準拠する**: `DataType.getName()` との前方一致判定 (`TestDataParsingTemplate.java` 行230) と同一の判定式を `XlsFormatReader` に実装する。

3. **マーカーカラム除外は両経路と同一条件を使用する**: `[` 始まり `]` 終わり (`HeaderLine.java` 行87-96 / `YamlTableDataBuilder.java` 行92-94) と同一の除外条件を独自モデルのヘッダ解析に適用する。

4. **グループID の書式は `BasicTestDataParser.formatGroupId()` の仕様に準拠する**: `[groupId]` 形式 (`BasicTestDataParser.java` 行253-266) を独自モデルの `groupId` フィールドの正規化規則として明記する。

5. **null / 空文字の正規化を設計書に明記する**: `PoiXlsReader.java` 行123 の実装(`cell == null ? "" : cell.toString()`)に従い、Excel の空セルは空文字 `""` として扱う。YAML 出力時も `""` としてダブルクォート付きで出力する。セル値が文字列 `"null"` の場合のみ YAML のアンクォート `null` として出力する(NTF の `NullInterpreter` が `"null"` 文字列と Java null を等価に扱うため)。この規則を設計書 8.6 節の値変換ルール表として明記する。
Loading