毎朝15分の手作業、AIに丸ごと押しつけた話
毎日のコピペ・ファイル整理・点検作業を“自分専用”に自動化する実践記。コピペで動くスクリプトと、僕がやらかした失敗から学ぶ安全な任せ方。
毎朝、コーヒーを淹れる前に同じ作業をしていました。
フォルダを開いて、昨日のログを確認して、テストが落ちてないか目視して、気になる差分をメモ帳に貼る。一つひとつは1分。でも全部やると、コーヒーが冷める頃にようやく終わる。毎日です。土日以外、ずっと。
ある朝ふと思ったんです。「これ、僕がやる必要ある?」と。
結論から言うと、なかった。今そのルーティンは、僕が顔を洗っている間に小さなスクリプトが終わらせています。しかも僕より丁寧に。今日はその話を、コードまで全部見せながら書きます。
「自動化」って、開発者だけの話じゃない
自動化と聞くと、CI/CDとかデプロイパイプラインとか、いかついものを想像しますよね。でも僕が言いたいのはもっと地味な話です。
あなたが毎日ぼんやり手でやっている、あのコピペ。あれを肩代わりさせる。
たとえばこんなの。複数のファイルから数字を拾って表にまとめる。決まったフォーマットでメモを整える。昨日と今日で何が変わったか並べて見る。古くなったメモを洗い出す。どれも「考える」より「目と指を動かす」作業です。人間がやるとミスるし、飽きるし、何より時間が溶ける。
ここでAI、具体的にはClaude Codeが効きます。ポイントは一つだけ。AIに全部を丸投げしないこと。「いい感じにやっといて」は事故のもとです(後で僕の失敗談で証明します)。代わりに、読む範囲・やること・触っちゃダメなものを先に決めて、繰り返し部分だけ任せる。これだけで世界が変わります。
ちなみにここでよく出てくる「harness(ハーネス)」という言葉。直訳すると馬具ですが、要はAIを暴走させないための外枠のことです。何を入力し、どこまで許し、どう記録し、ダメなとき止めるか。この枠を先に作っておく、と覚えてください。
どこまで任せて、どこから自分で見るか
任せる前に、一回だけ線を引きます。これをサボると、速くなったように見えて後で痛い目を見ます。僕のおすすめは4段階。
| 段階 | AIに任せること | 自分で見ること |
|---|---|---|
| 調査 | ログや差分、ファイルの中身を要約 | 重要度と対応する順番 |
| 整理 | フォーマット統一、表へのまとめ、下書き作成 | 中身の判断と最終OK |
| 点検 | 落ちてるテスト、古いメモ、変な差分の指摘 | どの指摘を採用するか |
| 実行 | 決まりきった生成・コピー作業 | 削除・送信・公開のボタン |
線の引き方はシンプル。取り返しがつくことは任せる。取り返しがつかないことは自分の指で押す。 削除、送信、課金、公開。この4つは最初は全部「人間に聞いてから」にしておきます。安全だと分かったものだけ、後で自動に格上げすればいい。順番が逆だと泣きます。
この線引きの考え方は承認とサンドボックスの作り方でもっと掘り下げているので、合わせて読むと腹落ちすると思います。
まず動かす:毎朝の点検を肩代わりさせる
御託はこのへんにして、実物を動かしましょう。僕が毎朝やっていた「ログとテストを見て、今日気をつけることをメモる」を、そのままスクリプトにします。Node.jsとAnthropicのAPIキーがあれば動きます。
scripts/morning-check.mjs として保存してください。コメントは全部日本語にしてあります。
#!/usr/bin/env node
import { spawnSync } from "node:child_process";
import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
import { join } from "node:path";
const logDir = ".claude-logs";
const lockFile = join(logDir, "morning.lock"); // 二重起動を防ぐ鍵
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
const logFile = join(logDir, `morning-${stamp}.log`);
function fail(message) {
console.error(message);
process.exit(1);
}
// コマンドを実行して、出力をそのまま受け取る小さなヘルパー
function run(command, args, options = {}) {
const result = spawnSync(command, args, {
encoding: "utf8",
shell: process.platform === "win32", // Windowsでも動くおまじない
...options,
});
const output = `${result.stdout || ""}${result.stderr || ""}`;
if (result.status !== 0) {
writeFileSync(logFile, output);
fail(`コマンド失敗: ${command} ${args.join(" ")} / 詳細は ${logFile}`);
}
return output;
}
// 鍵を入れ忘れたら、何もせず止まる(これ大事)
if (!process.env.ANTHROPIC_API_KEY) {
fail("先に ANTHROPIC_API_KEY を設定してください。");
}
mkdirSync(logDir, { recursive: true });
if (existsSync(lockFile)) {
fail(`まだ前回の点検が動いています: ${lockFile}`);
}
writeFileSync(lockFile, String(process.pid));
try {
// 1. 今の状態を集める(ここはAIではなく、ただのコマンド)
const status = run("git", ["status", "--short"]);
const tests = run("npm", ["test"]);
// 2. 集めた材料をAIに渡して、今日見るべき点だけ箇条書きにしてもらう
const prompt = [
"あなたは僕の朝の点検係です。",
"次の git status とテスト結果を読み、今日気をつけるべき点を箇条書きで。",
"コードの変更・削除・コミット・送信は一切しないでください。読むだけ。",
"分類は 認証 / 重複実行 / 戻し方 / ログ / 要・人間判断 で。",
"",
"git status:",
status || "(変更なし)",
"",
"test output(末尾だけ):",
tests.slice(-12000), // 長いログを全部渡さない。末尾だけで十分
].join("\n");
const report = run("claude", [
"-p", prompt,
"--max-turns", "5",
"--permission-mode", "plan", // 読むだけモード。書き換えさせない
"--output-format", "text",
]);
writeFileSync(logFile, report);
console.log(`今日の点検メモを書き出しました → ${logFile}`);
} finally {
rmSync(lockFile, { force: true }); // 終わったら必ず鍵を外す
}
実行はこれだけ。
node scripts/morning-check.mjs
数十行ですが、この中にもう「材料集め」「AIに渡す」「読むだけに制限」「鍵で二重起動防止」「ログ保存」が全部入っています。これが自動化の骨格です。あなたの朝のルーティンが別物なら、git status や npm test の部分を、自分が普段叩いているコマンドに差し替えるだけ。中身を理解せずコピペしても動くように書きましたが、慣れてきたら手を入れてください。
こんな場面で効く(3つ)
1. バラバラのファイルを1枚にまとめる 請求書のCSVが7個、フォルダにバラまかれている。毎月これを手で開いて合計を出していました。1個ずつExcelに貼って、足して、検算して。だいたい20分。しかも先月、コピーミスで一桁ずれた数字をそのまま報告して、後から赤面しました。今は「このフォルダのCSVを全部読んで、合計と、平均から大きく外れた行だけ表にして」で終わり。人間が電卓を叩くと一桁ずらすけど、機械はずらさない。検算の手間ごと消えました。
2. 昨日と今日の差分を並べる 設定ファイルやメモを、昨日のバックアップと比べて「何が変わったか」だけ知りたいとき。全文を上から読み比べるのは地獄です。どこが違うのか、目が滑る。そこで差分だけ拾わせて、「それが意味のある変化なのか、ただのタイプミスか」は僕が判断する。AIに判断まで任せず、変化を見つける作業だけ渡すわけです。目視3分が、5秒になりました。
3. 散らかったメモを定型に整える 打ち合わせ中の殴り書きメモ。日付バラバラ、見出しなし、誤字だらけ、矢印だけで意味不明。これを「決めたテンプレに沿って整形して、ただし内容は一切足さないで」と頼む。ここで大事なのが、ゼロから書かせるのではなく、形だけ整えさせること。「いい感じにまとめて」と言うと、AIは言ってもいないことを勝手に補完します。形だけ、と釘を刺す。これだけで嘘を盛られなくなります。
僕がやらかした失敗3つ
かっこつけずに書きます。最初の自動化は事故の連続でした。
ひとつ目。「いい感じに整理して」で丸投げした。 その結果、AIは消したらまずい設定ファイルまで“整理”してくれました。動くコードは残ってたんですが、あの朝は本当に血の気が引いた。.env が消えてサービスが起動しなくなって、復旧に1時間。以来、「このフォルダの中だけ」「このファイルは触るな」と、触っていい範囲を必ず先に指定するようになりました。AIに察してもらおうとしてはいけません。
ふたつ目。ログを全部プロンプトに突っ込んだ。 親切のつもりで何万行も渡したら、肝心の失敗行が埋もれて、AIが「ここが問題ですね」と全然違う場所を指してくる。料金と時間だけが膨らんで、結局自分で読み直すハメに。今は上のコードみたいに slice(-12000) で末尾だけ渡しています。エラーは最後に出る。AIも最後の数行を一番よく読む。だから末尾だけで十分なんです。
みっつ目。同じスクリプトを二重に走らせた。 タスクスケジューラの設定をミスって、朝の点検が2回、ほぼ同時に起動。ログが上書きされて、どっちが本物か分からなくなりました。最悪なのは、これが「書き込む系」の作業だったとき。同じメモを2回生成して、後から重複を手で消す羽目になります。ロックファイル(鍵)を入れてからは、後から来た方が「まだ前回が動いてます」と弾かれて一発で解決。たった3行の仕掛けですが、これがないと忙しい朝に限って痛い目を見ます。
始めるなら、ここから
いきなり全自動を目指さないでください。失敗しても泣かない、小さい作業をひとつ選ぶ。毎朝の点検、ファイルの集計、メモの整形。このくらいがちょうどいい。
手順はいつも同じです。①読ませる範囲を狭く決める → ②ゴール(できあがり)をはっきり言葉にする → ③確認はできるだけコマンドにやらせる → ④削除・送信・課金・公開だけは「人間に聞く」に固定する。慣れて安全だと分かった操作だけ、後から自動に格上げ。この順番を守るだけで、事故は驚くほど減ります。
毎日決まった時刻に走らせたくなったら、cronやタスクスケジューラに登録します。
# Linux/macOS: 平日の朝8時15分に実行
15 8 * * 1-5 cd /path/to/repo && /usr/bin/node scripts/morning-check.mjs >> .claude-logs/cron.log 2>&1
# Windows: タスクスケジューラに毎日8:15で登録
schtasks /Create /TN "MorningCheck" /SC DAILY /ST 08:15 /F /TR "powershell -NoProfile -ExecutionPolicy Bypass -Command \"cd C:\path\to\repo; node scripts\morning-check.mjs\""
止まったとき何を見るべきか、--permission-mode のような細かい引数の意味は公式のCLIリファレンスが一次情報です。困ったら、まずここを見ると遠回りせずに済みます。最初の一歩でつまずいたらClaude Code 最初の30分も拾い読みしてみてください。
実際に試した結果
正直に言うと、最初の1週間はスクリプトの方が手作業より時間がかかりました。鍵を入れ忘れて止まる、ログが多すぎて変な答えが返る、スケジューラがそもそも起動しない。手で全部直しました。
でも2週目から、効いてきた。今は朝、顔を洗ってデスクに戻ると、.claude-logs に今日見るべき点が3〜5行だけ並んでいます。「テストはグリーン、ただしこの依存が古い」「差分の中に消した覚えのないファイルあり、要確認」みたいに。
一番うれしかったのは、毎朝の“だるさ”が消えたことです。同じ作業を惰性で続ける時間がなくなって、その分を本当に頭を使う仕事に回せるようになった。賢いAIを探すより、自分の面倒な5分を一個ずつ機械に渡していく。地味だけど、これが一番効きました。
まとめ
自動化は、デプロイとか大げさな話じゃありません。あなたが毎日ぼんやり手でやっているコピペを、機械に肩代わりさせること。それだけです。
コツは3つ。読ませる範囲を狭く決める。できあがりを言葉にする。取り返しのつかない操作だけ自分の指で押す。まずは上のスクリプトを自分の作業に合わせて動かして、明日の朝の5分を一個減らしてみてください。
もっと体系立てて学びたい、あるいはチームの作業をまとめて自動化したいなら、教材一覧に手を動かしながら学べるものをそろえています。自分のケースで相談したい人は、そこから声をかけてもらえれば。
無料PDF: Claude Code はじめてのチートシート
まずは無料PDFで基本コマンドと最初の使い方をまとめて確認してください。登録後はそのままテンプレート集や導入相談にも進めます。
スパムは送りません。登録情報は厳重に管理します。
Claude Codeを仕事で使える形にしませんか?
無料PDFで基礎を固めたあと、すぐ使えるテンプレート集で試し、必要なら業務自動化や導入相談まで進められます。
この記事を書いた人
Masa
Claude Codeの実務活用、導入設計、収益導線改善を検証しているエンジニア。10言語の技術メディアを運営中。
関連書籍・参考図書
この記事のテーマに関連する書籍を楽天ブックスで探せます。
※ 当サイトは楽天市場のアフィリエイトプログラムに参加しています。上記リンクから商品をご購入いただくと、運営者に紹介料が支払われる場合があります。
関連記事
ObsidianメモをCLAUDE.mdに変えるClaude Code運用: 文脈を毎回説明しない仕組み
Obsidianの作業メモからCLAUDE.md用の運用ノートを作り、Claude Codeに安定した文脈を渡す方法。
Claude Code Revenue CTA Routing: 記事からPDF、Gumroad、相談へ送る設計
PVだけで終わらせず、読者の状態に合わせて無料PDF、Gumroad教材、導入相談へ分岐するCTA設計です。
Claude Codeチーム引き継ぎルール: レビュー、権限、収益導線まで渡す実務手順
Claude Codeの作業をチームで渡すための証拠、権限、ロールバック、無料PDF/Gumroad/相談導線の実務ルール。