「管理画面を作って」と言われて絶望する前に:Streamlitで脱Excelバケツリレー
はじめに:HTMLもCSSも書きたくない私たちへ
「このAIモデル、誰でも使えるように画面作ってよ」
上司は簡単に言いますが、Web画面を作るのがどれだけ大変か。
React?Vue?バックエンドはFlask?
…いや、私はAIエンジニアであり、Webデザイナーではありません。CSSの中央揃えで半日溶かすのはもう嫌なんです。
そんな我々の悲鳴に応えてくれたのが Streamlit です。「Pythonスクリプトを書くだけで、勝手にイケてるUIが出来上がる」。嘘みたいな話ですが、本当です。これで社内のExcelバケツリレー業務を根絶やしにしましょう。
基礎知識:Streamlit vs Gradio どっちを使うべき?
PythonだけでUIを作るライブラリ、主に2大巨頭があります。
- Gradio: Hugging Faceが開発。AIモデルのお披露目(デモ)に特化。入出力がシンプル。
- Streamlit: データ分析ダッシュボード向け。グラフ表示やサイドバーなど、複雑なレイアウトが得意。
社内ツールとして使うなら、個人的には Streamlit を推します。見た目が綺麗で、複数ページ構成も作れるからです。
実装・設定:Pythonファイル1つでアプリが立ち上がる魔法
信じられないかもしれませんが、以下のコードだけでWebアプリが完成します。
import streamlit as st
import pandas as pd
st.title('社内売上可視化ツール')
uploaded_file = st.file_uploader("CSVをアップロードしてください")
if uploaded_file is not None:
df = pd.read_csv(uploaded_file)
st.write("プレビュー:")
st.dataframe(df)
st.line_chart(df['Sales'])
あとはターミナルで streamlit run app.py
と打つだけ。
これで「ファイルアップロード機能」「データプレビュー」「インタラクティブなグラフ」が全部入ったWebページが立ち上がります。開発時間、わずか3分。カップ麺より早いです。
応用テクニック:Session Stateを使った対話型アプリ
Streamlitは基本的に「ボタンを押すたびに最初から再実行」される仕組みですが、st.session_state を使うことで、変数を保持できます。
これを使えば、「チャットボットの会話履歴を維持する」なんてことも簡単。社内WikiのQAボットなんて、Streamlit + LangChainで半日あれば作れます。
トラブルシューティング:動作が遅い時のキャッシュ活用法
前述の通り「毎回再実行」されるため、重いデータ処理を毎回走らせるとアプリが遅くなります。
そこで @st.cache_data デコレータを使います。
@st.cache_data
def load_heavy_data():
# すごく時間のかかる処理
return df
こうしておけば、2回目以降はキャッシュから爆速で読み込まれます。ユーザー体験を守るための基本テクニックです。
まとめ:エンジニアのリソースを「本質」に集中させる
Streamlitを使えば、かっこいいUIを作るためにCSSと格闘する必要はありません。その時間で、裏側のロジックやデータ分析の精度を磨くべきです。
完璧な内製ツールなんて目指さなくていいんです。「とりあえず動いて、役に立つ」。その最短距離をStreamlitで駆け抜けましょう。
コメント
コメントを投稿