build: 複数スクリプトのビルドを範囲限定・上限付きで並列化する - #52
Conversation
独立PRゲート対象: #52 / head 判定: 阻害事項:
CI は Node.js 22/24 で成功し、署名も成功していますが、上記の仕様・直接利用経路の問題を解消した後に同じ独立ゲートを |
独立PRゲート対象: #52 判定: 阻害事項: なし 仕様適合:
技術品質:
この |
YukiWorks432
left a comment
There was a problem hiding this comment.
追加レビュー
対象: feature/issue-48-parallel-build@4191ddc2dc19c9511e50a82c2f71274d20914fee
判定: FIX_REQUIRED
Rollup の公開 JavaScript APIで対象ごとに独立したビルドを作り、上限付きスケジューラーで並列化し、各 bundle を finally で close() する基本設計は妥当です。maxParallelFileOps は単一ビルド内のファイル操作上限であり、複数ビルドの並列度を制御する用途ではないため、現在の外側のスケジューラーという方向性で問題ありません。
阻害事項は次の2件です。
-
中 — TypeScript の処理範囲が文字列解析の誤検出で広がり得ます(
rollup.config.mjs:267)collectImportDependencyFilesは正規表現でソース文字列を走査していますが、今回その結果を@rollup/plugin-typescriptのincludeに渡したことで、解析の弱点がコンパイル対象の分離に直結しました。たとえば文字列リテラル内のimport "../sibling"を依存として誤検出すると、別スクリプトのファイルが TypeScript のプログラムへ混入します。また、文字列内のコメント記号によって実際の import を取りこぼす経路もあります。Issue #48 の「対象スクリプトと静的相対依存だけを処理する」という分離契約を満たすには、TypeScript の構文解析(ts.preProcessFile/ AST)とts.resolveModuleNameで依存を収集し、import 風文字列・コメント記号を含む文字列の回帰テストを追加してください。 -
中 — ハッシュ履歴の保存失敗時に既存内容を壊し得ます(
rollup.config.mjs:332)fs.writeFileSync(BUILD_HASH_FILE, ...)は既定のwフラグで既存ファイルを先に切り詰めます。ディスク容量不足や途中の書き込み失敗ではコマンド自体は失敗しても、既存の履歴が空または部分書き込みになり得るため、「失敗時は既存のハッシュ履歴を変更しない」という受け入れ条件を満たしません。同一ディレクトリの一時ファイルへ完全に書き込んだ後で rename/replace し、失敗時は一時ファイルだけを掃除する方式にしてください。書き込み失敗を注入し、既存ファイルがバイト単位で不変であることを確認するテストも必要です。
参考: Rollup JavaScript API、Rollup maxParallelFileOps、TypeScript Compiler API、Node.js fs.writeFileSync
この判定は上記 head SHA にのみ適用します。
Issue
Refs #48
このPRは配布用の
developを基点とし、既定ブランチmainへのリリース統合前の候補です。そのため、今回のマージだけではIssue #48を自動終了しません。リリース統合時に受け入れ条件を再確認して終了します。変更範囲
pnpm build、--all、--app、既存のアプリ別ビルド別名を専用ビルドスクリプトへ切り替え@babel/plugin-transform-classesを直接の開発依存へ追加対象外
pnpm watchの並列化・再設計検証
pnpm install --frozen-lockfile --strict-peer-dependencies: 成功pnpm lint: 成功pnpm test: 成功(18件)pnpm build --all: 成功pnpm exec prettier --check .: 成功git diff --check: 成功Validation
gh signoffon06c23906646c0de43eddd022a17bdde49fd7eac3: successgh signoff status --branch develop: ✓ signoff06c23906646c0de43eddd022a17bdde49fd7eac3: success06c23906646c0de43eddd022a17bdde49fd7eac3)版・リリースへの影響
版番号、タグ、リリース設定は変更していません。単発ビルドの実行経路と開発依存関係を変更します。
残存リスク
実行時間とメモリ使用量は環境差があります。CIでは固定の速度条件を置かず、並列上限、成果物一致、失敗時の履歴整合性を検証します。
再開点
追加レビューの2件(依存関係の構文解析、ハッシュ履歴の安全な保存)を修正し、最新先端で独立レビューREADYを取得済みです。マージ後はIssue #48を開いたまま、
developからmainへのリリース統合時に受け入れ条件と終了状態を確認します。