AI DEEP LIVE

Claude Code × GAS を
仕事」にする

動くまでの作り方と、人の業務へ載せる前の確認

kimura

WHO

GASで業務システムを作って、
会社に納品しています

kimura

エンジニアではありません
GASと、その周りだけでやっています。

作ったものを配ったり、noteに書いたりもしています。

GAS Google Workspace Chrome拡張 note

TODAY

AIでGASが書ける」は、
もう知っている前提で話します

今日は、その先。
書いたものを、人の業務に載せるところ

退勤の打刻が、
止まりました。

夕方6時 / 35人ぶん / 復旧まで1時間 ── 原因は、自分が書いたコードではありませんでした

MAP

今日やること

1

依頼を、そのまま渡す
仕様書なしの1文から

2

出す直前に確認する
ここで止まります

3

止まった箇所を直す
Claude Code に投げる

4

もう1回確認して出す
それでやっと納品

見ていてほしいのは、赤が減っていくところです。
全部消えたときに、最後に何が残るか。

01

まず、依頼を
そのまま渡します

依頼の1文を、そのまま渡すところから

REQUEST

依頼は、これだけ

朝、みんながタブレットで出勤を押して、帰るときに退勤を押して、
記録がスプレッドシートに残るようにしてほしい。

仕様書はありません。実際こう来ます。
この粗さのまま、こちらで2つだけ決めて渡します。

※ 実際に納品しているものとは別物で、これは事前に作ってある簡単なものです。

PROMPT

投げるのは、この3行

工場の出退勤を記録するGASのWebアプリを作ってください。
タブレットに置いて、名前をボタンで選んで「出勤」「退勤」を押すだけの画面に。
記録はスプレッドシートに、日付・氏名・区分・時刻の4列で残してください。

依頼に無かったことを、2つだけ足しています。
名前はボタンで選ぶ/記録する列は4つで固定
どちらも、あとで集計する人が困らないためです。

HOW TO ASK

頼むときに、
こちらが決めていること

01

どこに何を書くか

シート名と列の並びは自分で決める。言わないと勝手に列が増える。

02

入力は選ばせる

打たせると表記がぶれる。集計する側が困る。

03

差し替えるものは先頭へ

宛先とID。差し替え漏れが、いちばん事故になる

逆に、色もボタンの位置も何も言っていません

動きました

PROMPT 2

依頼は、ここから増えます

同じアプリに、事務所のPCで開く管理画面を足してください。
URLの末尾に ?view=admin を付けたときだけ出す形に。
上に「いま出勤中」「本日の出勤者数」の2つの数字を出して、
一覧には出勤時刻・退勤時刻・勤務時間を並べてください。

打刻は押した人を記録できます。
でも「押し忘れた人」は分かりません。

事務所の画面

?view=admin ── 同じアプリの、もう1つの顔

画面が2つになりました。

ただ、このままでは
渡せません

02

渡す前に、
何を確認しているか

動いたものを、そのまま渡せるか

WHY NOT

いまは、自分のテスト用に
繋がっています

いまの状態

自分の環境を向いている

記録先は検証用のスプレッドシート
自分が試すための、空のシートです。

お客さんに渡すには、本番のシートに差し替えないといけません

差し替えを間違えると

本番に混ざる

テストで押した打刻が、本物の勤怠に混ざる

逆に本番を向けたままテストを押すと、実在の社員の勤務時間が1件増える。給与の計算に乗る。

気をつければいい」では、
漏れます

自分が、漏らしました。

TOOL

やっている確認を、
そのままスキルにしました

スキル=Claude Code に渡す手順書。ファイルを1つ置くと、一言で呼べるようになります。

本番のシートを向いているか
トリガー(決まった時刻に勝手に動く設定)は確認したか
戻す先のバージョンは決まっているか
バックアップは取ったか

これまでは毎回、手でやっていました。
ただ急いでいるときほど飛ばすので、正直、無理がありました。

作ったばかりなので、これから自分の仕事にも入れていくところです。

出す直前のつもりで、
走らせます

「本番に出す前に確認して」── 読み取り専用。何も変更しません

RESULT

止まりました。赤が6つ

  [PASS] TARGET_ENVIRONMENT: 本番反映用の設定です。
  [PASS] RELEASE_ACK: 本番反映の明示確認があります。
  [PASS] PRODUCTION_SCRIPT_ID: 本番scriptIdが設定されています。
  [PASS] TEST_SCRIPT_ID: 検証用scriptIdが設定されています。
  [PASS] SCRIPT_ID_SEPARATION: 本番と検証のscriptIdは分かれています。
  [PASS] DEPLOYMENT_ID: 本番deploymentIdが設定されています。
  [PASS] ROLLBACK_VERSION: ロールバック先はversion 1 です。
