Pythonを使ったデータ分析や機械学習では、分析結果を他者に共有したり、作成したAIモデルをWebアプリとして公開したいと考える場面が少なくありません。
しかし、通常のWebアプリケーションを開発には HTML・CSS・JavaScriptやWebフレームワークなどの知識が必要となり、データ分析が専門のエンジニアにとっては大きなハードルになります。
こうした課題を解決するために登場したのがStreamlitです。
この記事では、Streamlitの概要や特徴、導入方法から基本的な画面作成までを詳しく解説します。
Streamlitとは
ウェブアプリ開発ツール「Streamlit」の概要
Streamlitは、Pythonだけで手軽にWebアプリケーションを開発・公開することができるオープンソースのフレームワークです。
データサイエンティストや機械学習エンジニアが分析結果やAIモデルを簡単に共有できるツールとして開発され、2019年に正式にリリースされました。
データサイエンスやAI開発との親和性が非常に高く、近年ではデータ分析ツールや業務ダッシュボード、AIチャットアプリ、社内向け管理システムなど幅広い分野で利用されています。
従来、Pythonで作成した分析プログラムをWebアプリとして公開するには、FlaskやDjangoなどのバックエンドフレームワークに加え、HTML・CSS・JavaScriptを用いたフロントエンド開発も行う必要がありました。
しかし、StreamlitではこれらのWeb技術をほとんど意識することなく、Pythonスクリプトだけで画面の作成からデータ表示、ユーザー入力の受付までを一貫して実装できます。
Streamlitは、「Turn data scripts into shareable web apps in minutes(データスクリプトを数分で共有可能なWebアプリへ変換する)」というコンセプトを掲げており、そのコンセプト通りに、短時間で実用的なWebアプリケーションを構築できることが大きな特徴です。
Pythonファイルを実行するだけでローカルサーバーが立ち上がり、ブラウザ上でアプリケーションを利用できるため、複雑なWebサーバーの設定や画面設計を行わずに開発を始められます。
また、オープンソースとして継続的に開発が進められており、2022年にSnowflakeに買収されて以降、データクラウドとの連携やAI機能の強化も積極的に進められています。
そのため、単なるPython向けGUIツールではなく、データ活用基盤の一部としても利用できるフレームワークへと発展しています。
Streamlitの主な特徴
Streamlit最大の特徴は、上述したように 「PythonだけでWeb画面を構築できる」 というシンプルな開発スタイルにあります。
通常のWebアプリケーションでは、画面を作成するためにHTMLやCSS、JavaScriptを記述し、それに加えてPythonで作成したバックエンド処理を連携させる必要があります。
一方、Streamlitでは、st.title()やst.button()、st.text_input()などの関数を呼び出すだけで画面上にUIが生成されるため、Pythonを書くだけで短時間でアプリケーションを作成することができます。
その他にも、Streamlitには開発効率を高める機能が豊富に用意されています。
例えば、ソースコードを保存すると自動的にアプリケーションが再読み込みされるホットリロード機能により、コードを書き換えるたびに手動でサーバーを再起動する必要がありません。
変更内容をすぐブラウザ上で確認できるため、試行錯誤を繰り返しながらUIを調整しやすく、プロトタイプ開発にも適しています。
また、データ可視化に関する機能が充実していることもStreamlitならではの強みです。
DataFrameを表形式で表示したり、折れ線グラフや棒グラフを表示したりなど、分析したデータを可視化する際にも、対応する関数を呼び出すだけで簡単に描画できます。
さらに、MatplotlibやPlotly、Altairなどの代表的な可視化ライブラリとも簡単に連携できるため、高度な分析ダッシュボードも構築可能です。
加えて、スライダーやセレクトボックス、ファイルアップロードなど、多数のウィジェットが標準で提供されています。
Streamlitが独自に採用しているデータフローにより、ユーザーがボタンや入力フォームなどを操作するたびにアプリ全体が自動的に再実行されるため、アプリケーションの状態管理がシンプルであり、一般的なGUIプログラミングよりも少ないコード量で実装できます。
さらに、近年は生成AIアプリケーション向けの機能も充実しており、チャットインターフェースやストリーミング表示なども容易に実装できる機能が揃っています。
そのため、データ分析だけでなくAIアプリケーションのフロントエンドとして採用されるケースも増えています。
データ分析や機械学習との相性の良さ
Streamlitはデータサイエンス向けに設計されているため、Pythonの代表的な分析ライブラリと非常に相性が良い点も特徴です。
例えば、以下のようなライブラリで集計や加工などを行なったデータを、Streamlitを使用して表やグラフに変換したり、ダッシュボードを作成するといった使い方ができます。
- Pandas
- NumPy
- Scikit-learn
- TensorFlow
- PyTorch
近年は生成AIアプリケーションとの組み合わせも増えており、LLMやRAGを利用したチャットアプリのUIとして採用されるケースも少なくありません。
なぜ多くのエンジニアに選ばれているのか
Streamlitが人気を集める主な理由は、「開発速度」と「学習コストの低さ」のバランスにあります。
従来であればFlaskやDjangoとJavaScriptフレームワークを組み合わせる必要があったようなアプリでも、StreamlitならPythonのみで短期間にプロトタイプを作成することができます。
実際に、公式サイトでも 「数分でデータアプリを構築・共有できる」 「Pythonだけで完結する」 点が売りであるとされており、Fortune 50企業の90%以上で利用されている実績も公開されています。
特に、以下のような用途では非常に高い生産性を発揮します。
- 社内ダッシュボード
- データ分析ツール
- AIモデルのデモ
- PoC(概念実証)
- 業務改善ツール
- レポート閲覧システム
一方で、大規模なECサイトやSNSのような複雑なWebサービスを実装する場合には、専用のWebフレームワークの方が適しているケースもあるため、用途に応じた使い分けが重要です。
Streamlitを採用するメリット・デメリット
Streamlitを導入するメリット
Streamlitを採用する主なメリットとしては、以下の点が挙げられます。
- Pythonだけで開発できる
- HTML・CSS・JavaScriptの知識がほとんど不要
- 学習コストが低い
- データ分析ライブラリとの親和性が高い
- グラフ表示が容易
- UI部品が豊富
- 開発サイクルが速い
- Community Cloudなどを利用して簡単に共有・公開できる
既にPythonの知識や環境を持っている人であれば、新たな技術を習得する必要がほとんどなく、即座にアプリケーション開発を行うことができます。
複雑なサーバー設定も必要なく、標準搭載の関数と独自採用のデータフロー機能によって、UI表示や各イベントの処理なども数行のコードを書くだけで実装できるため、初心者の方でも気軽に始めやすいのが大きな利点の1つです。
また、その他のPythonライブラリやコンポーネントを組み合わせて活用することで、高度な分析やダッシュボートの作成も可能としています。
データ分析だけでなく、AIアプリケーションのフロントエンド開発に必要なUIなどが揃えられているのも特徴です。
Streamlitを利用する際のデメリットと注意点
一方で、以下の注意点も存在します。
- 細かなUIデザインの自由度はReactなどより低い
- 大規模Webサービス向けではない
- スクリプト全体が再実行される仕組みを理解する必要がある
- 重い処理ではキャッシュや状態管理(Session State)の設計が重要
Streamlitでは豊富なUIが標準で用意されていますが、デザインなどにはある程度の制限がかかるため、自由度では他のフレームワークに劣る場合があります。
また、ボタンを押す、入力する、ページを開くなどのイベントが発生するたびに、ファイル全体が先頭から再実行される仕組みのため、importの数やプログラムの量が多い場合に画面の動作が遅くなるケースがあります。
そのため、大量のデータを扱う場合は、キャッシュ機能を活用して不要な再計算を避けることが重要です。
Streamlitの導入手順
Streamlitのインストール手順
Streamlitのインストールは、以下のコマンドで実行できます。
pip install streamlitPythonライブラリをインストールする際は、仮想環境を作成した上で行うことが推奨されています。
仮想環境の構築とアクティべートは以下のコマンドで実行できます。
# 仮想環境の構築
python -m venv [仮想環境名]
# アクティべート (macOS / Linux)
source [仮想環境名]/bin/activate
# アクティべート (Windows)
[仮想環境名]\Scripts\activateインストール完了後は、以下のコマンドでサンプルアプリを起動できます。
streamlit hello実行すると、以下のような画面がブラウザで表示されます。
![]()
基本的な起動方法と画面の確認
インストールが無事に完了したら、スクリプトファイルを作成して実装していきましょう。
Streamlitを使用する際は、以下のコードを記述してライブラリをインポートする必要があります。
import streamlit as stファイルの作成と記述が完了したら、以下のコマンドを実行することでブラウザ表示できます。
streamlit run [ファイル名]コマンドを実行すると、自動でローカルサーバーが起動してアプリがブラウザ表示されます。
コード内容を変更した場合、保存時に自動で変更が検知されるため、コマンドを実行し直す必要はありません。
ただし、初期設定時ではブラウザ側でリロードを行う必要があるため、変更内容を自動で反映させる場合は設定を変更する必要があります。
画面右上の3点マークをクリックし、「Auto rerun」 を有効にすると、ソースコードを変更するたびにアプリが自動的に更新されます。
![]()
試しに、以下のサンプルコードをブラウザ表示してみましょう。
import streamlit as st
st.title("Hello Streamlit")上記を作成してコマンド実行すると、以下のようにタイトルが記載された画面が自動で表示されます。
![]()
このように、基本的には 「対象のアプリのファイルをコマンドで実行」 → 「ブラウザを確認しながら編集」 といった流れになります。
Streamlitを使った基本的な画面構築の流れ
主要なパーツの配置方法(テキスト・ボタン・入力フォーム)
Streamlitには数多くのUIパーツが用意されていますが、ここでは基本的なパーツを抜粋して紹介します。
以下のサンプルは、簡単な入力フォームとボタン実装の例です。
import streamlit as st
# タイトル
st.title("Hello Streamlit!")
# 入力フォーム
name = st.text_input("あなたの名前を教えてください")
# ボタン
if st.button("Done"):
# テキスト表示
st.write(name, "さん、ようこそ!")【実行結果】
![]()
このように、非常にシンプルなコードでUIを実装することができます。
詳しい使い方やその他のパーツについては、公式ドキュメントを参考にしてください。
グラフやデータのビジュアル化とダッシュボード作成
Streamlitでは、DataFrameをそのまま表形式で表示できるほか、st.line_chartやst.bar_chartなどのAPIを利用してグラフを簡単に描画できます。
以下は、簡単なサンプルです。
import streamlit as st
import pandas as pd
df = pd.DataFrame({
'名前': ['Alice', 'Bob', 'Charlie'],
'点数': [75, 90, 58]
})
# テーブル描画
st.table(df)
df.set_index('名前', inplace=True)
# 折れ線グラフ描画
st.line_chart(df)【実行結果】
![]()
このように、表やグラフの作成もシンプルなコードで実行でき、分析ダッシュボードを少ないコード量で構築できます。
まとめ
Streamlitは、HTMLやJavaScriptの知識がなくても、データ分析や機械学習の成果を誰でも利用しやすいWebアプリとして公開できる点が大きな魅力です。
豊富なUI部品やグラフ表示機能、分析ライブラリとの高い親和性により、ダッシュボードやAIデモ、社内ツールなどを短期間で開発できます。
一方で、大規模なWebサービスには向かない場面もあるため、用途に応じた選択が重要です。
データ分析やAI開発の成果を素早く共有したい場合には、Streamlitは非常に有力な選択肢となるでしょう。