「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問で自分の状況を確認してください。
| 確認ポイント | YES | NO |
|---|---|---|
| 相手の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を使って自動化する方法|非エンジニアが現場で実践した5場面
- WebアプリとしてのURL公開・サーバーなし運用を詳しく知りたい:社内で使うWebツールを簡単に公開する方法|サーバー不要で今日から使える3段階
- Excelマクロ共有の限界から脱却したい:自作の業務ツールを社内で共有する方法|Excelマクロの限界とWebアプリ化という選択肢
- コードを書かずにAIでツールを作りたい:AIで業務ツールを作る方法|コードが書けない人でも来週には完成する手順
まとめ
- Pythonスクリプトは「Pythonが入っているPCでしか動かない」問題を解決しないと社内展開できない
- exe化は相手のPC環境を問わずダブルクリックで動かせるが、更新のたびに再配布が必要
- batファイル + 共有フォルダは、Python環境が揃っていれば最もシンプルで更新コストが低い
- StreamlitはLAN内でURLを共有するだけで全員が使える。更新もサーバー側だけで完結する
- どの方法でも「渡し方(A4マニュアル・スクリーンショット手順・FAQ)」の設計が展開成功の鍵
「batファイルのテンプレートや、マニュアル雛形まであると助かるんだけど」という方に向けて、社内展開用のテンプレートセットをNoteでまとめる予定です。興味がある方はブログをブックマークしておいてください。
製造業・総務・事務系の現場でPythonを使った自動化に取り組んでいる方は、製造業でPythonを使って自動化する方法も読んでみてください。「何を作るか」の参考になります。