最近、社内で受け取ったCSVを整形し、指定フォルダへ出力する小さなツールを考える場面がありました。最初は「画面があるほうが使いやすそう」と思ったのですが、処理内容を整理すると、Pythonスクリプトだけで十分な部分も多くありました。
一方で、設定値を毎回変えたい、処理結果を画面で確認したい、担当者が増える、といった条件があると、スクリプトだけでは運用が少し苦しくなることがあります。
この記事では、Windowsの社内PCで使うローカル業務ツールを前提に、ElectronとPythonスクリプトをどう選ぶかを整理します。CSV・Excel・画像・PDFなどのローカルファイルを扱うケースを想定しています。
まず結論
単純な入力と出力が決まっているなら、Pythonスクリプトから始めるのが向いていると思います。
たとえば「指定フォルダ内のCSVを読み、列名を変えて別フォルダへ保存する」「ファイル名をルールに沿って一括変更する」といった処理です。実行方法を限定できるなら、画面を作らなくても業務を減らせます。
ただ、利用者が技術者以外で、設定・履歴・エラー内容を自分で確認してもらいたい場合は、Electronのほうが扱いやすいことがあります。設定画面、進捗表示、ログ一覧、実行ボタンを1つのアプリにまとめられるためです。
判断を簡単にすると、次のようになります。
| 状況 | 向いている選択 |
|---|---|
| 入出力のルールが固定されている | Pythonスクリプト |
| 毎回処理条件を変える | Electron |
| 実行する人が1〜2人で、手順を共有できる | Pythonスクリプト |
| 複数部署・複数人が日常的に使う | Electron |
| CSV・Excel・画像の変換が中心 | Pythonスクリプト |
| 設定、確認、履歴、再実行まで必要 | Electron |
| まず業務に使えるか試したい | Pythonスクリプト |
| ツールとして長く配布・保守したい | ElectronまたはPython製GUI |
ここで大切なのは、技術の好みよりも「利用者がどこで迷うか」を見ることだと感じています。
Pythonスクリプトで足りるケース
Pythonが向いているのは、処理の流れが短く、判断が少ない仕事です。
たとえば、経理システムから出力したCSVを別システム向けの形式に変換する処理を考えます。入力ファイル、変換ルール、出力先が固定なら、引数を受け取って実行するだけでも実用になります。
from pathlib import Path
import csv
source = Path(r"C:\work\input\sales.csv")
target = Path(r"C:\work\output\sales_converted.csv")
with source.open(encoding="utf-8-sig", newline="") as src:
rows = csv.DictReader(src)
with target.open("w", encoding="utf-8-sig", newline="") as dst:
writer = csv.DictWriter(
dst,
fieldnames=["customer_code", "amount"]
)
writer.writeheader()
for row in rows:
writer.writerow({
"customer_code": row["取引先コード"],
"amount": row["金額"],
})
この程度の処理なら、Electronで画面を作るより、変換ルールの検証に時間を使ったほうがよいことがあります。
実際にやってみると、社内ツールで困るのは画面がないこと自体よりも、「どのファイルを処理したか分からない」「途中で失敗しても気づけない」といった運用面です。だからこそ、Pythonで始める場合でも、最低限のログとエラー表示は入れておくほうが安心です。
from datetime import datetime
def write_log(message: str):
log_file = "tool.log"
with open(log_file, "a", encoding="utf-8") as f:
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
f.write(f"[{now}] {message}\n")
ログには、入力ファイル名、出力先、処理件数、エラー内容を残します。問題が起きたときに「動かなかった」だけで終わらず、原因を確認できるようになります。
Pythonスクリプトを.exe化して配布するなら、PyInstallerなどを使う方法があります。ただ、実行ファイルにすれば保守が不要になるわけではありません。Windows Defenderの警告、配布先PCとの差分、更新版の置き換え方法は、最初に考えておく必要があります。
Electronが向いている場面
Electronは、HTML、CSS、JavaScriptでデスクトップアプリを作る選択肢です。Web画面を作る感覚で、Windowsアプリの画面を構成できます。
特に向いているのは、利用者が処理内容を選んだり、結果を確認したりするツールです。
たとえば、次のような要件が出てきたらElectronを検討しやすくなります。
- CSV・Excel・画像など、複数種類のファイルを選択したい
- 出力先や変換ルールを画面から変更したい
- 処理中の進捗や、成功・失敗の件数を表示したい
- 過去の実行ログを確認したい
- 利用者ごとに異なる設定を保存したい
- ボタン操作中心にして、手順書への依存を減らしたい
Electronでは、画面側でファイルを選び、Node.js側でローカルファイルを処理する構成にできます。設定画面と実行ログを並べて表示できるため、ツールとしての分かりやすさを作りやすいです。
最初の画面は、凝ったダッシュボードでなくても十分です。個人的には、以下の4つがあれば運用を始めやすいと思います。
- 入力フォルダまたは対象ファイルの選択
- 出力先の選択
- 処理条件の設定
- 実行結果とログの表示
ここで地味に重要なのは、実行ボタンの近くに「何をするか」を短く表示することです。たとえば「選択したCSVをUTF-8形式に変換し、出力フォルダへ保存します」と書いておくと、誤操作を減らしやすくなります。
一方で、Electronは配布物のサイズが比較的大きくなります。小さなCSV変換だけのために数百MB近いアプリを配布する構成は、少し重く感じることがあります。
また、Node.jsや依存パッケージの更新、Windows向けインストーラーの作成、コード署名の扱いなど、Pythonスクリプトより考えることは増えます。画面が必要だからElectron、とすぐ決めるより、画面が本当に運用負担を減らすかを見たほうがよさそうです。
ローカルファイル処理で先に決めておくこと
ElectronでもPythonでも、ローカルファイルを扱うなら先に仕様を決める部分があります。処理ロジックよりも、ここが曖昧なまま実装を始めると、あとから直す範囲が広がりやすいです。
まず確認したいのは、入力ファイルを上書きしてよいかです。
個人的には、最初は上書きしない設計をおすすめします。入力ファイルを残し、outputフォルダや日時付きファイル名に出力するほうが、復旧しやすいためです。
input\sales.csv
output\sales_20260715_103000.csv
logs\tool.log
ただ、出力ファイルが増えすぎると、今度は利用者が迷います。その場合は、過去30日分だけ残す、または同名ファイルは確認してから上書きする、といった運用ルールが必要になります。
次に、ネットワーク共有フォルダを扱うかも重要です。共有フォルダ上のExcelやCSVは、他の人が開いていて書き込めないことがあります。失敗時に「アクセス権がありません」とだけ表示しても、利用者は原因を判断しにくいものです。
「対象ファイルが他のPCで開かれていないか確認してください」のように、次の行動が分かるメッセージにするほうが実用的です。
文字コードも見落としやすい点です。Windows環境では、CSVがUTF-8、UTF-8 BOM付き、Shift_JISなどで混在することがあります。Excelで開けたから問題ないとは限らず、別システムへ渡す段階で文字化けすることがあります。
だからこそ、入力で許可する形式と、出力する文字コードは仕様として明文化しておくと安心です。「出力CSVはUTF-8 BOM付き」と決めるだけでも、後の調査がしやすくなります。
配布と更新は最初の版から考える
社内ツールは、完成したあとに「どう配るか」で止まることがあります。
Pythonスクリプトなら、共有フォルダに置いた.exeを実行してもらう方法があります。利用者が限られている場合は、この形でも回ることがあります。ただ、古い版を各自が持ったままになる問題には注意が必要です。
Electronならインストーラーを配布し、アプリとしてスタートメニューに登録できます。見た目は分かりやすくなりますが、更新版の配布方法、アンインストール、バージョン管理を決める必要があります。
どちらを選んでも、ツール画面やログにバージョンを表示しておくと便利です。
バージョン: 1.2.0
更新日: 2026-07-15
問い合わせが来たときに、利用者の環境と実行している版を確認しやすくなります。小さな表示ですが、保守ではかなり役に立つことがあります。
よくある失敗
よくあるのは、最初から汎用的なツールにしすぎることです。
「どんなCSVにも対応」「任意の列を自由に変換」「設定を無限に追加」と考え始めると、画面も処理も複雑になります。結果として、特定の業務を楽にするはずのツールが、設定方法を覚えるためのツールになってしまいます。
まずは、対象業務を1つに絞るのがよいと思います。「A社から来る受注CSVを、基幹システム取込用に変換する」のように、入力と出力を具体的に決めます。
もう1つは、エラーを握りつぶしてしまうことです。処理を止めずに最後まで進めたい場面もありますが、失敗したファイルと理由は必ず残す必要があります。
成功件数、失敗件数、失敗したファイル名を出せるだけでも、利用者が次に何を確認すればよいかが分かります。
まとめ
単純なローカルファイル処理なら、まずはPythonスクリプトで小さく作るのが現実的です。処理の正しさを早く確かめられ、業務に合わなかった場合も修正しやすいと思います。
ただ、設定変更、ログ確認、複数人での利用が増えるなら、Electronで画面を持たせる価値が出てきます。画面を作る目的は見栄えではなく、利用者が迷わず、安全に処理できるようにすることだと感じています。
最初からどちらかに決め切る必要はありません。Pythonで処理を固めてから、必要になった部分だけElectronの画面に載せる進め方もあります。
社内PCで動くCSV・Excel変換やローカルファイル処理を、業務に合わせて小さくツール化したい場合は、名古屋業務ツール工房で無料相談できます。スクリプト、Web、Windowsアプリのどれが合うかを、入力データと運用方法から一緒に整理できます。