自作Pythonツールを社内公開!自分のPCを簡易サーバーにして共有する方法(Streamlit)

Python

社内で使うちょっとしたツールを作ったとき、「どうやって他の人にも使ってもらうか」で悩むことがあります。
以前はこんな方法を考えていました。

  • 各PCにPythonをインストールして実行
  • 実行ファイルにして配布

ただ、これだと

  • 環境の違いで動かない
  • たくさん作ると実行ファイルが大量に作成される

など、意外と手間がかかります。

そこで今回は、自分のPCを簡易サーバーとして使い、ブラウザからアクセスできるようにする方法を試してみました。
結果として、思ったより簡単に社内ツールとして公開できたので、忘却録としてまとめておきます。

自分のPCを簡易サーバーにする仕組み

今回使うのは Streamlit というPythonのWebアプリフレームワークです。

社内LAN を通じて他のPCのブラウザからアクセス 特別なソフトを入れなくても、URLを開くだけでツールが使えるようになります。

サーバーPC(自分のPC)でStreamlitを起動

Streamlitサーバーの起動方法

サーバーとなるPCで次のコマンドを実行します。

streamlit run app.py --server.address 0.0.0.0

この設定にすると、自分のPC内(localhost)だけでなく、同じ社内ネットワーク上の他のPCからもアクセス可能になります。
ちなみにポート番号を指定しない場合はStreamlitは 自動で8501ポートを使用します。

つまり実際には http://PCのIP:8501 で公開されています。
他のPCからアクセスする際には
1.サーバーPCで ipconfig を実行し、IPv4アドレス(例:192.168.1.50)を確認します。
2.他のPCのブラウザで http://192.168.1.50:8501 を開きます。

会社のPCをサーバーとして使って大丈夫?

今回のように自分のPCを簡易サーバーとして使うという方法は、社内ツールの検証や小規模運用ではよくある方法です。
専用サーバーを用意せずPCを簡易サーバーとして運用することもあります。
ただし注意点もあります。

注意点

この方法はあくまで簡易サーバーです。
そのため

  • PCの電源が落ちると停止
  • Windows更新で再起動すると停止
  • PCの性能に依存

といった特徴があります。また会社によっては

  • セキュリティポリシー
  • ITガバナンス

の関係でサーバー用途のPC利用が制限されている場合もあります。

将来的な構成

ツールの利用が増えてきたら

  • 社内サーバー
  • Linuxサーバー
  • クラウド

などに移すことも検討できます。
ただ、最初からそこまで構成を作る必要はなくまずは社内PCで動かしてみるというのは、開発や検証の段階ではかなり現実的な方法です。

小さな社内ツールなら十分実用的

今回紹介した方法は

  • Pythonツールを社内共有できる
  • ブラウザだけで使える
  • 環境構築が不要

というメリットがあります。そのため

  • 小規模社内ツール
  • 業務支援ツール
  • データ確認ツール

などでは、かなり便利な方法だと感じました。

Streamlitアプリを複数公開する方法

アプリ作成に慣れてくると用途の違うアプリを複数公開したくなることがあります。
その場合、主に次の3つの方法があります。

方法① ポート番号で分ける

一番シンプルな方法です。

streamlit run kakeibo.py --server.port 8501 --server.address 0.0.0.0
streamlit run chatbot.py --server.port 8502 --server.address 0.0.0.0
streamlit run stock.py --server.port 8503 --server.address 0.0.0.0

アクセス

http://192.168.1.50:8501
http://192.168.1.50:8502
http://192.168.1.50:8503

この方法が一番簡単ですが、ポート番号を覚える必要があります。

方法② 社内ツールのポータルページを作る

ツールが増えてきたら入口ページ(ポータル)を1つ作ると便利です。
例えば

http://192.168.1.50

ここに社内ツールのリンクをまとめます。

HTML例

<h1>社内ツール</h1><ul>
<li><a href="http://192.168.1.50:8501">家計簿アプリ</a></li>
<li><a href="http://192.168.1.50:8502">チャットボット</a></li>
<li><a href="http://192.168.1.50:8503">株価分析ツール</a></li>
</ul>

HTMLポータルの公開方法

Pythonには簡易Webサーバー機能があります。HTMLファイルがあるフォルダで

python -m http.server 80

を実行すると

http://192.168.1.50

でポータルページが開けます。構成はこんな感じになります。

http://192.168.1.50      ポータル
http://192.168.1.50:8501 家計簿アプリ
http://192.168.1.50:8502 チャットボット
http://192.168.1.50:8503 株価分析ツール

方法③ Streamlitポータル

Streamlitでポータルページを作る方法です。

import streamlit as stst.title("社内ツールポータル")st.markdown("### 利用できるツール")st.markdown("[家計簿アプリ](http://192.168.1.50:8501)")
st.markdown("[チャットボット](http://192.168.1.50:8502)")
st.markdown("[株価分析ツール](http://192.168.1.50:8503)")

起動

streamlit run portal.py --server.port 8500 --server.address 0.0.0.0

アクセス

http://192.168.1.50:8500

これを 社内ツール入口にできます。

運用の注意点と自動起動について

「保護されていない通信」と表示される理由や、PC再起動時に自動でアプリを立ち上げる設定、同時接続人数の目安など、実際の運用で知っておくべきポイントについては、以下の記事に詳しくまとめました。

👉 [自作Streamlitアプリを社内運用する際の注意点と自動起動の設定方法]

実際の社内ツールとしての運用イメージ

例えば次のような用途なら、今回の方法でも十分運用できます。

  • 社内データ確認ツール
  • PL・売上確認ツール
  • 簡易分析ツール
  • ちょっとした業務支援ツール

このような用途で 数人〜10人程度の利用であれば
自分のPCを簡易サーバーとして使う方法でも十分実用的です。

利用人数が増えた場合

もし、社員全体で使うようになったり、同時アクセスが増えてくるようになったら、次のような構成にすると安定します。

  • Linuxサーバー
  • Docker
  • nginx + Streamlit
  • クラウドサーバー

ただ、最初からそこまで構成を作る必要はなく、まずは今回のような簡易サーバーから始めるというのも十分現実的な方法だと思います。

小さな社内ツールならこの方法はかなり便利

今回の方法は

  • Python環境を各PCに入れる必要なし
  • ブラウザだけで使える
  • 複数ツールも公開可能

というメリットがあるので、ちょっとした社内ツールを作る場合には、かなり実用的な方法だと思います。

まとめ

自作ツールを社内共有するときは「各PCに環境を作る」よりも「サーバーとして公開する」方が管理が楽だと感じました。
今回は自分のPCを「社内ツール用の簡易サーバー」として使いましたが、将来的には

  • 専用PC
  • NAS
  • Linuxサーバー

などに移すこともできそうです。
ちょっとした社内ツールならこの方法はかなり便利だと思いました。

コメント