前回の振り返り
【第3回】ではGitを紹介した。今回は影武者システムの原点、Google Apps Script(GAS)の話。
Google Apps Scriptとは ― 超ざっくり説明
GAS = Googleが提供する無料のプログラミング環境。
Googleスプレッドシート、Gmail、Googleドライブなど、Googleのサービスをプログラムで操作できる。しかもブラウザだけで書いて動かせる。インストール不要。
影武者システムは、最初はGASだけで作っていた。スプレッドシートに授業データを入れて、GASで自動処理して、PDFを生成して、メールで送る。これが全部Googleの中だけで完結する。
なぜ必要か ― 未経験者にとって最高の入口
プログラミング未経験者がいきなり「サーバーを立てて」「データベースを用意して」と言われても無理だ。
GASなら:
- サーバー → Googleが用意してくれる(無料)
- データベース → スプレッドシートで代用できる
- 認証 → Googleアカウントで完結
- メール送信 → GmailのAPIが使える
つまり、面倒なインフラを全部Googleに丸投げできる。
claspとは ― GASをPCから管理するツール
GASはブラウザのスクリプトエディタで書けるが、これだと不便なことがある。
- ファイルが増えると管理しづらい
- Gitで履歴管理できない
- Claude Codeから編集できない
そこで**clasp(Command Line Apps Script Projects)**の出番。claspを使うと、GASのコードをPC上のファイルとして管理できる。
ブラウザのスクリプトエディタでポチポチ編集。ファイルが増えると迷子。履歴管理なし。Claude Codeが触れない。
PCのフォルダにGASのコードが並ぶ。Gitで履歴管理。Claude Codeが直接編集してclasp pushで反映。
インストール方法
claspはnpmで入れる(Node.jsが必要。第2回参照)。
npm install -g @google/clasp
初回はGoogleアカウントでログインする:
clasp login
# ブラウザが開くので、Googleアカウントで許可する
自分の使い方 ― push と pull の2コマンド
claspで日常的に使うのは2つだけ。
# PCのコードをGASに反映する
clasp push
# GAS側の変更をPCに取り込む
clasp pull
自分の開発フローはこう:
- Claude Codeに「この機能を追加して」と指示
- Claude CodeがPC上のGASファイルを編集
clasp pushでGASに反映- GAS側でテスト実行
clasp push はPC上のコードでGAS側を上書きする。ブラウザのスクリプトエディタで直接編集した内容がある場合、先に clasp pull でPCに取り込んでおかないと消える。自分は何度かやらかした。
影武者システムではGASプロジェクトを3つ運用している。購入者ごとにセットアップ用のGASが作られる仕組みで、claspなしでは到底管理できなかった。
実際にGASで何を動かしているか
「無料のプログラミング環境」と言っても、実際どこまでのことができるのか。自分がGASで動かしているものを全部見せる。
| プロジェクト名 | 何をしているか |
|---|---|
| 影武者コア | 家庭教師の勤怠記録・請求書PDF生成・保護者メール通知 |
| 影武者サーバー | 購入者のGASコードをリモート更新する仕組み |
| 影武者セットアップ | 購入者のGoogleアカウントに自動で環境構築 |
| クロードメール | Gmailを監視→AIが自動返信。Drive保存・ファイル共有も |
| クロードDrive | Google Driveへのファイルアップロード・自動配信 |
| 週間模試 | 中学5教科の模擬試験を自動生成→受験→採点 |
| 個人会計 | Zaim API連携の複式簿記・青色申告決算書の自動生成 |
7つのGASプロジェクトが同時に稼働している。 しかも全部無料。
特に「クロードメール」は面白い仕組みで、Gmailに [Claude] というプレフィックス付きのメールが届くと、GASがそれを検知して、Claude Code CLIに処理を渡す。AIがメールを読んで返信を作成し、GAS経由でGmailから送信する。AIのメール窓口をGASで作っているわけだ。
「個人会計」は、家計簿アプリZaimのAPIからデータを自動取得して、スプレッドシート上で複式簿記の仕訳を自動生成する。確定申告の青色申告決算書まで自動で作れる。freee不要。
clasp運用のリアル ― 複数アカウントの罠
1つだけ、実運用で引っかかるポイントがある。複数のGoogleアカウントでclaspを使い分ける場面だ。
自分は事業用と個人用の2つのGoogleアカウントでGASを運用している。claspのログイン情報は ~/.clasprc.json というファイルに保存されるのだが、同時に1アカウントしかログインできない。
解決策はシンプルで、アカウントごとにバックアップファイルを作って、切り替える時にコピーする。
# 事業用アカウントの作業をする時
cp ~/.clasprc_business_backup.json ~/.clasprc.json
# 個人用アカウントの作業をする時
cp ~/.clasprc_personal_backup.json ~/.clasprc.json
地味だけど、これを知らないと「clasp pushしたのに別のアカウントに反映されてた」という事故が起きる。実際に何度かやらかした。
clasp pushする前に必ず確認:
- 今どのアカウントでログインしてるか(
~/.clasprc.jsonの中身) - 対象プロジェクトのScript IDが合っているか(
.clasp.jsonを確認) - clasp pull で最新を取り込んだか(GAS側の変更を上書きしないように)
次回予告
GASは素晴らしい入口だが、使い込むと限界が見えてくる。次回は、その限界を突破するために導入したCloudflare Workersとwranglerを紹介する。
第2回:Node.js & npm
第3回:Git
第4回:Google Apps Script & clasp
第5回:Cloudflare Workers & wrangler
第6回:Stripe CLI
第7回:Python & 便利ライブラリ
第8回:まとめ ― 全体像と選び方
家庭教師の勤怠管理、まだ手作業でやってませんか?
影武者システムを見てみる