コース3:Windows Copilotで自動化

Windows Copilot(およびCopilot in Edge)に、自分の業務に合ったPythonスクリプトを書いてもらう方法を学びます。効果的なプロンプトの型、生成コードの検証手順、実務への適用例まで、現場目線で扱います。

レッスン 1

Windows Copilotとは?できること・できないこと

Windows Copilotは、Windows 11に搭載されているAIアシスタントです。タスクバーまたは「Win + C」キーで呼び出せ、自然言語で質問するとテキスト・要約・コード生成などを返してくれます。Copilot in Edgeやcopilot.microsoft.comからも同じ機能を利用できます。

できること(本コースで活用する範囲)

  • Pythonコードの生成・修正・解説
  • エラーメッセージの読解と対処法の提示
  • Excelの関数や数式の提案
  • 業務文書の要約・下書き作成

得意ではないこと(過信しないために知っておく)

  • ファイルの実態は見えない:アップロードした表のレイアウトや列名は、こちらが言葉で伝える必要があります
  • 業務ルールは知らない:「うちの会社では消費税8%の商品もある」といった社内事情は前提として明示する必要があります
  • 古い情報や誤情報を返すことがある:ライブラリのバージョンや関数名は必ず公式ドキュメントで照合します
学習のポイント

Copilotは「優秀だが、貴社の業務をまだ知らない新人」だと思ってください。コードの生産性は劇的に上がりますが、最終的な責任は依頼者である自分が持ちます。

レッスン 2

効果的なプロンプトの書き方 — 5つの型

Copilotから良いコードを引き出すには、依頼文(プロンプト)の作り方に型があります。業務でとくに役立つ5つを順に紹介します。

① 役割を明示する

プロンプト例
あなたは経験豊富なPython講師です。プログラミング初心者にもわかるよう、コメントを多めに付けて回答してください。

② 入力・出力・制約を分けて書く

プロンプト例
【入力】 sales.xlsx (列: 日付, 商品コード, 数量, 単価)
【出力】 summary.xlsx の「月次集計」シートに 月・売上合計・前月比 を出力
【制約】 使用ライブラリは openpyxl のみ、コメントは日本語、関数化して書く
上記の仕様でPythonスクリプトを生成してください。

③ サンプルデータを5行だけ提示する

業務データの一部をプロンプトに貼り付けると、Copilotがデータの形を正確に理解してコードを書けます。実データの個人情報や機密はマスキングしましょう。

プロンプト例
以下のような明細データを集計したい。5行例を示します。
日付, 商品コード, 数量, 単価
2026-01-05, A001, 12, 1580
2026-01-12, B003, 5, 8200
2026-02-03, A001, 20, 1580
(略)

④ 期待する出力の見本を見せる

