概要

項目内容
案件IDMAS-116
カテゴリDevOps
PhaseP1
優先度★★★
所要時間30分
対象ファイルCLAUDE.md(ガイドライン追記)
docs/_internal/data_maintenance.md(テンプレート追記)

目的

データ整備(マスタ追加・DDLスキーマ変更等)を800_ops/配下のコードとして記述し、dev/prodの両環境で安全に実行する仕組みを確立する。

現在のステータス: 実質パターン確立済み

既存の3ファイルが事実上のマイグレーション基盤として機能している。

ファイル関数名冪等性チェックログ表示
804_migration_d01_d03.jsmigrationD01D03()主科目コードの重複チェックalert + logInfo
805_migration_d04_d06.jsmigrationD04D06()説明列の入力済みチェックalert + logInfo
806_cleanup_empty_rows.jscleanupEmptyRows()空行なしなら何もしないalert + logInfo

メニュー登録も完了(101_sys_config.js L347-355: 「🔧 マイグレーション」メニュー)。

確立済みパターン

function migrationXXX() {
  const FUNC = '関数名';
  try {
    // 1. シート取得
    var sheet = Utils.getSheetByKey('KEY', 'fallback_name');
    // 2. 既存データ読み込み(冪等性チェック用)
    var data = sheet.getDataRange().getValues();
    // 3. 冪等性チェック付きで変更を適用
    var added = 0, skipped = 0;
    for (各変更) {
      if (既に存在) { skipped++; continue; }
      // 変更適用
      added++;
    }
    // 4. 結果サマリーを表示
    var summary = '追加: ' + added + '件 / スキップ: ' + skipped + '件';
    Utils.logInfo(FUNC, summary);
    SpreadsheetApp.getUi().alert('マイグレーション完了', summary, SpreadsheetApp.getUi().ButtonSet.OK);
  } catch (e) {
    Utils.logError(FUNC, e);
    SpreadsheetApp.getUi().alert('エラー', e.message, SpreadsheetApp.getUi().ButtonSet.OK);
  }
}

残作業: ガイドラインの明文化

パターンは確立済みだが、命名規則・テンプレート・運用手順がドキュメント化されていない。

明文化すべき内容

項目ルール
ファイル命名8XX_migration_dNN_dNN.js(案件ID範囲を含める)
関数命名migrationDNNDNN()(ファイル名と対応)
冪等性必須。「既に存在したらスキップ」のチェックを含める
ログ出力Utils.logInfo + SpreadsheetApp.getUi().alert の両方
メニュー登録101_sys_config.js の「🔧 マイグレーション」メニューに追加
実行順序dev で実行・検証 → npm run push:prod → prod で実行
実行済み記録データの存在チェックで冪等性を担保(別途スタンプは不要)

修正方針

CLAUDE.md への追記

GAS ファイル番号体系」セクションの 800_ops/ の説明に、マイグレーションスクリプトのガイドラインを追記。

data_maintenance.md へのテンプレート追記

新規マイグレーション案件を作成する際のテンプレートを追記。

注意事項

  1. 804-806のファイル番号は既に使用済み。次のマイグレーションは807から
  2. prod デプロイ時に 900_test/ は自動削除されるが、800_ops/ は残る。マイグレーションスクリプトは prod にもデプロイされる
  3. setupAllSchemas と マイグレーションの実行順序に依存関係がある場合はドキュメントに明記する

人間が検討すべき事項

  • 実行済みマイグレーションの記録方法(03_sys_params に適用済みリストを保持するか): 現行は冪等性チェックのみで十分に機能しており、追加記録は不要と判断
  • ロールバック手順の要否: 現状の規模では手動対応で十分

実装プロンプト(Claude Code 用)

あなたはGAS会計システム(bizlp-gas-accounting)のシニア開発者です。
案件 S-44「マイグレーションスクリプト基盤」のガイドライン明文化を行ってください。

## 実行前タスク

以下のファイルを読み込んでください:
1. `800_ops/804_migration_d01_d03.js` — 確立済みパターンの参考実装
2. `800_ops/805_migration_d04_d06.js` — 同上
3. `800_ops/806_cleanup_empty_rows.js` — 同上
4. `100_config/101_sys_config.js` — L347-355のマイグレーションメニュー登録
5. `CLAUDE.md` — 「GAS ファイル番号体系」セクション
6. `docs/_internal/data_maintenance.md`
7. `docs/dev/dev_mas-116_migration_framework.md`

## 実装内容

### A: CLAUDE.md への追記

「GAS ファイル番号体系」の800_ops/の行の後に、以下のガイドラインを追記:

- マイグレーションスクリプトの命名規則(ファイル名・関数名)
- 冪等性の必須要件
- ログ出力パターン(logInfo + alert)
- メニュー登録手順
- 実行手順(dev → 検証 → push:prod → prod実行)

### B: data_maintenance.md へのテンプレート追記

「マイグレーションスクリプト テンプレート」セクションを追加し、新規スクリプト作成時のコードテンプレートを記載。

## 制約
- 既存の804-806ファイルは変更しない
- CLAUDE.md の既存セクション構造を維持

推奨実行モデル

工程推奨モデル理由
仕様書作成(本ドキュメント)Claude Opus 4.6既存パターンの分析とガイドラインの体系化
実装Claude Haiku 4.5ドキュメント追記のみ。コード変更なし

変更履歴

日付変更内容
2026-04-14初版作成