概要

項目内容
案件IDMAS-195
カテゴリDevOps
PhaseP1
優先度★★★
所要時間30分
対象ファイルpackage.json, 新規スクリプト
前提案件MAS-096(clasp push ファイル混入防止)

目的

MAS-096 の恒久対策として、npm run push:dev / npm run push:prod の実行前に自動チェックを行い、非GASファイルの混入や構文エラーを検出してデプロイ事故を未然に防止する。

実装方針

チェック項目

  1. 非GASファイル検出: GASソースディレクトリ(000_infra/900_test/)以外に .js ファイルが存在しないことを確認
  2. 構文チェック: 全GASファイルに対して node --check 相当の構文検証(※GASはES2019なので完全な互換性はないが、明らかな構文エラーは検出可能)
  3. .claspignore 整合性: .claspignore に除外パターンが漏れていないことを確認

実装案

scripts/pre-push-check.sh を新規作成:

#!/bin/bash
# GASソースディレクトリ以外の .js ファイルを検出
stray_files=$(find . -maxdepth 1 -name "*.js" -not -name "appsscript.json" 2>/dev/null)
if [ -n "$stray_files" ]; then
  echo "ERROR: ルート直下に非GASの .js ファイルが存在します:"
  echo "$stray_files"
  echo "clasp push を中止します。.claspignore に追加するか、ファイルを移動してください。"
  exit 1
fi
echo "OK: 非GASファイルなし"

package.json の npm scripts を更新:

"push:dev": "bash scripts/pre-push-check.sh && bash scripts/clasp-switch.sh dev && clasp push",
"push:prod": "bash scripts/pre-push-check.sh && bash scripts/clasp-switch.sh prod && clasp push"

関連ドキュメント

仕様書関連箇所
6.0 NFR一覧デプロイの安全性・CI/CDに関する非機能要件
D.2 MAS-096 clasp push ファイル混入防止本案件の前提となる障害対応
2.1 タブナンバリングGASソースディレクトリの命名規則(チェック対象の定義)

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

MAS-096 と統合して一括実装する。統合プロンプトは MAS-096 開発仕様書 の「実装プロンプト」セクションを参照。

推奨実行モデル

工程推奨モデル理由
全工程Claude Sonnet 4.6.claspignore の否定パターンの動作検証とフォールバック判断が必要

人間が検討すべき事項

なし(開発ツール設定のみ。即対応可)


変更履歴

日付変更内容
2026-04-14 10:33初版作成
2026-04-15MAS-096との統合実装プロンプトへの参照を追加。推奨実行モデルを追加