⚙️ 業務自動化レシピ 2026.07.27 更新

個人の自動化はどこから始める?安全に小さく試す7ステップ

繰り返し作業を観察して手動手順を固定し、練習用データ、読み取り中心の処理、実行前の予告、ログ記録を組み合わせながら、個人の自動化を安全に小さく始める7つの手順を解説します。自動化しない判断の基準も紹介します。

自動化の第一歩は、便利なAIやツールを探すことではありません。同じ作業を、同じ順番で繰り返している場所を見つけることです。

最初は「読む」「数える」「一覧にする」から始めます。元データを残し、練習用コピー1〜3件で試します。実行前に対象を予告し、実行後に結果を記録すれば、失敗しても原因を探して前の状態へ戻りやすくなります。

この記事では、「ダウンロードした画像の情報をCSVへ一覧化する」例を使います。CSVは、表のデータをカンマ区切りで保存する形式です。Excelなどで開けます。画像そのものは変更しません。

自動化の安全策は、すべての作業へ同じ量を足せばよいわけではありません。NISTのAI RMF Playbookも、掲載された推奨行動を順番どおり行う一律のチェックリストではなく、用途や関心に合う項目を選ぶ資料だと説明しています。個人の自動化でも、失敗時の影響が大きいほど、人間の確認と停止条件を厚くする考え方が役立ちます。

最初の題材は、次の3条件で選びます。

  • 同じ入力なら、正解を言葉で説明できる。
  • 結果を人の目で確認できる。
  • 失敗しても、練習用コピーからやり直せる。
作業例手順の固定度失敗時の影響最初の題材としての判断
写真ファイルの一覧作成高い低い向いている
定型文の下書き中程度中程度下書きまでなら向いている
請求金額の最終決定低い高い人間が判断する
メールの自動送信中程度高い送信前に人が確認する
ファイルの完全削除高い高い最初の題材から外す

削除、送信、公開、課金、金額決定は、結果を戻しにくい操作です。個人情報を扱う作業や、正解が一つに定まらない判断も、最初から無人にしません。AIには一覧化や下書きを任せ、最終判断は人間が持ちます。

ステップ1・2:手作業を記録し、入出力と合格条件を固定する

ステップ1:普段の操作を動詞で実況する

自動化したい作業を一度だけ、普段どおり手で行います。その間に、操作を動詞で書きます。「画像を整理する」のような広い言葉ではなく、見たままの手順へ分けるのがコツです。

画像一覧を作る場合は、次の5行にできます。

  1. 対象フォルダーを開く。
  2. JPG、JPEG、PNGだけを探す。
  3. ファイル名、更新日時、容量を読む。
  4. 更新日時の新しい順に並べる。
  5. CSVへ保存する。

ここで例外も書き出します。「サブフォルダーは見ない」「拡張子の大文字と小文字は区別しない」「壊れていて情報を読めないファイルがあれば止める」などです。例外を先に見つけると、AIへ依頼するときの抜けが減ります。

ステップ2:開始条件、終了条件、禁止事項を決める

次に、自動化の境界を一枚のメモへ固定します。

入力:
automation-practice/sample-images フォルダー

対象:
拡張子が .jpg / .jpeg / .png のファイル

処理:
名前・更新日時・容量を読み、新しい順に並べる

出力:
automation-practice/image-list.csv を新規作成する

禁止:
元ファイルの変更・移動・削除
練習用フォルダー外への書き込み
外部サービスへの送信

「できた」の意味も数字で決めます。合格条件は、後から目で見て判定できる内容にします。

確認項目合格停止する条件
対象件数画像3件ならCSVに3行0件、または予定より多い
対象外ファイルTXTはCSVに入らないTXTが1行でも入る
元ファイル名前・容量・更新日時が不変どれかが変わる
出力先指定したCSVだけを作る許可していない場所へ書く
実行結果成功か失敗か明記される途中なのに成功と表示する

停止する条件を「しきい値(止める境目)」として先に決めることが大切です。たとえば、練習用画像は最大3件と決めます。4件以上見つかったら書き込み前に止めます。

