まるっとワーク

データ分析・電子工作など気になることを残していきます

できるだけPythonだけでWEBアプリを作る③(Python Streamlit)

できるだけPythonだけで・・・と進めてきましたが、画期的なフレームワークの存在最近まで知らず・・・
「できるだけPythonだけでWEBアプリを作る第3弾」としてPython ライブラリのStreamlitとStreamlit Cloudを使用した方法をまとめていきます。
この方法は他の方も多くまとめているので、備忘録として簡単なフローだけを示しています。

第1弾, 第2弾記事は以下の通り。
dango-study.hatenablog.jp
dango-study.hatenablog.jp

目次


Streamlitでできること

  • PythonだけでWebアプリが作れる
  • フロントエンド(UI)の開発スキルが無くても簡単にUIを作ることができる
  • 作成したアプリをStreamlit Cloudに(無料)デプロイできる

デプロイ方法は、Streamlit Cloud意外に色々ありますが、Streamlit Cloudではセキュリティーが担保できないので、機密データを処理したい時などは、ローカルサーバーやセキュリティ保護されたサーバーでの運用が望ましいです。

Streamlitを用いたWEBアプリ作成

開発環境

[ローカル]
Microsoft Windows 10 Pro
Python 3.9.0

ライブラリのインストール

以下を実行して必要なライブラリをインストールします。

$ pip install streamlit

アプリ構成

基本的な構成は、「処理等を記載した.pyファイル」「必要ライブラリとバージョン情報を記載したrequirements.txt」の2つの構成になります。

@@@.py
requirements.txt

コード作成

任意の名前の.pyファイルには、最低限streamlitのモジュールインポート記載をしておけば、実行確認ができます。

$ import streamlit as st 

ローカルで実行/確認

コンソールで以下コードを実行して、
エラーが出なければ「http://localhost:8555」にアクセスして実行結果を確認できます。

$ streamlit run @@@.py

→.pyファイルの記載がstreamlitのモジュールインポート記載のみであれば、白紙のページが表示されるだけです。

コードの書き方などは、ありがたいことに・・先人の皆様のページで詳しく説明されているので割愛します。

  • 参考コード(私)

https://github.com/Mya-mori/streamlit_csv/blob/main/test.py

  • 参考ページ①

Streamlit入門+応用 ~ データ分析Webアプリを爆速で開発する - Qiita

  • 参考ページ②

PythonでDX「Streamlit」簡単ダッシュボード(前編) | コードファミリー

  • 参考ページ③

Streamlitで手軽にWebアプリ開発 - アルファテックブログ

アプリをStreamlit Cloudにデプロイ

Streamlit Cloudにサインイン

https://share.streamlit.io/signup
Googleアカウント、Githubアカウント、メールアドレスのいずれかを利用してアカウントを作成します。

Githubアカウント連携

Settingsをクリックし、Connect Github accountをクリックして、Githubと連携する。
(Githubアカウントがない場合は、作成する)

GithubリポジトリにWebアプリのソースコードをアップロード

作成したソースコードGithubにアップロードします
アップロードするファイルは、最低限以下構成のファイル

@@@.py
requirements.txt

requirements.txtは以下コードを実行することで、出力することができる。
必要最低限の情報でないとエラーが出る場合がある為、余計なライブラリ情報は削除する。(ライブラリが多すぎることが原因のエラーが出ました)

$pip freeze > requirements.txt

アプリのデプロイ

Streamlit CloudにStreamlitで作成したWebアプリをデプロイします。
Streamlitにログインして、"New app"と記載されたボタンを押す。

以下の通り設定をして、デプロイボタンを押すことで、デプロイされる。

何か問題があれば、エラーが吐き出されます。

動作確認

デプロイされるアプリURLにアクセスすると、デプロイしたアプリの動作確認ができます。
簡単にデプロイして利用できるのがStereamlit Cloudを用いた利点ですね。
参考までに私が作成したアプリは以下↓

https://webapplicationsample1-rwb1ydqchif.streamlit.app/
システム同定シミュレーターアプリ】
csvデータを入力して、線形システムのシステム同定シミュレーションができます。
Githubアイコンを押すとコードも参照頂けます。

まとめ

今回は、前回とは違う方法でWEBアプリを作ってみました。
正直、セキュリティーとかなんやら何も気にしなくてよいのであれば、この方法が一番簡単だなと思いました。今までの努力は・・笑
次は、こういったフレームワーククラウドを組み合わせてかつ、セキュリティも考慮したアプリを作成していこうと思います。