目次
この記事について
この記事では、注目すべきオープンソースソフトウェア(OSS)を定期的に紹介していきます。連載第66回となる今回は、データアプリケーションの迅速な構築を可能にする「Streamlit」に焦点を当てます。
近年、データ分析や可視化のニーズが高まる中、多くの人がPythonを使用してデータ関連の作業に取り組んでいます。しかし、データを視覚的に表現し、インタラクティブなアプリケーションに昇華させるためのプロセスはしばしば煩雑で時間を要します。そんな中、Streamlitは数分でPythonスクリプトをインタラクティブなウェブアプリに変換する力強いツールとして登場しました。
この記事では、Streamlitの概要やその機能、実際にどのように使えるのかについて詳しく紹介します。データサイエンスや機械学習の分野で、迅速なプロトタイピングやフィードバックの取得を可能にするこのツールの使用意義について考察し、コミュニティとのコラボレーションや拡張機能の利用方法についても触れていきます。これにより、多くの開発者がStreamlitの利点を理解し、その可能性を最大限に引き出す一助となることを願っています。
リンク:https://github.com/streamlit/streamlit

本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。
1. Streamlitでできること
Streamlitは、Pythonスクリプトを数分でインタラクティブなWebアプリケーションに変換するツールです。このツールを使用することで、ダッシュボードの構築、レポートの生成、チャットアプリの作成などが可能です。また、作成したアプリはStreamlitのコミュニティクラウドプラットフォームを利用して、デプロイ、管理、共有ができます。Streamlitの主な特徴には以下があります。
- シンプルでPythonicな構文で、可読性の高いコードが書けます。
- 迅速なインタラクティブプロトタイピングが可能で、他者とデータを共有しフィードバックを得やすいです。
- スクリプトを編集する際には、アプリが即座に更新されるライブ編集機能があります。
- オープンソースで無料のため、活気あるコミュニティに参加し、Streamlitの未来に貢献できます。
Streamlitはデータに基づいたアプリを簡単に作成できるだけでなく、利用者は独自のデータセットを用いたアプリを構築することも可能です。例えば、公に利用できるUberのデータセットを使って、ニューヨーク市におけるピックアップデータの可視化が行えます。
2. セットアップ手順
Streamlitのインストールは非常に簡単です。ターミナルを開いて下記のコマンドを実行します。
pip install streamlit
インストールが完了したら、以下のコマンドを実行して、Streamlitのサンプルアプリ「Streamlit Hello」を起動します。
streamlit hello
これにより、ブラウザで「Streamlit Hello」アプリが開けば、セットアップは成功です。もしアプリが開かない場合は、ドキュメントを参照して、特定のインストール手順を確認してください。
StreamlitはApache 2.0ライセンスのもとで提供されており、完全に無料で使用できます。
3. 簡単な使い方
Streamlitを使って簡単なアプリを作成する方法を説明します。まず、プロジェクトディレクトリ内にstreamlit_app.py
という名前の新しいファイルを作成し、以下のコードを記述します。
import streamlit as st
x = st.slider("Select a value")
st.write(x, "squared is", x * x)
このコードでは、スライダーを使って数値を選択し、その数値の二乗を表示するアプリを作成しています。次に、以下のコマンドを実行してアプリを起動します。
streamlit run streamlit_app.py
これにより、選択した値の二乗を表示するインタラクティブなアプリが立ち上がります。
Streamlitには、さらに多くの強力な要素が用意されており、例えば以下のような機能を利用することができます。
- インタラクティブウィジェットの利用(スライダー、チェックボックスなど)
- データフレームの表示や加工
- グラフの作成(ヒストグラムやマップ表示など)
- 複雑なマルチページアプリの構築
さらに、Uberデータセットを利用したアプリの作成手順も示します。まず、新しいPythonスクリプトuber_pickups.py
を作成し、次のコードを加えます。
import streamlit as st
import pandas as pd
import numpy as np
st.title('Uber pickups in NYC')
DATE_COLUMN = 'date/time'
DATA_URL = ('https://s3-us-west-2.amazonaws.com/streamlit-demo-data/uber-raw-data-sep14.csv.gz')
@st.cache_data
def load_data(nrows):
data = pd.read_csv(DATA_URL, nrows=nrows)
lowercase = lambda x: str(x).lower()
data.rename(lowercase, axis='columns', inplace=True)
data[DATE_COLUMN] = pd.to_datetime(data[DATE_COLUMN])
return data
data_load_state = st.text('Loading data...')
data = load_data(10000)
data_load_state.text('Loading data...done!')
if st.checkbox('Show raw data'):
st.subheader('Raw data')
st.write(data)
st.subheader('Number of pickups by hour')
hist_values = np.histogram(data[DATE_COLUMN].dt.hour, bins=24, range=(0, 24))[0]
st.bar_chart(hist_values)
hour_to_filter = st.slider('hour', 0, 23, 17)
filtered_data = data[data[DATE_COLUMN].dt.hour == hour_to_filter]
st.subheader(f'Map of all pickups at {hour_to_filter}:00')
st.map(filtered_data)
このアプリはUberのピックアップデータを読み込み、ヒストグラムや地図を表示する機能を持っています。
結論
Streamlitは、Pythonを使って迅速にインタラクティブなデータアプリを構築できる非常に強力なツールです。シンプルな構文と迅速なプロトタイピングの特性により、データを視覚化し、他者と効果的に共有することができます。オープンソースであるため、自由に利用でき、コミュニティと共に成長することができる点も魅力です。データアプリケーションの開発を考えている方は、ぜひStreamlitを試してみてください。