レッスン 1
Pythonとは?何ができるのか
Pythonは、文章に近い書き方ができるプログラミング言語です。英語の語順をそのまま書いていくような感覚に近く、他の言語と比べて「読みやすい」「書きやすい」と言われます。学習を始めるうえで、この読みやすさは大きな助けになります。
Pythonを学ぶ3つの価値
- 毎日の手作業を減らせる。 Excelの転記・コピー&ペースト・並べ替えといった作業を自動化できます。
- ミスが減る。 人が手で繰り返す作業をプログラムに任せると、桁ズレや見落としが激減します。
- 「自分で考えて自動化できる人」になれる。 業務改善の提案ができるようになり、評価につながります。
準備するものは、何もありません
本コースのコード例と演習は、ブラウザの中でそのまま実行できます。各コード例の右上にある 「 実行」ボタン を押すと、コードがその場で動作し、出力が下に表示されます。Pythonをインストールする必要はありません。
※ コース1の範囲(変数・計算・if/for・関数・リスト・辞書・f文字列)をサポートします。コース2以降で使う openpyxl / pandas などの外部ライブラリは、手元のPython環境または Google Colab でご確認ください。
手元でもコードを動かしたい方は、環境構築ガイドで Python と VS Code の導入手順をご確認ください。
はじめてのコード
まずはお決まりの「Hello, World!」を書いてみましょう。 hello.py という名前のファイルを作って、以下を保存してください。
# はじめての Python プログラム
print("こんにちは、Pythonの世界へようこそ。")
print("これから業務自動化を一緒に学んでいきましょう。")
ターミナル(コマンドプロンプト)で python hello.py と実行し、メッセージが表示されれば準備完了です。
学習のポイント
Pythonは「読めば意味がわかる」言語です。新しい構文に出会ったら、まず英文として声に出して読んでみると理解が早くなります。
レッスン 2
変数とデータ型 — 数値・文字列・真偽値
業務シーン
「請求書1枚あたりの金額と消費税率から、税込金額を計算したい」。電卓を叩く代わりに、変数に値を入れて計算式を書きます。
変数とは「名前付きの箱」
変数とは、値に名前をつけて保存しておく仕組みです。= は「右の値を左の名前に入れる」という意味で、数学のイコールとは少し違います。
# 数値型(int / float)
price = 12800 # 整数 (int)
tax_rate = 0.10 # 小数 (float)
# 文字列型(str)
customer = "株式会社サクラ商事"
# 真偽値(bool) — TrueかFalseの2値
is_paid = False
# 計算してみる
total = price * (1 + tax_rate)
print(f"{customer} 様 ご請求額: {total:,.0f}円")
# → 株式会社サクラ商事 様 ご請求額: 14,080円
主なデータ型
| 型 | 例 | 業務での用途 |
int | 12800 | 金額、数量、件数 |
float | 0.10 | 税率、為替レート、割引率 |
str | "サクラ商事" | 取引先名、商品名、メールアドレス |
bool | True / False | 入金済みか、承認済みか |
f文字列 — 値を文中に埋め込む
文字列の先頭に f を付けると、波カッコ { } の中に変数を埋め込めます。Excelの文字列結合と同じ感覚ですが、はるかに読みやすく書けます。
name = "田中"
amount = 1250000
print(f"{name}様への支払額は {amount:,} 円です。")
# → 田中様への支払額は 1,250,000 円です。
学習のポイント
{amount:,} のようにコロン以降で書式を指定できます。:, で3桁区切り、:.0f で小数なし、:.2f で小数2桁です。金額の表示で頻出します。
演習 ・ コード判定対応
商品単価×数量から税込金額を計算してみよう
単価1,580円・数量12個・消費税率10%として、税込合計金額を3桁区切りで表示するコードを書いてください。
unit_price = 1580
quantity = 12
tax_rate = 0.10
total = unit_price * quantity * (1 + tax_rate)
print(f"税込金額: {total:,.0f} 円")
# → 税込金額: 20,856 円
レッスン 3
リストと辞書 — 帳票データを扱う基本
業務シーン
「取引先一覧」「商品マスタ」「月別売上」など、複数の値をまとめて扱う場面は事務業務に頻繁に登場します。Pythonでは リスト と 辞書 が中心的な役割を果たします。
リスト:順序付きの一覧
角カッコ [ ] でくくり、カンマで区切ります。Excelの1列をそのまま持ってきたイメージです。
# 取引先リスト
clients = ["サクラ商事", "あおぞら工業", "みどり物産", "つばさ電機"]
# 1つ目を取り出す(添字は0から始まる)
print(clients[0]) # → サクラ商事
# 件数を数える
print(len(clients)) # → 4
# 末尾に追加
clients.append("ほしぞら印刷")
print(clients)
# → ['サクラ商事', 'あおぞら工業', 'みどり物産', 'つばさ電機', 'ほしぞら印刷']
# 月別売上(数値のリスト)
monthly_sales = [1200000, 1350000, 980000, 1420000]
print(f"合計: {sum(monthly_sales):,} 円")
print(f"平均: {sum(monthly_sales) / len(monthly_sales):,.0f} 円")
辞書:キーと値のペア
波カッコ { } で キー: 値 の形を並べます。1件の取引先情報のように「項目名と中身」をひとまとめにしたいときに使います。
# 1社分の情報
client = {
"name": "サクラ商事",
"contact": "田中部長",
"email": "tanaka@sakura.example.com",
"monthly_amount": 350000,
}
print(client["name"]) # → サクラ商事
print(client["monthly_amount"]) # → 350000
# 値の更新・追加
client["monthly_amount"] = 380000
client["is_active"] = True
リストと辞書を組み合わせる(実務でいちばん多い形)
「複数件の取引先データ」のように、辞書をリストに入れて扱うパターンを覚えておくと、Excelデータを扱う際にそのまま役立ちます。
clients = [
{"name": "サクラ商事", "amount": 350000},
{"name": "あおぞら工業", "amount": 820000},
{"name": "みどり物産", "amount": 150000},
]
# 全件の合計金額を計算
total = sum(c["amount"] for c in clients)
print(f"今月の請求総額: {total:,} 円")
# → 今月の請求総額: 1,320,000 円
学習のポイント
「列方向に並ぶデータ」はリスト、「1行の中の項目」は辞書、と覚えると整理しやすいです。openpyxlやpandasで読み込んだExcelデータも、内部ではこの組み合わせで表現されています。
レッスン 4
条件分岐 if/elif/else — 業務ルールを表現する
業務シーン
「請求額が10万円以上なら承認者を部長に変更する」「期日を過ぎたら督促マークを付ける」など、業務には必ずルール(条件)があります。それをコードで表現するのが if 文です。
基本の形
amount = 125000
if amount >= 100000:
print("部長承認が必要です。")
else:
print("課長承認で進められます。")
インデント(行の先頭の半角スペース4つ)が「ifの中に含まれる処理」を示します。Pythonではインデントが文法そのものなので、必ず揃えてください。
複数の条件 — elif と論理演算子
amount = 320000
is_new_client = True
if amount >= 500000:
approver = "取締役"
elif amount >= 100000 or is_new_client:
approver = "部長"
else:
approver = "課長"
print(f"承認者: {approver}")
# → 承認者: 部長 (10万円以上 もしくは 新規取引先 だから)
比較演算子と論理演算子の早見表
| 記号 | 意味 |
== | 等しい |
!= | 等しくない |
> / >= | より大きい / 以上 |
< / <= | より小さい / 以下 |
and | かつ(両方True) |
or | または(どちらかがTrue) |
not | 否定 |
よくあるつまずき
「等しい」は = ではなく == です。= は値を入れる操作なので、混同するとエラーになります。
演習 ・ コード判定対応
期日と支払状況から「督促区分」を判定するコードを書こう
残日数 days_left と is_paid から、以下の通り表示してください。
① 支払済 → 「OK」
② 未払いで残日数3日以下 → 「至急督促」
③ 未払いで残日数4〜7日 → 「督促予定」
④ それ以外 → 「対応不要」
days_left = 2
is_paid = False
if is_paid:
status = "OK"
elif days_left <= 3:
status = "至急督促"
elif days_left <= 7:
status = "督促予定"
else:
status = "対応不要"
print(status) # → 至急督促
レッスン 5
ループ for/while — 繰り返し作業を自動化
業務シーン
「取引先全社にメールを送る」「100行のExcelデータを1行ずつチェックする」など、同じ処理を繰り返す場面は数えきれません。Pythonの for 文が、その繰り返しをコード3行で表現します。
for文の基本
clients = ["サクラ商事", "あおぞら工業", "みどり物産"]
for name in clients:
print(f"{name} 様にご案内メールを送信しました。")
# → サクラ商事 様にご案内メールを送信しました。
# → あおぞら工業 様にご案内メールを送信しました。
# → みどり物産 様にご案内メールを送信しました。
range — 「3回繰り返す」を表現する
# 1月から12月までループ
for month in range(1, 13):
print(f"{month}月の処理を実行中...")
range(1, 13) は 1, 2, 3, ..., 12 を順に取り出します。終わりの数字は含まれない点に注意してください。
enumerate — 番号付きで取り出す
invoices = ["INV-001", "INV-002", "INV-003"]
for i, no in enumerate(invoices, start=1):
print(f"{i}件目: {no}")
# → 1件目: INV-001
# 2件目: INV-002
# 3件目: INV-003
条件付きで処理を進める
for の中に if を入れると「該当する行だけ処理する」を表現できます。事務業務での「フィルタ + 処理」がそのままコードになります。
invoices = [
{"no": "INV-001", "amount": 80000, "paid": True},
{"no": "INV-002", "amount": 320000, "paid": False},
{"no": "INV-003", "amount": 150000, "paid": False},
]
unpaid_total = 0
for inv in invoices:
if not inv["paid"]:
unpaid_total += inv["amount"]
print(f"未入金: {inv['no']} ({inv['amount']:,} 円)")
print(f"未入金合計: {unpaid_total:,} 円")
# → 未入金: INV-002 (320,000 円)
# 未入金: INV-003 (150,000 円)
# 未入金合計: 470,000 円
学習のポイント
+= は「左の変数に右の値を足して入れ直す」記法です。unpaid_total = unpaid_total + inv["amount"] と同じ意味ですが、短く書けます。
レッスン 6
関数 def — 処理を再利用できる形にまとめる
業務シーン
「税込金額を計算する」処理は、コースを通じて何度も登場します。同じ計算を毎回書き直すのではなく、一度関数として名前を付けておけば、必要なときに呼び出すだけで済みます。
関数の基本
def calc_total(price, quantity, tax_rate=0.10):
"""税込金額を計算して返す関数。"""
subtotal = price * quantity
total = subtotal * (1 + tax_rate)
return round(total)
# 呼び出して使う
print(calc_total(1580, 12)) # → 20856
print(calc_total(3000, 5, 0.08)) # → 16200(軽減税率)
ポイントは4つです。
def 関数名(引数, ...): で関数を定義する
- 引数に
= デフォルト値 を書くと省略可能になる(tax_rate)
return で結果を返す
- 関数の直下の
""" ... """ はdocstringと呼ばれ、関数の説明書として機能する
関数を使うと「業務ロジック」を1か所にまとめられる
def decide_approver(amount, is_new_client=False):
"""請求額と新規取引フラグから、承認者の役職を返す。"""
if amount >= 500000:
return "取締役"
if amount >= 100000 or is_new_client:
return "部長"
return "課長"
print(decide_approver(320000)) # → 部長
print(decide_approver(80000, is_new_client=True)) # → 部長
print(decide_approver(80000)) # → 課長
学習のポイント
「業務ルールが変わったときに、書き換える場所は1つ」 — これが関数化の最大のメリットです。承認権限が変わっても、関数の中身だけ直せば、呼び出している全箇所に自動で反映されます。
レッスン 7
ファイル読み書きと例外処理
業務シーン
業務自動化の第一歩は「ファイルを読み、結果をファイルに書く」です。CSVやテキストファイルを扱うやり方と、想定外のエラーへの備え方を学びます。
ファイルを書き出す
# with を使うと、ファイルを自動でクローズしてくれる
with open("report.txt", "w", encoding="utf-8") as f:
f.write("=== 本日の処理結果 ===\n")
f.write("処理件数: 128件\n")
f.write("未払い件数: 7件\n")
ファイルを読み込む
with open("report.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.rstrip())
例外処理 — エラーで止めない
ファイルが存在しなかったり、想定外の中身だったりすると、プログラムは停止してしまいます。try / except で「もしエラーが起きたら、こう対応する」を書いておきます。
try:
with open("sales.csv", "r", encoding="utf-8") as f:
data = f.read()
print("読み込み成功")
except FileNotFoundError:
print("sales.csv が見つかりませんでした。担当者に確認してください。")
except UnicodeDecodeError:
print("文字コードが想定と異なります。Shift_JISの可能性があります。")
except Exception as e:
print(f"想定外のエラー: {e}")
次のステップ
このコースを完了したら、いよいよ コース2「Excel業務効率化」 で実務へ落とし込みます。基礎で身につけた変数・リスト・関数の知識が、そのままopenpyxl・pandasの操作に役立ちます。