最終更新: 2026/06/22 18:56
MAS-195: clasp push 前の自動リントチェック(pre-push フック)
概要
| 項目 | 内容 |
|---|---|
| 案件ID | MAS-195 |
| カテゴリ | DevOps |
| Phase | P1 |
| 優先度 | ★★★ |
| 所要時間 | 30分 |
| 対象ファイル | package.json, 新規スクリプト |
| 前提案件 | MAS-096(clasp push ファイル混入防止) |
目的
MAS-096 の恒久対策として、npm run push:dev / npm run push:prod の実行前に自動チェックを行い、非GASファイルの混入や構文エラーを検出してデプロイ事故を未然に防止する。
実装方針
チェック項目
- 非GASファイル検出: GASソースディレクトリ(
000_infra/〜900_test/)以外に.jsファイルが存在しないことを確認 - 構文チェック: 全GASファイルに対して
node --check相当の構文検証(※GASはES2019なので完全な互換性はないが、明らかな構文エラーは検出可能) - .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-15 | MAS-096との統合実装プロンプトへの参照を追加。推奨実行モデルを追加 |