NISTのManageの推奨行動では、意図した用途と合わない結果が出たときに、回避、切り離し、停止できる仕組みや責任を決める考え方が示されています。これは組織向けの任意資料です。個人用の7ステップを直接定めた規則ではありません。ただし、実行前に停止条件を決め、停止した事例を記録する考え方は、小さな自動化にも応用できます。

ステップ3・4:練習用コピーで、読み取り中心の処理から試す

ステップ3:元データ、練習用入力、出力を分ける

最初の実行で、本番の写真フォルダーを直接指定しません。失っても困らない画像を1〜3件だけコピーします。元データと練習用データが同じ場所にあると、操作対象を取り違えやすくなります。

PowerShellで作業場所を準備する例です。

New-Item -ItemType Directory -Path .\automation-practice\sample-images -Force
New-Item -ItemType Directory -Path .\automation-practice\restore-test -Force

Copy-Item -LiteralPath .\sample-source\sample-01.jpg `
  -Destination .\automation-practice\sample-images\sample-01.jpg

Get-ChildItem -LiteralPath .\automation-practice\sample-images

New-Itemはフォルダーを作るだけです。バックアップや練習用コピーを自動では作りません。Copy-Itemの行で、失っても困らないサンプルを明示的にコピーします。実行前に、自分のPCにある実際のパスへ置き換えてください。

バックアップは「コピーがある」だけで終わりません。必要なファイルが含まれ、そこから戻せることを確かめます。英国NCSCのバックアップ案内も、バックアップ後に復元方法を把握し、重要なデータが含まれているか確認するよう案内しています。

小さな復元確認は、元の場所へ上書きせず、別のrestore-testフォルダーで行えます。

Copy-Item -LiteralPath .\automation-practice\sample-images\sample-01.jpg `
  -Destination .\automation-practice\restore-test\sample-01.jpg

Get-FileHash -LiteralPath .\automation-practice\sample-images\sample-01.jpg
Get-FileHash -LiteralPath .\automation-practice\restore-test\sample-01.jpg

Get-FileHashは、ファイル内容から照合用の値を計算するコマンドです。2つのHashが同じなら、内容が一致していると確認できます。外付け記憶装置をバックアップに使う場合は、使わない間も接続したままにしないというNCSCの注意も確認してください。

ステップ4:一覧CSVだけを作る

次のPythonコードは、画像の名前、更新日時、容量を読みます。書き込み先は練習用フォルダー内のCSV一つです。画像の変更、移動、削除は行いません。

from pathlib import Path
import csv
from datetime import datetime

source = Path("automation-practice/sample-images")
output = Path("automation-practice/image-list.csv")
extensions = {".jpg", ".jpeg", ".png"}
max_files = 3

if not source.is_dir():
    raise SystemExit(f"入力フォルダーが見つかりません: {source.resolve()}")

rows = []
for file in source.iterdir():
    if file.is_file() and file.suffix.lower() in extensions:
        stat = file.stat()
        rows.append({
            "name": file.name,
            "updated_at": datetime.fromtimestamp(
                stat.st_mtime
            ).isoformat(timespec="seconds"),
            "size_bytes": stat.st_size,
        })

rows.sort(key=lambda row: row["updated_at"], reverse=True)

if not rows:
    raise SystemExit("対象画像が0件のため中止しました")

if len(rows) > max_files:
    raise SystemExit(
        f"対象が上限の{max_files}件を超えたため中止しました: {len(rows)}件"
    )

print(f"対象フォルダー: {source.resolve()}")
print(f"対象件数: {len(rows)}")
print(f"行う操作: 画像情報をCSVへ書き込む")
print(f"出力先: {output.resolve()}")

answer = input("この内容でCSVを作成しますか? [y/N]: ").strip().lower()
if answer != "y":
    raise SystemExit("中止しました。CSVは作成していません")

