スキップしてメイン コンテンツに移動

「管理画面を作って」と言われて絶望する前に:Streamlitで脱Excelバケツリレー

「管理画面を作って」と言われて絶望する前に: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で駆け抜けましょう。

この記事はAI技術を活用して作成されましたが、内容は慎重に確認されています。

コメント