前回、在庫ビューアのようなツールをどのGUIライブラリで作るかを見ました。今回はその次の壁、「作ったツールを、どうやって人に渡すか(配布)」です。自分のPCでは動くのに、いざ同僚に渡そうとすると「Pythonが入っていなくて動かない」「どう起動するのか分からないと言われる」——ここでつまずく人はとても多いです。
1. 結論:配布は「相手のPCにPythonがあるか」で決まる
先に結論です。配り方は3つ。そして選び方の軸はシンプルで、「相手のPCにPythonがあるか」と「何人に配るか」でほぼ決まります。まずはこの早見表で当たりをつけてください。
| こういう時に | これ | ひとことで言うと |
|---|---|---|
| 自分のPCで使う・Pythonが入っている | .bat(バッチ) | ダブルクリックで起動する小さな起動ファイル |
| Pythonの無いPCに渡す | PyInstaller(.exe) | Python不要の単体アプリにまとめる |
| 社内の数人で同時に使いたい | サーバー型(Streamlit) | 1台で起動し、各自のブラウザから開く |
この記事では、なぜこの3つで足りるのか(理由)と、前回作った在庫ビューアを実際に配るとどうなるか(具体例)を順に見ていきます。最後に用途別の選び方をまとめます。
2. 理由:配布の壁は「実行環境があるか」
Pythonのプログラムは、そのままでは「Pythonが入っているPC」でしか動きません。配布で詰まるのは、ほぼこの一点です。だから決めるべき問いは次の3つです。
- 相手のPCにPythonがあるか … 無ければ.batは動かない(exeかサーバー型へ)
- ファイルを渡すのか、URLを教えるのか … 渡すなら.bat/exe、共有するならサーバー型
- 何人で使うか … 自分だけか、同じPCの数人か、社内の複数PCか
言い換えると、.batとexeは「ファイルを渡す」配り方、サーバー型は「URLを教える」配り方です。性質がまるで違うので、相手の環境に合わせて選びます。配る範囲が広がるほど、手間とセキュリティの注意が増える——これが全体を貫く軸です。
3. 具体例:在庫ビューアを配ってみる
前回の在庫ビューアを題材に、3つの配り方を順に見ていきます。同じツールでも、配り方によって手間と注意点がまったく変わります。
.bat ─ ダブルクリックで起動できるようにする
一番手軽なのが.bat(バッチファイル)です。中身は「このPythonファイルを実行する」という一行の命令で、これを置いておけば、コマンドを打たなくてもダブルクリックで起動できます。ただし、これは相手のPCにPythonと必要なライブラリが入っていることが前提です。入っていないPCでは動きません。自分用、または同じPCを使う数人向けの配り方です。
.batの中身を見る
@echo off
rem このバッチと同じフォルダにある app.py を実行する
cd /d "%~dp0"
python app.py
pausePyInstaller(.exe)─ Pythonの無いPCに渡す
相手のPCにPythonが無い場合は、PyInstallerで単体で動く.exeにまとめます。Python本体や必要なライブラリを丸ごと一つの実行ファイルに詰め込むので、相手は何もインストールせずダブルクリックで使えます。コマンドは一行です。
PyInstallerのコマンドを見る
rem まずインストール
pip install pyinstaller
rem 1ファイルにまとめる。--noconsole はGUIアプリで黒い画面を出さない指定
pyinstaller --onefile --noconsole app.py
rem 完成した .exe は dist フォルダの中にできる便利な一方で、exe化には知っておくべき”つまずき”がいくつかあります。これを知らずに配ると「ウイルス扱いされた」「ファイルが重い」と慌てることになります。
- SmartScreenの警告:署名のないexeは、Windowsが「不明な発行元」と警告を出すことがある。受け取った相手が驚くので、事前に「警告が出るが詳細→実行で開ける」と伝えておく。
- ファイルサイズが大きい:Python一式を同梱するため、小さなツールでも数十MB〜になりやすい。メール添付には向かず、共有フォルダ等で渡す。
- 日本語フォントの同梱:matplotlibでグラフを出すアプリは、フォント設定をしてもexe化で日本語が出なくなることがある。フォントを明示的に同梱する手当てが要る場合がある。
サーバー型(Streamlit)─ 社内で同時に使う
前回のStreamlit版のように、ブラウザで動くアプリは「ファイルを配る」のではなく、1台のPCで起動して、みんながブラウザからアクセスする形で共有できます。全員が同じ最新版を使えるのが利点で、更新も起動PCのファイルを直すだけで済みます。社内の数人で同じツールを使いたいときに向いています。
ただし、ここはファイルを渡す方式と違ってネットワークやセキュリティの注意点が出てきます。代表的なものを概念として挙げておきます(環境によって挙動が変わるため、詳細は別の機会に扱います)。
- 同じネットワークにいる必要がある:基本は社内LANの中で使う想定。起動PCのアドレスを他の人が開く形になる。
- ファイアウォール等で弾かれることがある:他のPCからのアクセスが、起動PC側の設定でブロックされる場合がある。社内のネットワーク環境に依存する。
- 起動PCが動いている間だけ:サーバー役のPCを閉じると全員使えなくなる。常時動かす運用には、別の仕組みが必要になる。
「社外の人にも使ってほしい」「インターネットに公開したい」となると、常時稼働するサーバーや、ログイン・アクセス制限といった本格的な仕組みが必要になります。ここは画面や配布の話だけでは済まなくなる領域なので、無理に自作せず専門家に相談するのが安全です。
3つを一枚にすると
| 観点 | .bat | PyInstaller(exe) | サーバー型(Streamlit) |
|---|---|---|---|
| 相手のPython | 必要 | 不要 | 不要(ブラウザのみ) |
| 配り方 | ファイルを渡す | ファイルを渡す | URLを教える |
| 人数 | 自分〜同PC数人 | 渡した人数だけ | 社内の複数PC |
| 更新 | 配り直し | 配り直し | 1台直すだけ |
| つまずきどころ | Pythonが要る | SmartScreen・サイズ・日本語フォント | ネットワーク・ファイアウォール・常時起動 |
こうして並べると、「自分用なら.bat、渡すならexe、社内共有ならサーバー型」という住み分けが見えてきます。どれが優れているかではなく、相手の環境と人数で決まります。
4. まとめ:あなたのケースはどれか
- 自分用・同じPCの数人(Pythonあり) → .bat(ダブルクリックで起動)
- Pythonの無いPCに渡す → PyInstaller(exe。ただしSmartScreen・サイズ・日本語フォントに注意)
- 社内の複数人で同時に使う → サーバー型(Streamlit。社内LAN内で。社外公開は別の話)
配布は「作る」より地味ですが、ここでつまずくと「せっかく作ったのに使ってもらえない」で終わってしまいます。まずは自分用に.batで動かし、渡す必要が出たらexe、共有したくなったらサーバー型——と、必要になった段階で一段ずつ広げていくのが、無理がなくおすすめです。

コメント