完全初心者向けにやさしく書いています。私自身が実際に体験した失敗談と、すぐに使える改善策を共有します。
目次
はじめに
Pythonを使った自動化はとても便利です。メール送信、データ集計、グラフ作成など、手作業だと時間がかかる作業を一気に自動化できます。
ただし、私も最初は何度も失敗しました。失敗から学んだことをシンプルにまとめますので、これから挑戦する方の参考になれば嬉しいです。
失敗ケース①:メールが送信されない
状況
やったこと:Pythonを使って社内へ自動メール送信するスクリプトを作成し、本番で実行したがメールが届かない。
原因
社内のメール送信サーバ(SMTP)の認証方式や許可リストが変わっており、スクリプトが認証できていなかった。
学び・対処法
- 本番実行前に必ずテスト送信(自分宛)を行う。
- エラーが出たらログ(例:例外メッセージ)を保存して原因を特定する。
テスト送信のサンプルコード
import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg["Subject"] = "テスト送信"
msg["From"] = "your@company.com"
msg["To"] = "yourself@company.com"
msg.set_content("動作確認のテストです。")
with smtplib.SMTP("smtp.company.local", 587) as s:
s.starttls()
s.login("your_user", "your_password") # 認証方法を確認
s.send_message(msg)
print("送信完了(テスト)")
失敗ケース②:pandasによるデータ集計で予期せぬ出力
状況
やったこと:CSVを読み込んで集計したら、合計が明らかにおかしい(数値が結合されているように見える)。
原因
CSV内の数値が文字列(str
)として読み込まれていたため、数値計算が正しく行われず予期せぬ結果になっていた。
学び・対処法
- データ読み込み後に
df.dtypes
で型を確認する。 - 必要に応じて
pd.to_numeric()
やastype()
で型変換を行う。 - 集計後は数値の合計や平均を目視でチェックする(極端に大きい/小さい値がないか)。
型チェック&変換サンプル
import pandas as pd
df = pd.read_csv("sales.csv")
print(df.dtypes) # 型を確認
# 数値として扱いたい列を変換(エラーをNaNにする)
df["売上"] = pd.to_numeric(df["売上"], errors="coerce")
# 集計例
total = df["売上"].sum()
print("売上合計:", total)
失敗ケース③:matplotlibで日本語が表示されない
状況
作成したグラフのラベルやタイトルが「□□□」のように表示され、日本語が読めない。
原因
matplotlibのフォント設定がされていなかったため。
学び・対処法
- 環境に日本語フォントをインストールする(例:Noto Sans JP等)。
- matplotlibでフォントを明示的に設定する。
日本語フォントを設定する例
import matplotlib.pyplot as plt
import matplotlib as mpl
# フォントパスを直接指定する方法の例(OSや環境でパスは変わります)
mpl.rcParams['font.family'] = 'Noto Sans JP' # 事前に環境へインストールしておく
plt.title("勤怠レポート")
plt.plot([1,2,3], [4,5,6])
plt.xlabel("日付")
plt.show()
共通の学び:失敗を減らすためのチェックリスト
- 本番で動かす前にテスト環境で動作確認(自分宛のメールやサンプルデータで実行)。
- 入力データの型と欠損値をチェックする(
df.dtypes
,df.isnull().sum()
)。 - 権限や接続先(SMTP、DB、API)の仕様変更がないか確認する。変更履歴があれば要チェック。
- ログを残す(エラー発生時に何が起きたか追跡できるように)。
- 一度に全部やらない:小さな処理から順に組み立て、各段階で確認する。
終わりに:失敗は学びのチャンス
自動化は万能ではありません。ですが、失敗を一つ一つ潰していけば、確実に「便利な仕組み」を作れます。
最初は小さな自動化(テスト送信やCSVの簡単集計)から始めて、成功体験を積み重ねていきましょう。失敗はあなたを強くします。ぜひ挑戦してみてください!