Kon's DX Lab - Case Study

Day 48|Slack通知×ファイル監視×自動加工。「気づいたら終わってる」をPythonでつくる実験

Published on 2025-05-19

🔬 Case Study Summary
Problem

(ここに課題を記述)

Result

(ここに具体的な成果を記述)


Tech & Process

(ここに採用技術とプロセスを記述) コードを詳しく見る »

こんにちは、こんです🦊
今日は、「誰かが気づくまで処理が止まってる…」という属人的な業務をどうにかしたくて、Slack通知×ファイル監視×自動加工+自動整理まで含めた自動化スクリプトを組んでみました。


実験のきっかけ:人が気づかないと進まない作業、ありませんか?

こんなシーン、ありませんか?

  • ファイルは届いてるけど、中身が完成するまで気づけない

  • 誰かが「できました」って言ってくれないと処理できない

  • 同じ処理を何度もしていて、どれが最新かわからない

そんな「反応待ち型の業務」を自動で回せないか?と思い、今回の実験に踏み切りました。


作ってみたもの(構成概要)

✅ スクリプト①|入力完了を検知して処理開始

  • 特定のフォルダを毎回チェック

  • ファイルがあれば開く → 指定列がすべて埋まっていたら処理を実行

  • Excel加工(列追加・差分計算)+CSV出力

  • Slackに処理通知を送信

  • すでに出力済みなら処理はスキップ(安全設計)

✅ スクリプト②|CSVを変換して整理フォルダに自動移動

  • あるCSVの特定列を選んで列名を変換

  • 出力後、自動的に「済」フォルダに移動

  • Slackに完了通知+保存先を明記


実感したメリット

1. 「反応待ち」からの脱却

入力完了を検知して勝手に処理。人の声掛けや確認作業が不要になりました。

2. Slack通知で“気づける”

処理完了をSlackに投稿することで、周囲にも進行状況が共有されるように。

3. 「スキップ」設計で何度でも実行可能

出力ファイルがあればスキップ → 重複実行の心配もなく、安心してスケジュール実行できます。


再利用できる!汎用スクリプト(テンプレ)

🔁 入力完了を検知して処理するテンプレ

if df["対象列"].isnull().any():
    print("未入力があるためスキップ")
    exit()

🧼 出力ファイルがあれば処理スキップ

if os.path.exists(output_path):
    notify_slack("既に出力済のためスキップします")
    exit()

📨 Slackに通知するテンプレ

from slack_sdk import WebClient
client = WebClient(token="xoxb-...")
client.chat_postMessage(channel="#通知用チャンネル", text="処理が完了しました。")

📦 フォルダ整理(済フォルダへ移動)

import shutil
shutil.move(input_path, os.path.join(processed_folder, os.path.basename(input_path)))

実際の流れ(想定例)

  • 📥 input/ フォルダに data_yyyymmdd.xlsx が置かれる

  • ✅ F列がすべて埋まっていたら result.xlsx と upload.csv を出力

  • 📤 Slackに完了通知

  • 📦 元ファイルは input_done/ に、出力ファイルは result_done/ に自動移動


次回予告:この仕組みをStreamlitでUI化してみる!

今は裏で自動で動く構成でしたが、次は:

  • フォルダや列名を指定できるUI

  • ステータスを画面で確認できる仕組み

  • ワンクリック実行できるボタン付き画面

などをStreamlitで整えて、さらに業務に溶け込ませていきたいと思います!


まとめ:「気づいたら終わってる」仕組みをPythonで実現できる

手作業でも、エクセルでも、Slackでもいいけれど、「人が都度反応する」フローは意外と見落としがち。

処理そのものより、「トリガーと通知」が整えば、業務は驚くほどスムーズに回ります。

次回はもっと汎用性のある形に育ててみます!🦊


#業務改善 #Slack通知 #Python自動化 #ファイル監視 #ノーコードじゃない効率化 #ChatGPTで業務DX