【Python入門】12章の演習プログラム

 ここでは、「12章の演習プログラム」を通して、12章で学んだ内容を実際にコードに落とし込む演習を行います。ファイル監視からExcelの自動化、システムリソースの監視まで、実務でもすぐに役立つ機能を一気に試してみましょう。これまでに培ったPythonの基礎と組み合わせて、より実践的なプログラムに仕上げることが狙いです。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.Excelの自動化

1.1.Excelを自動化する(openpyxlライブラリ)

  • ExcelファイルをPythonで操作するためのライブラリとして openpyxl を利用しました。
  • ワークブックを開き、シートを選択し、セルに読み書きする手順を把握することで、定型業務の効率化が可能です。
import openpyxl

# Excelファイルを開く
wb = openpyxl.load_workbook("sample.xlsx")
sheet = wb.active

# セルの読み取り
value_a1 = sheet["A1"].value
print("A1セルの値:", value_a1)

# セルの書き込み
sheet["B1"].value = "書き込みテスト"
wb.save("sample_modified.xlsx")

1.2.セルの値の操作

  • セルの値を取得・変更する基本的なコード例を学びました。文字列だけでなく、数値や日時などのデータ型にも対応します。
  • 必要に応じて行や列を追加したり、書式設定などにも踏み込むことで、より高度な自動化が実現できます。

1.3.Excelの作業を自動化する

  • 複数のシートやファイルを横断し、データをまとめたり分析結果を出力したり、テンプレートベースで帳票を作るなど、多様な応用が可能です。
  • 月次レポートや大量データの加工・再配置など、現場のルーティンワークを大幅に省力化できます。

2.ファイルの監視とシステムリソースの監視

2.1.ファイルの追加や削除の監視

  • ディレクトリ内のファイルの増減を自動チェックする仕組みを構築できます。
  • watchdog といったライブラリを使えばリアルタイムにファイルの変化を検知でき、ログの記録やアラートの発火にも応用できます。
# サンプルとして擬似的にファイル数をチェックする例
import os
import time

TARGET_DIR = "./monitor_folder"
last_count = len(os.listdir(TARGET_DIR))

while True:
    time.sleep(5)  # 5秒ごとにチェック
    current_count = len(os.listdir(TARGET_DIR))
    if current_count != last_count:
        print("ファイルの増減を検知しました!")
        last_count = current_count

2.2.CPUやメモリの使用率の監視

  • psutil などのライブラリを活用し、CPUやメモリの使用率を数値で取得できるため、定期的に記録したり、閾値を超えた際に通知を出す仕組みが作れます。
  • サーバーの稼働状況やアプリケーションのパフォーマンス監視に役立ちます。

3.管理者にメールを送信する

  • 自動化の仕上げとして、エラーや異常を検知したときにメールで通知する仕組みを構築できます。
  • Pythonの標準ライブラリ smtplib を用いたシンプルな実装や、SendGrid や Amazon SES などの外部サービスとの連携も可能です。

 メールアドレス、ユーザー名、パスワードを実際に利用できるご自身のアカウント情報に置き換える必要があります。

import smtplib
from email.mime.text import MIMEText

def send_alert(subject, body, to_email):
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["To"] = to_email
    msg["From"] = "alert@example.com"

    with smtplib.SMTP("smtp.example.com", 587) as server:
        server.starttls()
        server.login("ユーザー名", "パスワード") #ここにユーザー名とパスワードを指定する
        server.send_message(msg)

send_alert("CPU使用率高騰のアラート", "CPU使用率が80%を超えました。", "admin@example.com")

まとめ

 このように12章では、Excelファイルの操作といった業務自動化の定番から、ファイルやシステムリソースの監視に加え、メール通知でのアラート発行まで、一連の自動化ワークフローを構築する手法を学んできました。これらを組み合わせることで、日常的な定型作業やトラブル対応を大幅に効率化できます。
 次の13章では、PythonとAI技術の活用について解説していきます。これまで身に付けたスキルを活かしながら、新しい分野への応用にチャレンジしてみましょう。