Streamlit入門【5分でできる】速攻Webアプリ作成・使い方・他ツール比較まで

  • 2026.08.07
       
【Streamlit】Webアプリを作成する

Pythonを使ったデータ分析や機械学習では、分析結果を他者に共有したり、作成したAIモデルをWebアプリとして公開したいと考える場面が少なくありません。 しかし、通常のWebアプリケーション開発には HTML・CSS・JavaScriptやWebフレームワークなどの知識が必要となり、データ分析が専門のエンジニアや初心者にとっては大きなハードルになります。

こうした課題を解決するために登場したのがStreamlit(ストリームリット)です。

この記事では、Streamlitの基本概要や特徴、Gradio・FastHTMLなどの他ツールとの違いから、初心者でも迷わない最短導入手順実践的なダッシュボード作成コード、さらにはGitHubを使った無料公開手順までを詳しく解説します。

    Streamlitとは?(概要とAIグラフとの違い)

    PythonだけでWebアプリが作れる開発ツール

    Streamlitは、Pythonコードを書くだけで手軽にWebアプリケーションを開発・公開できるオープンソースのフレームワークです。データサイエンティストや機械学習エンジニアが分析結果やAIモデルを簡単に共有できるツールとして開発され、2019年にリリースされました。

    従来、PythonプログラムをWebアプリ化するには、FlaskやDjangoなどのバックエンド開発に加え、HTML・CSS・JavaScriptによるフロントエンド構築が必須でした。 Streamlitはここを丸ごと省略し、Pythonスクリプト1本でUI画面の作成からデータ表示、ユーザー操作の受付まで完結させます。

    2022年にデータクラウド大手のSnowflake社に買収されて以降は、企業向けデータ基盤やLLM(生成AI)アプリの標準UIとしても急速に普及しています。

    【疑問解決】ChatGPT等の「AIが作るグラフ」と何が違う?

    最近ではChatGPTなどにCSVを渡せば綺麗なグラフを一瞬で作ってくれます。では、わざわざStreamlitでアプリを作る意味は何でしょうか?

    答えは「一発屋の静止画(AI)」か「ずっと動かせるシステム(Streamlit)」かの違いです。

    比較項目AI(ChatGPT等)が作るグラフStreamlitで作ったWebアプリ
    実体一回限りの「画像ファイル(写真)」ずっと動かせる「Webサイト(システム)」
    操作性ユーザーが自分で条件変更できないボタンやスライダーで条件を自在に変更可能
    データ更新データが変わるたびにAIへ依頼し直しCSVを差し替えるだけで自動更新
    共有相手自分(チャットを開いている人)のみURLを教えれば、誰でもスマホやPCから操作可能

    「一度作れば、他の人(上司やクライアント)がブラウザ上で直感的に操作できる仕組み」を作れることこそが、Streamlitの最大の価値です。

    Streamlitの主な特徴と他ツール比較

    Streamlitの5つの強み

    1. 関数を呼び出すだけでUIが作れる: st.title()st.button() を並べるだけで画面が構築されます。
    2. ホットリロード機能: コードを保存するだけで、ブラウザ画面が自動更新されます。
    3. データ可視化がほぼワンライナー: PandasのDataFrameをそのまま渡すだけで表やグラフを描画できます。
    4. 多彩な標準ウィジェット: スライダー、セレクトボックス、ファイルアップローダーなどが標準装備されています。
    5. 生成AI(LLM)アプリ対応: チャット UI(st.chat_message)やストリーミング表示の機能が揃っています。

    最新フレームワーク・BIツールとの比較一覧表

    Python周辺でWeb画面を作るツールやBIツールとの違いをまとめました。

    ツール名分類 / 運営開発速度難易度主な用途・向いているシーン
    Streamlitデータアプリ向け / Snowflake🚀 最速🟢 低い社内ダッシュボード、AIデモ、PoC、データ分析ツール
    GradioAIデモ向け / Hugging Face🚀 最速🟢 低い画像生成やテキスト処理など「AIモデルの入力・出力デモ」
    Dash (Plotly)ダッシュボード / Plotly🔺 やや遅い🔴 高いデザインやレイアウトを細かく作り込みたい大企業向け画面
    FastHTMLWeb開発 / オープンソース🟡 普通🟡 中程度一般的なWebサービスやSNS、軽量なWebアプリ構築
    Tableau / PowerBIノーコードBIツール🟡 普通🟢 低い決まったデータの可視化(※独自のAI処理や高度なPython連携は不可)

    【実践】Streamlitの導入手順と動かし方

    最短で動かすインストール手順(まずは仮想環境なしでOK!)

    (以下、エラーが出たり躓いたときは、こちらを参考にしてください

    まずは難しい準備抜きで、最もシンプルに動かしてみましょう。 コマンドプロンプトやターミナルを開き、以下のコマンドを1行実行するだけで準備完了です。

    pip install streamlit
    

    ※「pip コマンドが見つかりません」などのエラーが出る場合は、Pythonがパソコンにインストールされているかを確認してください。

    コマンド一発!基本の起動方法(streamlit run

    プログラムファイル(例:app.py)を作成したら、以下のコマンドで起動します。

    streamlit run app.py
    

    実行するとローカルサーバーが立ち上がり、自動的にブラウザが開いて作成したアプリが表示されます。

    コードを変更して保存するだけでブラウザ画面が切り替わりますが、毎回手動リロードが面倒な場合は、画面右上の「三点リーダー(⋮)」アイコンから 「Always rerun(またはAuto rerun)」 を選択しておくと、保存するだけで画面が自動更新されて開発がさらに快適になります。

    💡 仮想環境(venv)って何?本当に必要なの?

    技術記事や教科書を読むと「まず仮想環境(venv)を作りましょう」と書かれていることが多いですが、「そもそも仮想環境って何?無しじゃ駄目なの?」と疑問に思う方も多いでしょう。

    仮想環境とは「アプリ専用の小部屋」のこと

    • 仮想環境なし(直入れ): パソコン全体の「大部屋」にStreamlitを直接入れます。一番手軽ですぐ試せますが、将来別の開発で古いツールが必要になった時に、部屋の中でバッティング(衝突)することがあります。
    • 仮想環境あり(venv): 「Streamlit専用の小部屋」を作って作業します。他の開発に影響を与えない安全な方法です。

    結論:最初は「なし」で全然OK!

    プロの開発現場や本格的なシステム運用では仮想環境が推奨されますが、個人で試したり学習する段階なら「仮想環境なし」で直接インストールしても全く問題ありません!

    難しそうな設定で挫折するくらいなら、まずは直入れでサクッと動く楽しさを体験してみましょう。本格的なプロジェクトを始める際、必要に応じて作れば十分です。

    Streamlitの使い方と使用例

    基本パーツの配置

    テキストやフォーム、ボタンを表示する基本コードです。

    import streamlit as st
    
    st.title("Hello Streamlit!")
    name = st.text_input("あなたの名前を教えてください")
    
    if st.button("送信"):
        st.write(f"{name}さん、ようこそ!")
    

    【例①】ネット上のオープンデータ(CSV)を自動グラフ化

    Web上にあるパブリックなCSVデータ(タイタニック号の乗客データ)のURLを直接読み込み、サイドバーで絞り込めるアプリです。

    import streamlit as st
    import pandas as pd
    
    st.title("🚢 タイタニック乗客データの可視化")
    
    # ネット上のCSVを直接ロード
    url = "https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv"
    df = pd.read_csv(url)
    
    # サイドバーで条件抽出
    st.sidebar.header("フィルター")
    gender = st.sidebar.multiselect("性別を選択", options=df["Sex"].unique(), default=df["Sex"].unique())
    
    filtered_df = df[df["Sex"].isin(gender)]
    
    # メトリクス表示
    col1, col2 = st.columns(2)
    col1.metric("該当人数", f"{len(filtered_df)} 人")
    col2.metric("平均年齢", f"{filtered_df['Age'].mean():.1f} 歳")
    
    # グラフ描画
    st.subheader("チケット等級別の人数")
    st.bar_chart(filtered_df["Pclass"].value_counts())
    

    【例②】KPIカード・タブ切り替え付き!リアルタイム金融ダッシュボード

    画面全体を広げ(layout="wide")、KPIカードやタブ切り替えを使った実用レベルのプロっぽい画面構成です。

    import streamlit as st
    import pandas as pd
    import numpy as np
    
    # ワイドモード設定
    st.set_page_config(page_title="株価分析ダッシュボード", layout="wide")
    
    st.title("📈 リアルタイム・ポートフォリオ分析ダッシュボード")
    
    # サイドバー操作
    company = st.sidebar.selectbox("対象企業", ["Tech Corp (AI)", "Cloud Systems"])
    period = st.sidebar.slider("表示期間 (日数)", 10, 100, 30)
    
    # ダミーデータの自動生成(※操作するたびに新しく計算されます)
    dates = pd.date_range(end=pd.Timestamp.today(), periods=period)
    prices = 100 + np.cumsum(np.random.normal(0.5, 2.0, size=period))
    df = pd.DataFrame({"日付": dates, "株価 ($)": prices.round(2)}).set_index("日付")
    
    # KPIカード列
    col1, col2, col3 = st.columns(3)
    current = df["株価 ($)"].iloc[-1]
    prev = df["株価 ($)"].iloc[-2]
    col1.metric("現在の株価", f"${current}", f"{round(current - prev, 2)}$")
    col2.metric("期間内最高値", f"${df['株価 ($)'].max()}")
    col3.metric("期間内最安値", f"${df['株価 ($)'].min()}")
    
    # タブ切り替え
    tab1, tab2 = st.tabs(["📊 株価推移", "📋 詳細データ"])
    with tab1:
        st.line_chart(df["株価 ($)"])
    with tab2:
        st.dataframe(df, use_container_width=True)
    

    【重要】操作するたびに全体が再実行される仕組み

    Streamlitの最大の魅力であり特徴は、「ユーザーがスライダーやボタンを操作するたびに、Pythonスクリプトが上から下まで丸ごと再実行される」 というデータフロー(ライフサイクル)にあります。 これにより、複雑な状態管理コードを書くことなく、画面上のデータがリアルタイムにサクサク更新されます。

    エラーで躓いたときは?(AIを活用した爆速解決法)

    プログラミングをしていると、黒い画面に赤い文字でズラリと難しそうな英語のエラー(エラーメッセージ)が出ることがあります。

    初心者の方がここで一番挫折しやすいですが、自分で悩む必要は一切ありません!

    💡 エラーが出たときの対処法

    1. 黒い画面に出てきた赤文字のエラー文(コードとエラーメッセージ)を丸ごとコピーする。
    2. ChatGPTやClaudeなどのAIチャットツールを開く。
    3. 「Streamlitで以下のエラーが出ました。原因と解決策を教えてください」 と貼り付けて質問する。

    AIはプログラミングのエラー解決が極めて得意です。一発で「どの行のスペルが違うか」「どのライブラリが足りないか」を教えてくれます。AIをパートナーとして頼りながら進めるのが、現代の最も賢い開発スタイルです!

    作ったアプリを世界中に無料公開する方法

    自分だけで動かすだけでなく、作成したアプリはインターネット上に無料公開できます。

    なぜGitHubが必要?

    公開には、GitHub(マイクロソフト運営の世界最大のプログラム保存サイト) を使用します。 コードをGitHubの「パブリック(公開)リポジトリ」(無料のWebフォルダ)にアップロードすることで、ホスティングサービスがコードを自動読み込みできるようになります。

    Streamlit Community Cloudで1分公開

    Streamlit公式が提供する無料ホスティングサービス 「Streamlit Community Cloud」 を使えば、以下の3ステップで公開完了です。

    1. 作成したコード(app.py)を GitHub にアップロードする
    2. share.streamlit.io にアクセスし、GitHubアカウントでログイン
    3. 対象のリポジトリと app.py を選択して「Deploy!」を押す

    これだけで、自分専用のWebアプリURLが発行され、世界中の誰でもスマホやPCからアクセスできるようになります。

    Streamlitのメリット・デメリットと注意点

    Streamlitのメリット

    • 完全無料で利用・公開可能
    • Pythonのみで完結するため学習コストが極めて低い
    • ポートフォリオ作成や社内PoC(概念実証)のスピードが劇的に向上する

    Streamlitのデメリットとパフォーマンス注意点

    • 細かなUIカスタマイズには向かない: ボタンの配置や色をピクセル単位で整えるようなWeb制作には不向きです。
    • 重い処理の遅延: 操作ごとにコードが全体再実行されるため、巨大データの読み込みや重い機械学習処理を行うと画面が重くなります。

    💡 対策: 重い処理を行う場合は @st.cache_data デコレータを関数に付与することで、計算結果がキャッシュされ、2回目以降の表示が爆速になります。

    まとめ

    Streamlitは、HTML/CSS/JavaScriptを学ぶ時間のないデータ分析者やエンジニアにとって、「自分のアイデアや分析成果を最速でWebツールに変える最強の武器」です。

    最初から完璧な環境構築を目指す必要はありません。まずは1行のインストールから試してみて、もしエラーが出たらAIに頼りながら、Web上でアプリが動く楽しさをぜひ実感してみてください!

         

    Programmingカテゴリの最新記事