PR

Streamlit Pythonとは?初心者向けに徹底解説!簡単にWebアプリを作る方法

記事内に広告が含まれています。

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を使うと、無料で簡単にデプロイできます。

手順

  1. アプリのコードをGitHubリポジトリにプッシュします。
  2. Streamlit Community Cloud(https://share.streamlit.io)にアクセスし、GitHubアカウントでログインします。
  3. 「New app」をクリックし、リポジトリ、ブランチ、メインファイルを選択します。
  4. 「Deploy」をクリックすると、アプリが公開されます。

Streamlit Pythonの注意点とトラブルシューティング

Streamlitを使う上での注意点をいくつか紹介します。

  • セッション状態:ウィジェットの値を保持したい場合は、st.session_state を使用します。
  • パフォーマンス:重い処理はキャッシュ(@st.cache_data)を活用しましょう。
  • セキュリティ:ユーザー入力をそのままコードとして実行しないように注意してください。

Streamlit Pythonのまとめ:どんな人におすすめ?

Streamlitは、Pythonで手軽にWebアプリを作りたい人、特にデータサイエンティストや機械学習エンジニアに強くおすすめです。学習コストが低く、開発速度が速いため、プロトタイプ作成や社内ツールに最適です。一方、本格的なWebサービスを開発したい場合は、DjangoやFlaskなどのフレームワークを検討した方が良いでしょう。

この記事を参考に、ぜひStreamlitを試してみてください。あなたのPythonスキルが、Webアプリ開発に広がることでしょう。

AndroidスマートフォンをAmazonで探す

コメント

タイトルとURLをコピーしました