「動かすだけ」から「使いこなす」へ

第2章までで、Python の基本的な書き方と生成 AI から受け取ったコードの読み方を学びました。この章ではいよいよ、実際の業務で使える一歩踏み込んだ活用法に挑戦します。
テーマは3つです。
- プログラムを決まった時間に自動で動かす「定期実行」
- 生成 AI を使ってコードを発展させる「応用」
- エラーが出たときに慌てない「デバッグ」の考え方
1. 定期実行プログラムとは?
毎日手動で動かすのをやめよう
「毎朝9時にレポートを集計して送る」「毎週月曜にデータをバックアップする」——こういった定期的な作業も、Python に任せることができます。これを**定期実行(スケジューリング)**と呼びます。
schedule ライブラリを使ってみよう
Python には schedule というライブラリがあり、シンプルな記述で定期実行を設定できます。
まず、以下のコマンドでライブラリをインストールします(初回のみ)。
pip install schedule
インストールが済んだら、こんなふうに使えます。
python
import schedule
import time
def daily_report():
print("本日のレポートを作成しました!")
# 毎日 09:00 に実行する設定
schedule.every().day.at("09:00").do(daily_report)
# プログラムを動かし続けるループ
while True:
schedule.run_pending()
time.sleep(60) # 1分ごとにチェック
コードの読み方:
schedule.every().day.at("09:00").do(daily_report)→ 毎日9時にdaily_report関数を呼び出すwhile True:→ プログラムを終了せず動かし続ける無限ループtime.sleep(60)→ 1分間待機してから次のチェックへ
生成 AI への依頼例
「毎週月曜日の朝8時に、指定フォルダ内のCSVファイルを
自動で集計してテキストファイルに保存するPythonコードを書いてください。
scheduleライブラリを使ってください。」
2. 生成 AI を使ったコードの応用
「動くコード」から「使えるコード」へ育てる
生成 AI が作ったコードは、あくまでたたき台です。実際の業務に合わせて少しずつ改良していくことが大切です。ここでは、コードを発展させる3つのアプローチを紹介します。
アプローチ① 機能を追加してもらう
最初に作ったプログラムに、新しい機能をどんどん追加していきましょう。生成 AI に「さっきのコードに〇〇の機能を加えて」と伝えるだけで対応してくれます。
例:おみくじプログラムに機能追加
ベースのコード(第2章で登場):
python
import random
print(random.choice(["大吉", "中吉", "小吉", "吉", "凶"]))
生成 AI への依頼:
「このおみくじプログラムに、結果ごとにラッキーカラーも
表示される機能を追加してください。」
拡張後のイメージ:
python
import random
results = {
"大吉": "ラッキーカラー:ゴールド",
"中吉": "ラッキーカラー:ブルー",
"小吉": "ラッキーカラー:グリーン",
"吉": "ラッキーカラー:ホワイト",
"凶": "ラッキーカラー:グレー"
}
result = random.choice(list(results.keys()))
print(f"結果:{result}")
print(results[result])
アプローチ② 別のデータに応用する
同じ仕組みのコードを、別の場面や別のデータに使い回すことができます。
たとえば「売上CSVの集計コード」を作ったなら:
「さっきのCSV集計コードを、売上データではなく
アンケート結果のCSVにも使えるように書き直してください。
集計する列名を変数で指定できるようにしてください。」
汎用性を持たせることで、一度作ったコードの価値が何倍にも広がります。
アプローチ③ コードをシンプルにしてもらう
動くけど長くて読みにくい…そんなときは生成 AI にリファクタリング(コードの整理)を頼みましょう。
「このコードを、同じ動作を保ちながらもっとシンプルに
書き直してください。関数を使ってまとめてください。」
3. エラーへの向き合い方(デバッグ)
エラーは「失敗」じゃなく「ヒント」
プログラムを動かすと、こんなメッセージが出ることがあります。
Traceback (most recent call last):
File "sample.py", line 5, in <module>
print(mesage)
NameError: name 'mesage' is not defined
「エラー=失敗」と思うと気が滅入りますが、実はエラーメッセージにはバグの場所と原因が書かれています。慌てず読んでみましょう。
エラーメッセージの読み方
NameError: name 'mesage' is not defined
| 部分 | 意味 |
|---|---|
NameError | エラーの種類(名前に関するエラー) |
'mesage' is not defined | mesage という名前が定義されていない |
この場合、mesage はタイポ(打ち間違い)で、正しくは message です。よくあるエラーの多くは、スペルミス・インデントのズレ・全角スペースが原因です。
よくあるエラーと対処法
| エラー名 | よくある原因 | 対処法 |
|---|---|---|
NameError | 変数名の打ち間違い | スペルを確認する |
SyntaxError | 文法の間違い(カッコ漏れなど) | エラー箇所の前後を見直す |
IndentationError | インデント(字下げ)のズレ | スペースの数を統一する |
ModuleNotFoundError | ライブラリが未インストール | pip install ライブラリ名 を実行 |
生成 AI にデバッグを手伝ってもらおう
エラーが解決できないときは、生成 AI に丸ごと投げてしまいましょう。
「以下のPythonコードを実行したら、このエラーが出ました。
原因と修正方法を教えてください。
【コード】
(エラーが出たコードをそのままペースト)
【エラーメッセージ】
NameError: name 'mesage' is not defined」
コードとエラーメッセージをセットで貼り付けるのがポイントです。生成 AI は原因を特定し、修正済みのコードを返してくれます。
実践:定期実行 × 応用 × デバッグを組み合わせる
最後に、3つの要素を組み合わせた実践的な例を見てみましょう。
シナリオ:毎朝、売上CSVを自動で集計してコンソールに出力する
python
import schedule
import time
import pandas as pd
def summarize_sales():
try:
df = pd.read_csv("sales.csv")
total = df["売上金額"].sum()
print(f"本日の売上合計:{total:,} 円")
except FileNotFoundError:
print("CSVファイルが見つかりません。パスを確認してください。")
except KeyError:
print("「売上金額」列が見つかりません。列名を確認してください。")
# 毎朝 8:30 に実行
schedule.every().day.at("08:30").do(summarize_sales)
while True:
schedule.run_pending()
time.sleep(60)
try / except を使うことで、ファイルが見つからない・列名が違うといったエラーが起きてもプログラムが止まらずにメッセージを表示して続行できます。実務で使うコードには、こういったエラー対策を入れる習慣をつけましょう。
第3章まとめ
| テーマ | 学んだこと |
|---|---|
| 定期実行 | schedule ライブラリで、決まった時間にプログラムを自動で動かせる |
| 応用 | 機能追加・別データへの転用・コードの整理を生成 AI と一緒に進められる |
| デバッグ | エラーメッセージはヒント。種類を知り、生成 AI にも頼りながら解決する |
ここまで3章を通じて、Python の入口から実践的な使い方まで一気に駆け抜けました。次はエピローグで、これからの学習をどう続けていくかをお伝えします!


コメント