- [STOP] CLASP_SCRIPT_ID: .clasp.json が検証用scriptIdを指しています。
  [PASS] REQUIRED_FILE: 必須ファイルを確認しました: .clasp.json
  [PASS] REQUIRED_FILE: 必須ファイルを確認しました: appsscript.json
- [STOP] MANUAL_CHECK: 手動確認が未完了です: scriptPropertiesConfirmed
- [STOP] MANUAL_CHECK: 手動確認が未完了です: triggersConfirmed
- [STOP] MANUAL_CHECK: 手動確認が未完了です: backupCreated
- [STOP] MANUAL_CHECK: 手動確認が未完了です: productionWindowApproved
  [PASS] SOURCE_FILES: 4ファイルを走査します。
- [STOP] TEST_DATA_REFERENCE: 検証用Spreadsheet IDが残っています: コード.gs
  [PASS] PRODUCTION_DATA_REFERENCE: 本番用Spreadsheet IDをソース内で確認しました。
  [WARNING] GIT: Gitリポジトリではないため、未コミット変更を確認できません。
  SUMMARY PASS=11 WARNING=1 STOP=6

3 KINDS

赤の中身は、3種類あります

1件

コードの問題

検証用のスプレッドシートIDが残っている。
中身を直せば消える

1件

接続先の設定

.clasp.json が検証用を指している。
コードではなくどっちに送るかの話。

4件

人にしか分からない

設定は入っているか。トリガーは動いているか。バックアップは取ったか。
いま本番に出していい時間か

3つ目は、コードを読んでも分かりません

03

直して、
また確認する

ここからライブです

PROMPT

Claude Code に投げる文

STOP になっているものを直してください。

同じ画面で走らせたので、どのSTOPかは言わなくても伝わります
ファイル名も行も、こちらが調べ直さなくていい。

PROGRESS

赤が減っていきます

6

走らせた直後

4

機械が直した

1回頼んで、消えたのは2つだけです。
残りの4つは、頼んでも消えません。

HUMAN

ここから先は、
機械には分かりません

手元のチェック表に、自分で印を付けます。付けるまで、確認は通りません。

設定

本番の値が入っていますか

バックアップ

取りましたか

トリガー

確認しましたか

いまの時間

出していい時間ですか

「自分でチェックを入れるなら意味なくない?」と思うかもしれません。
チェックを入れるまで、先に進めない。そこが仕掛けです。急いでいるときほど、こういうのを飛ばすので。

0

残ったのは、全部、人が決めることでした

作るのに10分かからなかったものを、
出すのに、これだけやっています。

作るところより、
こっちが「仕事」です。

検査を走らせた
コードのIDを本番へ直した
接続先を本番へ向けた
バックアップを取った
トリガーと設定を確認した
出していい時間か決めた
もう1回、検査した

NOT COVERED

ゼロになっても、見ていないもの

権限

誰が開けるか

現場のタブレットはログインなしで開ける設定。同じ設定で全員の勤務時間が見える画面を出したら事故。ログアウトして自分で開いて確かめる

データ

中に何が入っているか

どのシートを向いているかは見る。中身は見ていない。テストで入れた行は自分で消す。

失敗

失敗したときの見え方

打刻が失敗したとき、押した人の画面に何も出ないともう1回押される。押した分だけ打刻が増える。

既存業務

紙のタイムカードをいつ止めるか

両方やる期間を作るのか。これはこちらが決めることではない

04

なぜ、こんな面倒なことを
しているのか

ここからはツールが無くても持ち帰れる話です

RISK

怖いのは「間違えたこと」より
戻せないこと

軽いさっきの、テストの打刻が混ざる消せる
重いさっきの、本物の勤務時間が増える謝れば済む
最悪「前の状態に戻して」と言われて、どのバージョンに戻せばいいか分からない戻せない

データも動いているので、時間が経つほど戻せなくなります

火事を出さない話ではなく、出口を先に確認しておく話です。

SCOPE

追加要望は、断るんじゃなくて
区切る

納品が近づくと、ほぼ必ず「ついでにこれもできない?」が来ます。
断ると角が立つし、受けると終わらない

それを今の分に入れると確認を全部やり直しになるので、いったんここまでで出させてください。
そのあと、次の分として見積もります。

先に「今回はここまで」を紙にしておく。画面の一覧と、やることリストで足ります。
それがあるだけで、追加要望の話が「交渉」から「確認」に変わります。

AFTER

作ってからの方が、長い

作る1週間
動く1年

途中で必ず「直してほしい」が来ます。

コードはこちらで直します。
反映は向こうに押してもらいます

納品のゴールは「動くこと」ではなく、自分が抜けた後も回ることだと思っています。

LINKS

続きは、こちらで