with output.open("x", encoding="utf-8-sig", newline="") as csv_file:
    writer = csv.DictWriter(
        csv_file,
        fieldnames=["name", "updated_at", "size_bytes"],
    )
    writer.writeheader()
    writer.writerows(rows)

print(f"成功: {len(rows)}件を出力しました: {output.resolve()}")

Path.stat()は、ファイルの容量や更新日時を読む処理です。utf-8-sigは、日本語を含むCSVをWindows版Excelで開く場面を考えた指定です。表示は利用する表計算ソフトでも確認してください。

出力ファイルを開くモードは"x"にしています。同名のCSVがすでにある場合は、上書きせずエラーで止まります。最初の練習では、便利さより「意図しない上書きをしない」ことを優先します。

コードをmake_image_list.pyとして保存したら、次の順で確認します。

  1. 実行前の一覧と更新日時を表示する。
  2. Pythonスクリプトを実行する。
  3. CSVの内容を表示する。
  4. 元のサンプル画像をもう一度表示する。
Get-ChildItem .\automation-practice\sample-images |
  Select-Object Name,Length,LastWriteTime

python .\make_image_list.py

Get-Content -Encoding UTF8 .\automation-practice\image-list.csv

Get-ChildItem .\automation-practice\sample-images |
  Select-Object Name,Length,LastWriteTime

前後の画像件数、名前、容量、更新日時を比べます。CSVの行数も確認します。画像3件なら、見出しを除いて3行です。違っていれば成功扱いにせず、スクリプトを止めたまま原因を調べます。

ステップ5・6:実行前の予告と、秘密を含めないログを置く

ステップ5:変更前に対象と操作を予告する

実行前の予告は、ネット通販の注文確認画面に似ています。「どこへ」「何件を」「どうするか」を、確定前に見直す場所です。先ほどのPython例では、CSVを書き込む直前に次の4項目を表示しています。

  • 対象フォルダー
  • 対象件数
  • 行う操作
  • 出力先

一つでも想定と違えば、yを入力せず中止します。確認入力があるだけでは安全を保証できません。表示する値の作り方が間違っている場合や、確認後に入力内容が変わった場合は、予告と実行結果がずれることがあります。練習用コピー、件数上限、出力後の照合も組み合わせます。

PowerShellの対応コマンドでは、-WhatIfで実行予定の効果を表示できます。-Confirmは、実行前に確認を求めます。MicrosoftのPowerShell共通パラメーターの説明では、どちらも危険を減らすための仕組みとして説明されています。

Move-Item -LiteralPath .\automation-practice\sample-images\sample-01.jpg `
  -Destination .\automation-practice\preview-only\sample-01.jpg `
  -WhatIf

この例は、対応しているMove-Itemで移動予定を表示するものです。実際の移動は行いません。ただし、-WhatIfはすべてのPowerShellコマンド、Pythonスクリプト、外部プログラムに効く共通の安全装置ではありません。対応していない処理へ付けても、同じ効果は得られません。

ドライラン(実際に変更せず、予定だけを見る試運転)も同じです。対象パスや予定件数を確認する助けにはなります。しかし、実装の誤り、権限の違い、実行中の入力変化まではなくせません。「ドライランを通したから本番も問題ない」と決めず、小さなコピーで実行結果まで確かめます。

ステップ6:あとから追えるログを残す

ログは、実行中に何が起きたかを後から追う記録です。Python公式のLogging HOWTOでは、説明メッセージ、変化するデータ、重要度を付けてイベントを追跡できると説明しています。

個人用スクリプトでは、まず次の項目に絞ります。

  • 実行日時
  • 入力フォルダー
  • 対象件数
  • 行った操作
  • 出力先
  • 成功、警告、失敗
  • 失敗した理由

Pythonの標準loggingには、DEBUGINFOWARNINGERRORCRITICALなどの重要度があります。使い分けは自動化の設計次第です。初心者向けの例では、通常の開始と完了をINFO、想定外だが処理を続けられる状態をWARNING、処理を完了できない失敗をERRORにできます。

import logging

