はじめに
今回Udemyのコースを受講し、はじめてPythonのフレームワークである「Streamlit」を使用しました。Steamlitは、HTMLやCSSが不要で、簡単にWebアプリを構築できるのが特徴で、
ライブラリをインポートするだけで、表やグラフ、画像の表示やレイアウト調整を簡単に行うことができました。
ドキュメント
Udemyコース
爆速で5つのPython Webアプリを開発(作成者: 今西航平)
Streamlitのインストール
開発環境
・OS:Ubuntu(開発環境)、Windows(動作確認)
・言語:Python 3.12.3
# 仮想環境を作るための機能をインストール
sudo apt install python3-venv -y
# 仮想環境を作る
python3 -m venv venv
# Streamlitをインストール
pip install streamlit
仮想環境(venv)に入らないといけないみたい
# 仮想環境に入る
source venv/bin/activate
# PythonファイルをWebアプリとして起動
streamlit run main.py
# ブラウザで開くURL
http://localhost:8501
なぜ仮想環境を作るのか?
Pythonでは、同一環境にインストールされたライブラリは共有されるため、別プロジェクトで異なるバージョンをインストールすると、既存プロジェクトの動作に影響を与える可能性があるとのこと。
venvを利用することで、プロジェクトごとに独立した実行環境を構築でき、ライブラリのバージョン競合を防ぐことができるため、仮想環境を作る必要性があります。
ふわふわコード
↓AIと一緒に開発するときのワークフローや、
解決策、コマンド一覧など非常に分かりやすい記事でした。
その他参照
今回作成したコード
書いてみて驚いたのですが、UIを個別に設計することなく、簡単にWebアプリとして表示でき、その手軽さにとても使いやすさを感じました。
import streamlit as st
import numpy as np
import pandas as pd
from PIL import Image
import time
st.title('Streamlit 超入門')
# 表・テーブル表示
st.write('DataFrame')
df = pd.DataFrame({
'1列目':[1, 2, 3, 4],
'2列目':[10, 20, 30, 40]
})
st.table(df.style.highlight_max(axis=0))
# 折れ線グラフ表示
df = pd.DataFrame(
np.random.rand(20,3),
columns=['a', 'b', 'c']
)
st.line_chart(df)
# 画像表示
st.write('Display Image')
if st.checkbox('Show Image'):
img = Image.open('sample.png')
st.image(img, caption='aa',width="stretch")
# インタラクティブなウィジェット
option = st.selectbox(
'あなたが好きな数字を教えてください',
list(range(1,11))
)
'あなたの好きな数字は、', option , 'です。'
st.write('interactive Widgets')
text = st.text_input('あなたのシュミを教えてください')
'あなたの趣味は、', text , 'です。'
condition = st.slider('あなたの今の調子は?', 0, 100 ,50)
'コンディション:', condition
# レイアウトを整える
left_column, right_column = st.columns(2)
button = left_column.button('みぎからむを表示する')
if button:
right_column.write('右カラム')
expander = st.expander('問い合わせ')
expander.write('問い合わせを開いてるよ')
# プログレスバーの表示
st.write('プログレスバーの表示')
'Start!'
latest_iteration = st.empty()
bar = st.progress(0)
for i in range(100):
latest_iteration.text(f'Iteration {i+1}')
bar.progress(i+1)
time.sleep(0.1)
まとめ
今回初めてStreamlitを使ってみて、Pythonだけで簡単にWebアプリが作れることに驚きました。UIを自分で設計しなくても、データ表示やグラフ、入力フォームなどがすぐに実装できて、とても使いやすいと感じました。今後はもう少し機能を増やして、実際に使えるアプリも作ってみたいと思います。


