0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

社内PCで動く簡易アプリはElectronとPythonスクリプトのどちらが向いているか

0
Posted at

最近、社内で受け取った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つがあれば運用を始めやすいと思います。

  1. 入力フォルダまたは対象ファイルの選択
  2. 出力先の選択
  3. 処理条件の設定
  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アプリのどれが合うかを、入力データと運用方法から一緒に整理できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?