プロンプト例
出力Excelは以下の体裁を期待します。
月 | 売上合計 | 前月比
2026-01 | 3,850,000 | -
2026-02 | 4,210,000 | +9.4%
ヘッダ行は紫(#7C3AED)で塗ってください。

⑤ 段階的に依頼する

一発で完成形を求めるより、「まずスケルトンを作って」「次にエラー処理を追加して」「最後に書式設定を加えて」と段階的に依頼すると、修正もしやすくなります。

よくある失敗

「Excelを集計するコードを書いて」とだけ書いてしまう。Copilotは想像で書き、列名やファイル名が実態と合わずに動かない、というケースが頻発します。入力・出力・制約の3点セットを最低限明示しましょう。

レッスン 3

Copilotで自動スクリプトを生成する流れ

標準的な5ステップ

  1. 業務の手順を箇条書きにする — 手作業の流れを5〜10ステップに整理する
  2. 入力ファイルと出力ファイルを決める — ファイル名・シート名・列構成まで明文化
  3. Copilotに依頼する — 上のレッスンの型に沿って
  4. 手元で実行し、結果を確認する — エラーが出たら、エラーメッセージごとCopilotに渡す
  5. 業務に合わせて微調整する — ファイルパス・列名・例外ケースを実データで詰める

実例:依頼から完成までの会話

1回目の依頼

あなたからCopilotへ
Excelの月次売上データを自動集計するPythonスクリプトを作成してください。
・入力: sales_2026.xlsx(列: 日付, 商品コード, 取引先, 数量, 単価)
・出力: summary_2026.xlsx(月, 売上合計, 前月比)
・ライブラリ: openpyxl
・コメントは日本語、関数化してください。

Copilotの応答(イメージ)

python — Copilotが生成
from openpyxl import load_workbook, Workbook
from collections import defaultdict

def aggregate(path):
    wb = load_workbook(path)
    ws = wb.active
    monthly = defaultdict(int)
    for row in ws.iter_rows(min_row=2, values_only=True):
        date, _, _, qty, price = row
        key = date.strftime("%Y-%m")
        monthly[key] += qty * price
    return monthly

# (以下省略)

2回目の追加依頼

あなたからCopilotへ
実行したら以下のエラーが出ました。原因と修正案を教えてください。
AttributeError: 'str' object has no attribute 'strftime'
Excelの日付列は、文字列で入っているセルもあるようです。

Copilotからの修正案

Copilotは isinstance(date, str) で型を判定し、文字列の場合は datetime.strptime で変換するパッチを返してくれます。これをコピペするだけでバグが直ります。

学習のポイント

エラーメッセージは「Copilotに渡す最高の情報」です。原文をそのまま貼り付けて、状況を一言添えるだけで、的確な修正案が返ってきます。

レッスン 4

生成コードの検証と修正の進め方

Copilotが書いたコードは「動きそうに見える」だけのことがあります。業務に投入する前に、最低限以下のチェックを行ってください。

検証の4ステップ

① 読んで意味がわかるか確認する

一行ずつ目を通し、知らない関数・知らないライブラリが出てきたら必ず調べてください。「動けばいい」という姿勢で進めると、後で必ず詰まります。コース1・2で身につけた基礎が、ここで効きます。

② 小さなテストデータで動かす

本番データの前に、5〜10行程度の小さなテストファイルを作って動かします。期待した結果と一致するかを目視で確認してください。

③ 異常系を必ず1つは試す

空行、文字化け、想定外の日付フォーマットなど、「壊れた入力」を1つ用意して食わせます。素直にエラーで止まればOK、変な数字を平気で出すなら危険信号です。

④ 関数単位で動作確認できるよう、責任を分ける

Copilotは長いコードを1関数にまとめがちです。長いと感じたら「このコードを役割ごとに3つの関数に分けてください」と再依頼しましょう。

修正を依頼するときのテンプレート

修正依頼の型
【現状のコード】 (省略 / 添付)
【発生した問題】 何を入力したら、どんな出力・エラーになったか
【期待した動作】 本来こうなるはず、と思っていた結果
【希望する修正方針】 例: 例外処理を加えるだけにしてほしい / アルゴリズムごと書き直してOK
上記を踏まえ、修正版コードと変更箇所の説明をください。
セキュリティ上の注意

取引先名・個人情報・社内コード番号などを、そのままCopilotに渡さないようにしてください。テスト用にダミー化してから依頼するのが原則です。

レッスン 5

実務適用 — メール一括処理スクリプトを作る

業務シーン

取引先50社に、毎月「請求書添付のお知らせメール」を送る。本文の宛名と金額だけを差し替えながら、Outlookでドラフトを自動作成するスクリプトを、Copilotと一緒に組み立てます。

ステップ1 — Copilotへの最初の依頼

プロンプト
Windows + Outlookの環境で、Excelに記載された取引先一覧に対して、Outlookのドラフトメールを自動作成するPythonスクリプトを書いてください。
【入力】 clients.xlsx (列: 取引先名, 担当者, メールアドレス, 請求金額)
【動作】 1行ごとに、宛先・件名・本文を組み立て、Outlookにドラフトとして保存(送信はしない)
【件名】 「【ご請求のご案内】{取引先名} 様 / 2026年○月分」
【本文】 丁寧語で、金額は3桁区切り。差出人の署名は最後に付ける。
【ライブラリ】 pywin32 (win32com) と openpyxl
コードはコメント付きで、初心者にも読めるようにしてください。

ステップ2 — 生成されるコードのイメージ

python — Copilotが生成
"""
取引先一覧からOutlookのドラフトメールを一括作成する。
- 送信は行わず、ドラフトとして保存するだけ(必ず人の目で最終確認するため)。
"""
import win32com.client                     # pywin32
from openpyxl import load_workbook

INPUT  = "clients.xlsx"
MONTH  = "2026年6月"
SIGN   = "------\n株式会社サンプル 経理部 山田\nyamada@example.com"

def read_clients(path):
    wb = load_workbook(path, data_only=True)
    ws = wb.active
    for row in ws.iter_rows(min_row=2, values_only=True):
        name, person, email, amount = row[:4]
        if not email: continue
        yield {"name": name, "person": person,
               "email": email, "amount": amount}

def build_body(c):
    return (
        f"{c['name']} {c['person']} 様\n\n"
        "いつも大変お世話になっております。\n"
        f"{MONTH}分のご請求書をお送りいたします。\n\n"
        f"ご請求金額: {c['amount']:,} 円(税込)\n\n"
        "ご確認のほど、よろしくお願いいたします。\n\n"
        + SIGN
    )

def create_drafts():
    outlook = win32com.client.Dispatch("Outlook.Application")
    count = 0
    for c in read_clients(INPUT):
        mail = outlook.CreateItem(0)        # 0 = olMailItem
        mail.To      = c["email"]
        mail.Subject = f"【ご請求のご案内】{c['name']} 様 / {MONTH}分"
        mail.Body    = build_body(c)
        mail.Save()                            # 下書きフォルダに保存
        count += 1
    print(f"下書きを{count}件作成しました。Outlookでご確認ください。")

if __name__ == "__main__":
    create_drafts()

ステップ3 — 検証ポイント

  • テスト用のExcelで「自分宛て1件のみ」のデータを用意し、まずそれだけで動かす
  • Outlookの「下書き」フォルダに、宛先・件名・本文が正しく入っていることを目視確認する
  • 金額の3桁区切りが効いているか、署名が末尾に入っているかをチェック
  • 本番用Excelに差し替える際は、メールアドレスの列に1件でも空セルがないか確認
運用上の鉄則

このスクリプトは送信ではなく下書き作成までしか行いません。最終送信は必ず人が確認してからにしてください。「自動化=人の判断を抜くこと」ではなく、「自動化=単純作業を機械に任せ、判断は人が行うこと」が業務適用の鉄則です。

  • コース3 修了チェックリスト
  • Copilotの得意・不得意を理解し、過信せずに使える
  • 入力・出力・制約を分けたプロンプトを書ける
  • エラーメッセージを添えて修正依頼ができる
  • 生成コードを「読んで」検証・改修できる
  • 自動化と人の判断の境界を引いてスクリプトを設計できる
おめでとうございます

3コースをすべて修了すると、「日々の事務作業を自分の手で自動化できる人」に到達します。学んだ内容は 進捗管理ページ で確認できます。まずは自分の業務の中で週に1時間かかっている作業を1つ選び、Copilotと一緒にスクリプト化してみてください。