logging.basicConfig(
    filename="automation-practice/run.log",
    level=logging.INFO,
    format="%(asctime)s %(levelname)s %(message)s",
    encoding="utf-8",
)

logging.info(
    "start source=%s count=%d output=%s",
    source,
    len(rows),
    output,
)

ログは多ければよいわけではありません。OWASPのLogging Cheat Sheetは、操作、対象、結果、理由などを検討する一方で、目的に対して記録量が多すぎても少なすぎてもよくないとしています。

APIキー、アクセストークン、パスワード、暗号鍵は直接残しません。機微な個人情報(知られると本人へ不利益が出る情報)や、調査に不要なファイル内容も記録しません。必要なら値を伏せるか、件数や分類だけを残します。

エラーが出たときは、次の3点をセットで保存します。

  1. どの入力で起きたか。
  2. エラーメッセージは何か。
  3. 本来はどんな結果を期待したか。

AIへ相談する場合も、秘密や個人情報を取り除いてから渡します。成功していないのに「一部できたから成功」と表示しないことも大切です。

ステップ7:同じサンプルで比べ、一度に一つだけ広げる

最初の一覧作成が合格したら、同じサンプルと同じ合格条件を基準として残します。機能を増やすときは、一度に一つだけにします。

追加候補は次のとおりです。

  1. 容量をMB単位でも表示する。
  2. 入力フォルダーを実行時に指定できるようにする。
  3. サブフォルダーも検索する。
  4. 前回のCSVを日時付きの別名で残す。

たとえばサブフォルダー対応とCSV履歴保存を同時に加えると、行数が変わった原因を切り分けにくくなります。まず一つだけ追加し、変更前と同じ3件で試します。合格したら、その出力を次の基準にします。

拡大するたびに、次の順で再確認します。

  1. 変更前のCSVとログを残す。
  2. 追加する機能を一つに絞る。
  3. 練習用コピー1〜3件で実行する。
  4. 期待件数、対象外ファイル、出力先を照合する。
  5. 元データの名前、容量、更新日時が不変か確認する。
  6. 停止条件に触れたら、機能追加前の版へ戻す。
  7. 停止した理由と戻した結果をログへ残す。

機能追加前のコード、CSV、ログを別名で残せば、前の状態へ戻しやすくなります。バックアップから戻す場合も、いきなり本番へ上書きしません。別の復元確認用フォルダーへ戻し、必要なデータと内容を照合してから判断します。

AIへの依頼は安全境界まで一組で渡す

AIへ「画像を整理するコードを書いて」とだけ伝えると、入力、出力、上書きの扱いが曖昧です。次のテンプレートなら、目的と禁止事項を一緒に渡せます。

目的:
画像ファイルの情報をCSVへ一覧化したい。

環境:
Windows 10 / Python 3 / PowerShell

入力:
automation-practice/sample-images

対象:
JPG / JPEG / PNG

出力:
automation-practice/image-list.csv

守ること:
- 入力ファイルを変更・移動・削除しない
- 練習用フォルダーの外へ書き込まない
- 既存のCSVを上書きしない
- 書き込み前に対象パス、件数、操作、出力先を表示する
- 対象が0件または3件を超えたら中止する
- エラー時は成功と表示しない
- ログへ秘密や個人情報を書かない

確認:
- 実行コマンドを示す
- 画像3件ならCSVに3行出ることを合格条件にする
- TXTは含まれないことを確認する
- 元画像の名前、容量、更新日時が変わらないことを確認する

AIが提案したコードやコマンドは、本番フォルダーへ直行させません。まず、読み取りと新規出力だけになっているかを確認します。再帰削除、既存ファイルの上書き、外部送信が含まれる場合は止めます。

人間の確認を残す基準も、AIへの依頼に書きます。金銭、公開、対外連絡、削除、個人情報、正解が一つでない判断は、人間へ戻します。自動化の効果は「すべて無人にしたか」ではなく、「同じ転記を5回から1回へ減らした」「確認箇所を一つのCSVへまとめた」のように測ります。

