Pythonだけで洗練されたWebアプリを!Streamlitで始めるデータ可視化とAIプロトタイピング

投稿者: | 2026-10-18

Pythonでデータ分析や機械学習モデルの構築をしていると、「この成果を手軽にWebアプリとして動かしてみたい」と思う瞬間がありませんか?フロントエンドの知識がなくても、使い慣れたPythonコードだけで驚くほど簡単にインタラクティブなダッシュボードが作れるライブラリ、それが「Streamlit」です。今回はその魅力と基本的な使い方をご紹介します。

Streamlitの概要

Streamlitは、データサイエンスや機械学習プロジェクトに特化したオープンソースのWebアプリケーションフレームワークです。HTMLやCSS、JavaScriptを一切書くことなく、数行のPythonスクリプトを実行するだけで、モダンで美しいUIを持つWebアプリが即座に立ち上がります。

フロントエンドの環境構築に悩むことなく、ロジックの実装だけに集中できるのが本当に快適ですよ。

Streamlitのメリット

  • 極めて低い学習コスト:FlaskやDjangoのような複雑なルーティング設計は不要。上から順に処理が走るPythonスクリプトを書くだけで完成します。
  • 豊富なインタラクティブ機能:スライダーやボタン、入力フォームが一行で実装でき、ユーザー入力に連動した画面更新も直感的に扱えます。
  • 強力なデータ可視化・キャッシュ機能:PandasやPlotlyなどのグラフを美しく描画でき、計算負荷の高い処理を抑えるキャッシュ機能も標準で備わっています。

サンプルコード

以下のコードは、スライダーでサンプル数を変更し、ランダムデータの分布グラフを動的に更新するシンプルなWebアプリの例です。

python -m pip install streamlit numpy pandas
import streamlit as st
import numpy as np
import pandas as pd

# ページのタイトルと説明を設定
st.title("データ可視化ダッシュボード")
st.write("スライダーを動かして、データ分布の変化を確認してみましょう。")

# サイドバーに操作用ウィジェットを配置
st.sidebar.header("パラメータ設定")
sample_size = st.sidebar.slider("サンプル数", min_value=10, max_value=500, value=100, step=10)
chart_type = st.sidebar.selectbox("グラフの種類", ["折れ線グラフ", "棒グラフ"])

# データの生成
data = pd.DataFrame(
    np.random.randn(sample_size, 2),
    columns=["Series A", "Series B"]
)

# 選択に応じたグラフ描画
st.subheader(f"ランダムデータのプロット({sample_size}件)")
if chart_type == "折れ線グラフ":
    st.line_chart(data)
else:
    st.bar_chart(data)

# データフレームの表示
with st.expander("生データを確認する"):
    st.dataframe(data)

サイドバーの配置も st.sidebar を付けるだけなので、レイアウト構成がとてもスマートにまとまります。

作成したファイル(例: app.py)は、ターミナルで streamlit run app.py と打ち込むだけでローカルサーバが立ち上がり、すぐに動作確認できます。

python -m streamlit run app.py

みーちゃんのワンポイント

Streamlitはウィジェットを操作するたびに「スクリプト全体が先頭から再実行される」という特徴があります。重い機械学習モデルの読み込みや大きなデータのロードは、必ず @st.cache_resource や @st.cache_data デコレータでキャッシュ化し、不要な再計算を防ぐのが軽快に動作させる最大のポイントです。