はじめに
業務で Streamlit を使う機会が増えてきたので、最新リリース v1.49.0 で追加された新機能を試してみました。
UI まわりやデータ操作がさらに便利になっているので、そのハイライトを紹介します。
- バージョン: 1.49.0
- リリース日: 2025 年 8 月 26 日
新機能のハイライト
- 📄 st.pdf : アプリ内で PDF ドキュメントを美しくレンダリング可能に!
- ⛏️ DataFrame セル選択 : ユーザーがセル単位で選択できるように!
- ✨ st.metric のスパークライン : KPI カードにトレンドを追加可能に!
- ✏️ ListColumn 編集対応 : データフレーム編集時にリスト列を操作できる!
- 📂 ディレクトリ単位アップロード :
st.file_uploader
やst.chat_input
でフォルダごと選択可能に!
v1.49 のその他機能や詳細はこちら
st.pdf で PDF を表示
アプリ内で PDF を直接表示できるようになりました。
Streamlit 上でそのまま綺麗にレンダリングできます。ドキュメントビューアやマニュアル共有に便利そうです。
サンプルコード
import streamlit as st
st.header("1. st.pdf")
st.text("PDF を綺麗に表示できるようになりました。")
st.pdf("data/Release notes - Streamlit Docs.pdf") # パスを指定
DataFrame セル選択
st.dataframe
で セル単位の選択 がサポートされました。
選択したセルの行・列情報をイベントとして取得できるため、インタラクティブな分析やデータ操作が可能になりそうです。
サンプルコード
import streamlit as st
import pandas as pd
st.header("2. st.dataframe selections")
explanation = """
v.1.49.0でcellの値を戻り値として取得できるようになりました。
> cells (list[tuple[int, str]])
選択されたセルを、行の整数位置と列名のタプルで表します。
例: 列名 \"col 1\" の最初のセルは (0, \"col 1\") と表されます。
ただし、インデックス列のセルは返されません。
"""
st.markdown(explanation)
df = pd.DataFrame(
rng(0).standard_normal((12, 5)), columns=["a", "b", "c", "d", "e"]
)
event = st.dataframe(
df,
key="data",
on_select="rerun",
selection_mode=["multi-row", "multi-column", "multi-cell"], # セル選択モードはmulti-cellを指定
)
event.selection
st.metric のスパークライン
st.metric
に スパークライン(小さなチャート) を表示できるようになりました。
KPI カードなどでトレンドを直感的に見せられるので、ダッシュボードの表現力が向上しそうです。
サンプルコード
import streamlit as st
st.header("3. st.metric sparkline")
explanation = """
st.metric で sparkline が表示できるようになりました。
"""
st.markdown(explanation)
st.metric(
label="売上高 Area Chart",
value="1,200",
delta="+50",
chart_data=[100, 200, 250, 300, 280, 350],
chart_type="area", # エリアチャート
help="過去6ヶ月の売上推移"
)
st.metric(
label="売上高 Line Chart",
value="1,200",
delta="+50",
chart_data=[100, 200, 250, 300, 280, 350],
chart_type="line", # ラインチャート
help="過去6ヶ月の売上推移"
)
st.metric(
label="売上高 Bar Chart",
value="1,200",
delta="+50",
chart_data=[100, 200, 250, 300, 280, 350],
chart_type="bar", # バーチャート
help="過去6ヶ月の売上推移"
)
ListColumn 編集対応
これまで ListColumn は表示専用でしたが、編集可能 になりました。
タグや複数属性を持つデータの編集を直接 UI 上で行えるため、ラベル管理やメタ情報付きデータ入力に役立ちます。
サンプルコード
import streamlit as st
import pandas as pd
st.header("4. st.data_editor with ListColumn")
st.markdown("リスト型データを含む DataFrame を編集可能な形式で表示します。v.1.48はListColumnは表示のみでした。")
# サンプルデータ
df = pd.DataFrame({
"ID": [1, 2, 3],
"Tags": [["AI", "Python"], ["Streamlit"], ["Data", "Viz", "App"]]
})
# DataFrame を表示(リストカラムを設定)
st.data_editor(
df,
column_config={
"Tags": st.column_config.ListColumn(
"関連タグ", # ラベル
help="この列はリスト型データです"
)
},
use_container_width=True
)
ディレクトリ単位アップロード
st.file_uploader / st.chat_input
で フォルダ単位のアップロード に対応しました。
画像データセットなど、複数ファイルを一括で投入したい場面で特に便利です。
サンプルコード
import streamlit as st
st.header("5. st.file_uploader with Directory Upload")
st.markdown("ディレクトリをアップロードできるようになりました。")
uploaded_files = st.file_uploader("Upload a directory", accept_multiple_files='directory')
if uploaded_files:
for uploaded_file in uploaded_files:
st.write(f"Uploaded file: {uploaded_file.name}")
まとめ
Streamlit 1.49.0 では、PDF 表示、セル選択、スパークライン、リスト列編集、ディレクトリアップロードなど、UI とデータ操作が大幅に強化されました。
ソースコード全体は以下の GitHub リポジトリで公開しています。