- Streamlit Pythonとは?初心者でも簡単にWebアプリを作れる魔法のフレームワーク
- Streamlit Pythonの基本:インストールから最初のアプリまで
- Streamlit Pythonの特徴:なぜこれほど簡単なのか?
- Streamlit Pythonのメリットとデメリット:他のフレームワークと比較
- Streamlit Pythonでできること:具体的な活用例
- Streamlit Pythonのインストールと環境構築:ステップバイステップ
- Streamlit Pythonの基本的な使い方:ウィジェットとレイアウト
- Streamlit Pythonでデータ可視化:グラフを描画する方法
- Streamlit Pythonの応用:機械学習モデルのデプロイ
- Streamlit Pythonのデプロイ:無料で公開する方法
- Streamlit Pythonの注意点とトラブルシューティング
- Streamlit Pythonのまとめ:どんな人におすすめ?
Streamlit Pythonとは?初心者でも簡単にWebアプリを作れる魔法のフレームワーク
「Streamlit Python(ストリームリット)って何?」と検索しているあなたは、Pythonでデータ分析や機械学習をしているけれど、その結果をWebアプリとして共有したいと思っていませんか?実は、Streamlitを使えば、HTMLやCSS、JavaScriptの知識がなくても、Pythonの知識だけでインタラクティブなWebアプリを驚くほど簡単に作れるんです。この記事では、Streamlitの基本から、インストール方法、実際の使い方、メリット・デメリット、他のフレームワークとの比較まで、初心者向けに徹底解説します。これを読めば、あなたも今日からStreamlitを使ってWebアプリ開発を始められます。
Streamlit Pythonの基本:インストールから最初のアプリまで
Streamlitは、Pythonのスクリプトを書く感覚でWebアプリを作れるオープンソースのフレームワークです。まずはインストールしましょう。pipコマンドで簡単にインストールできます。
pip install streamlit
インストールが完了したら、以下のコードを「app.py」というファイルに保存します。
import streamlit as st
st.write("Hello, Streamlit!")
そして、ターミナルで以下のコマンドを実行します。
streamlit run app.py
すると、ブラウザが自動的に開き、http://localhost:8501 で「Hello, Streamlit!」と表示されます。たったこれだけで、あなたの最初のWebアプリが完成です!
Streamlit Pythonの特徴:なぜこれほど簡単なのか?
Streamlitの最大の特徴は、Pythonコードを書くだけで、画面表示やユーザーインタラクションが自動的に処理されることです。具体的には、以下の3つの原則に基づいています。
1. スクリプトを書くだけでアプリになる
Streamlitは、Pythonスクリプトを上から下へ実行し、その結果をWebページとして表示します。例えば、データフレームを表示したい場合は、st.dataframe(df) と書くだけです。HTMLやCSSを書く必要は一切ありません。
2. ウィジェットを追加するのは変数を宣言する感覚
スライダーやボタンなどのウィジェットは、st.slider() や st.button() のように呼び出すだけです。ウィジェットの値は変数に代入され、その変数をコード内で使うことで、動的なアプリを簡単に作れます。
3. デプロイも簡単
Streamlitには、無料で使える「Streamlit Community Cloud」があり、GitHubリポジトリと連携するだけで、アプリを公開できます。サーバー設定やインフラ管理の知識は不要です。
Streamlit Pythonのメリットとデメリット:他のフレームワークと比較
Streamlitは、PythonでWebアプリを作るためのフレームワークですが、他にもDjangoやFlask、FastAPIなどがあります。それぞれに特徴がありますが、Streamlitは特に「データサイエンス向けのプロトタイプ作成」に優れています。ここでは、Streamlitのメリットとデメリットを整理します。
メリット
- 学習コストが低い:Pythonの基本を理解していれば、すぐに使い始められます。
- 開発速度が速い:数行のコードでアプリを作成できるため、アイデアをすぐに形にできます。
- データ可視化が得意:PandasやMatplotlib、Plotlyなどのライブラリと連携し、インタラクティブなグラフを簡単に表示できます。
- 自動更新:コードを保存すると、ブラウザが自動的にリロードされ、変更が即座に反映されます。
デメリット
- カスタマイズ性が低い:細かいUIデザインや複雑なレイアウトは、HTMLやCSSを直接書く必要があるため、制限があります。
- 大規模アプリには不向き:Streamlitはシングルページアプリ向けで、複雑なルーティングやデータベース連携が必要な大規模開発には向いていません。
- パフォーマンス:スクリプトが毎回再実行されるため、大規模なデータ処理や高負荷な処理には注意が必要です。
Streamlit Pythonでできること:具体的な活用例
Streamlitは、データ分析ダッシュボード、機械学習モデルのデモ、プロトタイプ作成などに最適です。例えば、以下のようなアプリが簡単に作れます。
- CSVファイルをアップロードして、データを可視化するダッシュボード
- 機械学習モデルを読み込み、ユーザーが入力した値に基づいて予測を行うアプリ
- リアルタイムの株価チャートを表示するアプリ
実際に、多くの企業がStreamlitを社内ツールやデモに活用しています。
Streamlit Pythonのインストールと環境構築:ステップバイステップ
ここでは、Streamlitのインストールから最初のアプリ作成までの手順を詳しく解説します。
1. Pythonのインストール
StreamlitはPython 3.8以降で動作します。Pythonがインストールされていない場合は、公式サイトからダウンロードしてインストールしてください。
2. 仮想環境の作成(推奨)
プロジェクトごとに仮想環境を作成することをおすすめします。ターミナルで以下のコマンドを実行します。
python -m venv venv
source venv/bin/activate # Windowsの場合は venv\Scripts\activate
3. Streamlitのインストール
仮想環境が有効な状態で、以下のコマンドを実行します。
pip install streamlit
4. サンプルアプリの作成
以下のコードを「app.py」に保存します。
import streamlit as st
import pandas as pd
import numpy as np
st.title('サンプルアプリ')
df = pd.DataFrame({
'x': np.arange(10),
'y': np.random.randn(10)
})
st.line_chart(df)
5. アプリの起動
ターミナルで以下のコマンドを実行します。
streamlit run app.py
ブラウザが開き、折れ線グラフが表示されれば成功です。
Streamlit Pythonの基本的な使い方:ウィジェットとレイアウト
Streamlitには、テキスト表示、データ表示、ウィジェット、レイアウトなど、さまざまな機能があります。ここでは、よく使うものを紹介します。
テキスト表示
st.write('テキスト') # マークダウン対応
st.markdown('**太字**')
st.header('見出し')
st.subheader('小見出し')
st.caption('キャプション')
データ表示
st.dataframe(df) # インタラクティブなデータフレーム
st.table(df) # 静的テーブル
st.json({'key': 'value'})
ウィジェット
st.button('ボタン')
st.download_button('ダウンロード', data)
st.checkbox('チェックボックス')
st.radio('選択', ['A', 'B'])
st.selectbox('ドロップダウン', ['A', 'B'])
st.multiselect('複数選択', ['A', 'B'])
st.slider('スライダー', 0, 100, 50)
st.text_input('テキスト入力')
st.number_input('数値入力')
st.text_area('テキストエリア')
st.date_input('日付入力')
st.time_input('時間入力')
st.file_uploader('ファイルアップロード')
st.color_picker('カラーピッカー')
レイアウト
st.sidebar.title('サイドバー') # サイドバーに表示
col1, col2 = st.columns(2) # 2カラムレイアウト
with col1:
st.write('左')
with col2:
st.write('右')
tab1, tab2 = st.tabs(['タブ1', 'タブ2'])
with tab1:
st.write('タブ1の内容')
Streamlit Pythonでデータ可視化:グラフを描画する方法
Streamlitは、データ可視化に非常に強力です。Pandasのデータフレームを直接プロットしたり、Matplotlib、Plotly、Altairなどのライブラリと連携できます。
Pandasのプロット機能を使う
import pandas as pd
import numpy as np
df = pd.DataFrame({
'x': np.arange(10),
'y': np.random.randn(10)
})
st.line_chart(df) # 折れ線グラフ
st.area_chart(df) # エリアチャート
st.bar_chart(df) # 棒グラフ
Matplotlibを使う
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x))
st.pyplot(fig)
Plotlyを使う
import plotly.express as px
import pandas as pd
df = px.data.iris()
fig = px.scatter(df, x='sepal_width', y='sepal_length', color='species')
st.plotly_chart(fig)
Streamlit Pythonの応用:機械学習モデルのデプロイ
Streamlitは、機械学習モデルのデモや社内ツールとしても人気です。ここでは、簡単な分類モデルをStreamlitで動かす例を紹介します。
import streamlit as st
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
# データの読み込み
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
# モデルの学習
model = RandomForestClassifier()
model.fit(iris.data, iris.target)
# ユーザー入力
st.sidebar.header('入力パラメータ')
sepal_length = st.sidebar.slider('がくの長さ', float(df['sepal length (cm)'].min()), float(df['sepal length (cm)'].max()))
sepal_width = st.sidebar.slider('がくの幅', float(df['sepal width (cm)'].min()), float(df['sepal width (cm)'].max()))
petal_length = st.sidebar.slider('花びらの長さ', float(df['petal length (cm)'].min()), float(df['petal length (cm)'].max()))
petal_width = st.sidebar.slider('花びらの幅', float(df['petal width (cm)'].min()), float(df['petal width (cm)'].max()))
# 予測
input_data = [[sepal_length, sepal_width, petal_length, petal_width]]
prediction = model.predict(input_data)[0]
st.write('予測結果:', iris.target_names[prediction])
Streamlit Pythonのデプロイ:無料で公開する方法
作成したアプリを他の人と共有するには、デプロイが必要です。Streamlit Community Cloudを使うと、無料で簡単にデプロイできます。
手順
- アプリのコードをGitHubリポジトリにプッシュします。
- Streamlit Community Cloud(https://share.streamlit.io)にアクセスし、GitHubアカウントでログインします。
- 「New app」をクリックし、リポジトリ、ブランチ、メインファイルを選択します。
- 「Deploy」をクリックすると、アプリが公開されます。
Streamlit Pythonの注意点とトラブルシューティング
Streamlitを使う上での注意点をいくつか紹介します。
- セッション状態:ウィジェットの値を保持したい場合は、
st.session_stateを使用します。 - パフォーマンス:重い処理はキャッシュ(
@st.cache_data)を活用しましょう。 - セキュリティ:ユーザー入力をそのままコードとして実行しないように注意してください。
Streamlit Pythonのまとめ:どんな人におすすめ?
Streamlitは、Pythonで手軽にWebアプリを作りたい人、特にデータサイエンティストや機械学習エンジニアに強くおすすめです。学習コストが低く、開発速度が速いため、プロトタイプ作成や社内ツールに最適です。一方、本格的なWebサービスを開発したい場合は、DjangoやFlaskなどのフレームワークを検討した方が良いでしょう。
この記事を参考に、ぜひStreamlitを試してみてください。あなたのPythonスキルが、Webアプリ開発に広がることでしょう。

コメント