こんにちは、こんです🦊
今日は、「Streamlitで作った社内ツールを、誰でもすぐ使えるようにEXE化しよう!」と意気込んで PyInstaller に挑みました。
しかし結論から言うと、まさかの大苦戦。
思ったより遥かに「共有」は難しく、アプリそのものではなく“実行環境”の壁に、何度も叩き落とされることになりました。
🧪 今日の実験:Streamlitアプリの EXE 化(PyInstaller)
やりたかったことは、これだけ。
Pythonをインストールしていない社内メンバーでも
ダブルクリック1つでStreamlitアプリを使えるようにする
しかし、そのためにやったことは以下の通り:
pyinstaller で EXE化(--onedir、--windowed)
pdfkit, wkhtmltopdf を含めたビルド設定
hscode_master.csv や streamlit_app.py のデータ同梱
jaraco/text/Lorem ipsum.txt の手動追加
importlib.metadata 依存のエラー回避
subprocess + streamlit run 起動方式の見直し
❌ 出たエラーの例(一部)
ModuleNotFoundError: No module named 'pdfkit'
PackageNotFoundError: No package metadata was found for streamlit
FileNotFoundError: Lorem ipsum.txt
WinError 2: 指定されたファイルが見つかりません
🌀 ぶつかった壁:「使う人のPC」には何もない
EXE化とは「Pythonを知らない人でも使えるようにする魔法」…のはずが、実際には以下の現実に直面しました:
問題点解決の難しさ.exe から streamlit run を呼ぶと Streamlit が見つからない→ Pythonごと内包する必要ありPDF出力には外部 .exe 依存(wkhtmltopdf)→ 配置とパス解決が面倒importlib.metadata にパッケージ情報がない→ pyproject.toml などの工夫が必要PyInstaller後の構成はブラックボックス化→ 1つずつ手作業で解決が必要
💡 今日の学び
「作る」より「使える状態にする」方が100倍大変。
どれだけ良いコードでも、社内で簡単に使ってもらえないなら意味がない。
今回の経験で、そう痛感しました。
そしてもう一つ。
ノンコーダーがツールを使えるようにするには、「仕組みを整える人」が必要。
✅ 現時点の結論:Streamlit Cloudを併用する
あくまで社内利用であれば、以下のようにすみ分けるのが最適かもしれません:
手段メリットデメリットEXE配布ネット環境がなくても使える作成・維持コストが非常に高いStreamlit Cloud常に最新を共有できるPDF出力など一部機能に制限あり
今後は 「最低限の外出しファイルでCloudで動くMVP」 を軸に構成を見直し、
PDF出力など一部機能はローカル or 別ツールで補完する形を検討していきます。
🧠 まとめ
今日は、「アプリを作ったあとに必要な、ほんとうの苦労」にぶつかった一日でした。
誰でも使えるようにするって、こんなに難しいのか。
でもそのハードルを超えたとき、「これ、すごく便利!」と言ってもらえる。
その未来を信じて、明日も進みます。
#100日チャレンジ #Day36 #Streamlit #PyInstaller地獄 #EXE化 #業務改善の落とし穴 #DXの裏側 #社内展開のリアル