GASの開発でclaspを使う際の注意
GAS環境で動くLINE BOTを開発した時に、ちょっと詰まったのでメモ。
Google Apps Scrtipt(以下、GAS)の開発で使える clasp というCLIツールがあります。
通常GASでの開発はHEAD版を用いて、コードの更新がリアルタイムで反映されるものを使います。
Claude CodeをはじめとしたAI環境で開発を進めると、当然それを前提にコードの改修などを進められるのですが…
なかなか思ったような挙動になりません。
解決自体はすぐにしたのですが、また同じことを繰り返しそうなのでココに残します。
LINE BotのようなWebhookを使ったアプリケーションにはHEAD版を使えない
HEAD版は、実行権限/アクセス権限ともにオーナーしか付与されません。
Webhookを使う場合は、アクセス権限を「全員」にしなくてはならないので、HEAD版で開発を進めている限りLINEからは利用できません。
claspはデフォルトでタイプを「ライブラリ」にしてデプロイする
$ clasp deploy
とした際に、タイプを「ライブラリ」としてデプロイします。
このタイプはデプロイ後に変更できないので、再度「ウェブアプリ」としてデプロイしなおす必要があります。
どんだけ push して deploy しても反映されないわけですね。
結論:Botの制作にGASを使う場合は手動デプロイが必須
一応、なんだか面倒なステップを踏めば出来ない事もないようですが……
基本的には clasp を使って Botの開発は出来ないと思っておいたほうが間違いないでしょう。
解決策:デバッグ用ドライバ+手動デプロイ方針に変更
今回私の場合は、LINEメッセージの送受信を開発環境化で行えるデバッグ用のgsファイルを作成。
デプロイに持っていく前に、機能の大部分をテストできる環境を作りました。
Claude Codeなどの環境が出来たことで、要件定義さえしっかりしておけば、こういう手間がなくなったのも魅力の1つですね。
もう一つ、デプロイの問題は最終的に完全手動でコード反映&デプロイする事にしました。
いちいち面倒な事を気にするのはうんざりです。
私は CLAUDE.md に次のように追加しました。
## 開発制約・前提条件
### ⚠️ 重要な開発制約
- **clasp deploy絶対禁止**: ライブラリとしてデプロイされWebhook機能が無効化
- **HEAD版使用不可**: 外部アクセス権限を持たせられない
- **手動デプロイ必須**: ブラウザエディタから「デプロイ → 新しいデプロイ → ウェブアプリ」:
### 変更ファイルの出力
すべてのファイル変更を行った後、**最後に以下の形式で「更新されたファイル一覧」を出力してください**
- 相対パスで書いてください
- 出力位置は、すべての変更の**一番最後**
- ファイル数が多い場合も省略せず、すべて列挙すること
- 「ファイルの差分内容」ではなく、「ファイル名一覧」のみを記載してください
- この出力は、手動で差分を確認・レビューする際に活用されます。
実際結構面倒くさいんで、CLIだけで簡潔するといいのですが……
もし解決方法があれば、どなたかご教示ください🙇