社内の非エンジニアにPythonツールを展開する方法|exe・Streamlit・bat配布の選び方と手順

「Pythonでツールを作れた。でも、自分のPCでしか動かない…」という壁に当たっていませんか。

Pythonが入っていないPCでは実行できない。pip installの手順を渡しても同僚には難しすぎる。IT部門に頼もうにも優先度が低くて動いてもらえない。せっかく作ったツールが、自分の業務改善にしか使えていない状態——これは多くの人が通る壁なんです。

私も製造業の生産管理で同じ経験をしました。計算を自動化するPythonスクリプトを作ったのに、隣の担当者のPCでは「Pythonが見つかりません」とエラーが出て、結局また口頭で説明することに。ツールを作る手間より、展開できないもどかしさの方がしんどかったです。

この記事では、Pythonツールを社内に展開する3つの方法(exe化・batファイル・Streamlit)を、状況別の選び方と最小手順で整理します。「自分の状況にどれが合うか」から判断できるようにしました。この記事は、Pythonスクリプトがすでに動いている状態の方を対象にしています。


「自分のPCでしか動かない」の正体

原因:Pythonが入っていないPCでは実行できない

Pythonスクリプト(.pyファイル)は、実行するPC側にもPythonがインストールされていないと動きません。自分のPCで作って動いても、同僚のPCに渡した瞬間にエラーになるのはこれが原因です。

さらに、ライブラリ(pandas、openpyxlなど)も同様で、同じものがインストールされていないと動きません。「.pyファイルを共有フォルダに置くだけ」では動かないのはこのためです。

解決策の方向性:「Pythonを消す」か「Webにする」か

展開方法は大きく2方向です。

方向①:Pythonを相手側PCで不要にする
exe化(PyInstaller)やbatファイルで、Python環境ごとパッケージして渡す方法。

方向②:自分のPC(サーバー)でPythonを動かしてWebで使わせる
Streamlitで社内LAN向けWebアプリにする方法。相手のPCにはブラウザだけあれば良い。

どちらが正解かは状況次第なので、次のセクションで判断フローを整理します。


社内展開の方法を選ぶ判断フロー

以下の3問で自分の状況を確認してください。

確認ポイントYESNO
相手のPCに自分でインストール作業ができる(またはしてもらえる)→ batファイル配布でOK→ exe化 or Streamlit へ
自分のPCを常時起動しておける(または社内に常時起動PCがある)→ Streamlit(LAN公開)が最も楽→ exe化が現実的
ツールを更新するたびに再配布してもいい→ exe化でも問題なし→ Streamlit or bat + 共有フォルダ推奨

大まかな方針として:

  • 社内でIT作業の一切を自分が引き受ける場合 → Streamlitが最も運用が楽
  • 一度渡したらメンテナンスしたくない場合 → exe化が確実
  • Pythonを全員がインストール済みの環境 → batファイルが最もシンプル

方法①:exe化(PyInstaller)——ダブルクリックで動かしたい場合

向いているケース

  • 相手のPCにPythonを入れられない(セキュリティポリシーで制限されている)
  • ダブルクリック一発で動かしてほしい
  • インターネットにつながらない環境でも使う
  • 社内LANがない、または常時起動PCが用意できない

基本的な作り方(コマンド1行)

PyInstallerというライブラリを使います。インストールとビルドは以下の2ステップです。

# PyInstallerのインストール(初回のみ)
pip install pyinstaller

# exeファイルを作る(your_tool.pyを自分のファイル名に変える)
pyinstaller --onefile your_tool.py

これを実行すると dist フォルダの中に your_tool.exe が生成されます。このexeファイルだけを相手に渡せば、Pythonが入っていないPCでも動きます。

--onefile オプションを付けると、依存ライブラリも1つのexeに全部まとめてくれます。渡すファイルが1つで済むのでおすすめです。

よくある落とし穴

exe化でよく出る問題は2つです。

① ウイルス対策ソフトに誤検知される
会社のウイルス対策ソフトが「知らないexeファイル = 危険」と判断してブロックすることがあります。実害はないのですが、IT部門に事前に「自作のexeファイルを配布する」と伝えておくのが無難です。

② 外部ファイル(CSV・設定ファイル)のパスがズレる
スクリプト内でファイルパスを相対パスで書いていると、exe化したときにズレることがあります。exeファイルと同じフォルダにデータファイルを置く設計にしておくか、絶対パスを使うかで対処します。


方法②:batファイル + 共有フォルダ——Python環境が揃っている場合

向いているケース

  • 使う全員のPCに同じPythonとライブラリが入っている
  • 社内の共有フォルダ(NAS・OneDrive等)にアクセスできる
  • 「Pythonを起動して実行」という手順を相手に教えたくない

batファイルの作り方(テンプレート)

batファイルとは、Windowsのコマンドをダブルクリックで実行できるファイルです。Pythonスクリプトをbatファイルで包むと、相手はダブルクリックするだけで実行できます。

@echo off
cd /d %~dp0
python your_tool.py
pause

このbatファイルを、Pythonスクリプトと同じフォルダに置いてください。%~dp0 はbatファイル自身のフォルダを指すので、スクリプトの場所が変わっても動作します。