よくある質問

最初に自動化するなら、どんな作業が向いていますか?

同じ入力なら正解を説明でき、結果を目で確認でき、コピーからやり直せる反復作業が向いています。ファイル一覧、件数集計、形式変換、定型文の下書きが候補です。

削除、送信、公開、課金、金額の最終決定は外します。作業の影響が大きいほど、停止条件と人間の確認を増やします。

バックアップを作れば、本番データで試しても安全ですか?

安全とは限りません。コピーに必要なデータがそろっているか、実際に復元できるかは別の確認です。初回は本番データではなく、失っても困らないコピー1〜3件を使います。

復元確認も、本番の場所へ上書きせず、別フォルダーで行います。外付け記憶装置を使う場合は、使わない間の接続状態も含めてNCSCの公式案内を確認してください。

ドライランや-WhatIfを使えば、変更を防げますか?

対応する処理では、変更前の確認に役立ちます。しかし、すべてのコマンドや外部プログラムが対応するわけではありません。ドライランの実装自体に誤りがあれば、表示も間違う可能性があります。

対象パス、予定件数、出力先を別々に確認します。練習用コピーで実行し、元データが変わっていないことも照合します。

自動化のログには何を残せばよいですか?

少なくとも、実行日時、入力、対象件数、操作、出力先、成功か失敗か、失敗理由を残します。後から「いつ、何へ、何をして、どうなったか」を追える量にします。

アクセストークン、パスワード、暗号鍵、機微な個人情報は直接残しません。ファイル内容が調査に不要なら、名前や件数だけにします。

いつ人間の確認を残し、いつ自動化を止めるべきですか?

金銭、対外連絡、公開、削除、個人情報、正解が一つに定まらない判断には、人間の確認を残します。「AIが自信ありと答えたか」ではなく、結果の影響で判断します。

対象件数が上限を超えた、許可外の場所へ書こうとした、合格条件と結果が違う、ログを残せないといった場合は止めます。止めた後は、入力を保全し、変更前の版とログを使って原因を調べます。

公式一次情報

確認日: 2026-07-27

  • PowerShellの共通パラメーター: -WhatIfは実行した場合の効果を表示し、-Confirmは実行前に確認を求めると説明しています。
  • Python 3.12 Logging HOWTO: 実行中のイベントをメッセージ、可変データ、重要度とともに追跡する標準のログ機能を説明しています。
  • NIST AI RMF Playbook: Govern、Map、Measure、Manageに沿う任意の推奨行動であり、一律の順番で使うチェックリストではないと説明しています。
  • NIST AI RMF PlaybookのManage: 継続監視、事故対応、停止手順、停止判断のしきい値、停止事例の記録などを示しています。
  • 英国NCSCのバックアップ案内: 必要なデータのコピー、復元方法の把握、内容確認、外部記憶装置の扱いを案内しています。
  • OWASP Logging Cheat Sheet: ログへ残す操作・対象・結果・理由と、認証情報や機微情報を直接記録しない考え方を示しています。

NIST AI RMF 1.0は改定作業中です。Playbookの内容や版は、利用時点の公式ページで確認してください。PowerShellやPythonの仕様も、使用する版の公式案内を確認してください。

まとめ

個人の自動化は、観察、境界、コピー、読み取り、予告、ログ、一つずつ拡大、の順で進めます。便利な機能を増やす前に、「間違えたら止まれるか」「元へ戻せるか」「結果を確認できるか」を決めます。

今日の最初の一歩は、次の3つです。

  • 毎週繰り返している作業を一つ選び、手順を動詞で5行以内に書く。
  • 変更を伴わない「読む・数える・一覧にする」部分だけを切り出す。
  • 失っても困らないコピー1〜3件で試し、合格条件と停止条件を記録する。

続き(結論と実データ)はnoteに置いています

ここでは手順のところまで書きました。実際に出た数字、うまくいかなかった条件、そのまま使える設定ファイルは、 note の記事にまとめてあります。

noteで続きを読む Xをフォローする