pause を入れておくと、実行後に「何かキーを押せば終了」という表示が出て、エラーが起きてもすぐに画面が閉じません。トラブル対応がしやすくなります。

共有フォルダに置くだけで配布できる

batファイルとPythonスクリプトをセットで共有フォルダに置けば、誰でも同じバージョンのツールを使えます。更新するときも共有フォルダのファイルを差し替えるだけで、全員に自動で届きます。


方法③:Streamlit——URLを開くだけで使えるWebアプリ化

向いているケース

  • 複数人が同時に使う(フォーム入力・データ閲覧など)
  • スマートフォンやタブレットからも使いたい
  • 相手のPCへのインストール作業を一切したくない
  • 常時起動できるPC(または社内サーバー)がある

LAN内でStreamlitサーバーを起動する方法

Streamlitを使うと、PythonスクリプトをWebアプリとして動かせます。社内LANで公開すると、同じネットワークのPC・スマホからブラウザで開けます。

# Streamlitのインストール(初回のみ)
pip install streamlit

# 社内LAN向けに起動(0.0.0.0で全インターフェースに公開)
streamlit run your_app.py --server.address 0.0.0.0

起動したPCのIPアドレスはコマンドプロンプトで ipconfig を実行し、「IPv4アドレス」の欄で確認できます(例:192.168.1.10)。社内の誰かに http://192.168.1.10:8501 というURLを渡せばアクセスできます。

セキュリティ・ポート解放について

社内PCにはWindowsファイアウォールが動いているため、外部からのアクセスをブロックしている場合があります。Streamlitのデフォルトポート(8501)をファイアウォールで許可する設定が必要になることがあります。

IT部門がある会社では事前に「社内LANで使う内部向けツールをStreamlitで立ち上げたい」と伝えておくのが一番スムーズです。


「渡し方」が展開成功の9割を決める

実際に展開した計算ツールでは、最初の2週間でSlackへの問い合わせが10件以上来ていました。A4一枚のマニュアル(スクリーンショット付き)を用意してからは、翌月の問い合わせがほぼゼロになりました。設計が正しければ、ツール展開後の運用負荷は限りなく小さくできます。

ツールの配布方法が決まっても、「どう使わせるか」を設計しないと結局使われません。私の経験では、展開後の最初の2週間が勝負で、ここで「面倒だった」と思われると二度と開かれなくなります。

A4一枚マニュアルを作る

詳細なマニュアルは誰も読みません。「何を入力して、どこを見るか」だけが書いてあるA4一枚の図解が最も使われます。

記載する内容は3点だけで十分です。

  • 起動方法(exeをダブルクリック / URLを開く)
  • 入力項目と入力例
  • よくあるエラーと対処(「〇〇と表示されたら△△してください」)

起動手順はスクリーンショットで伝える

文字で説明するより、スクリーンショットに矢印を入れた方が確実に伝わります。「このアイコンをダブルクリック → こんな画面が出る → ここに入力する」という流れを3枚の画像で示すだけで、質問がほぼゼロになります。

最初の1ヶ月はFAQを育てる

展開直後の1ヶ月は、同じ質問が繰り返し来ます。その都度Notionやメモ帳に「Q: 〇〇はどうすればいいですか → A: △△」を追記しておきましょう。2ヶ月目以降は「FAQを見てください」で対応できるようになります。


方法別の更新・メンテナンスコスト比較

ツールは作って終わりではなく、使われるほど「あの計算式を変えてほしい」「新しい列を追加してほしい」という要望が来ます。展開方法によって更新コストが大きく変わります。

展開方法更新時の作業再配布の必要
exe化(PyInstaller)スクリプト修正 → exeを再作成 → 全員に再配布あり(都度必要)
batファイル + 共有フォルダ共有フォルダのスクリプトを上書きするだけなし(即反映)
Streamlit(LAN公開)サーバー側のスクリプトを更新 → 再起動なし(即反映)

更新頻度が高くなりそうなツールはStreamlit or batファイル+共有フォルダ、一度作ったら変更がほとんどない計算ツールはexe化、という使い分けが現実的です。


次のステップ

展開方法が決まったら、以下も参考にしてください。展開するツールをまだ作っていない方は、製造業でPythonを使って自動化する方法から読むのがおすすめです。


まとめ

  • Pythonスクリプトは「Pythonが入っているPCでしか動かない」問題を解決しないと社内展開できない
  • exe化は相手のPC環境を問わずダブルクリックで動かせるが、更新のたびに再配布が必要
  • batファイル + 共有フォルダは、Python環境が揃っていれば最もシンプルで更新コストが低い
  • StreamlitはLAN内でURLを共有するだけで全員が使える。更新もサーバー側だけで完結する
  • どの方法でも「渡し方(A4マニュアル・スクリーンショット手順・FAQ)」の設計が展開成功の鍵

「batファイルのテンプレートや、マニュアル雛形まであると助かるんだけど」という方に向けて、社内展開用のテンプレートセットをNoteでまとめる予定です。興味がある方はブログをブックマークしておいてください。

製造業・総務・事務系の現場でPythonを使った自動化に取り組んでいる方は、製造業でPythonを使って自動化する方法も読んでみてください。「何を作るか」の参考になります。