1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Streamlit 1.49.0 新機能を試してみた

Last updated at Posted at 2025-09-02

はじめに

業務で Streamlit を使う機会が増えてきたので、最新リリース v1.49.0 で追加された新機能を試してみました。
UI まわりやデータ操作がさらに便利になっているので、そのハイライトを紹介します。

  • バージョン: 1.49.0
  • リリース日: 2025 年 8 月 26 日

新機能のハイライト

  • 📄 st.pdf : アプリ内で PDF ドキュメントを美しくレンダリング可能に!
  • ⛏️ DataFrame セル選択 : ユーザーがセル単位で選択できるように!
  • st.metric のスパークライン : KPI カードにトレンドを追加可能に!
  • ✏️ ListColumn 編集対応 : データフレーム編集時にリスト列を操作できる!
  • 📂 ディレクトリ単位アップロード : st.file_uploaderst.chat_input でフォルダごと選択可能に!

v1.49 のその他機能や詳細はこちら

st.pdf で PDF を表示

アプリ内で PDF を直接表示できるようになりました。
Streamlit 上でそのまま綺麗にレンダリングできます。ドキュメントビューアやマニュアル共有に便利そうです。

PDF表示

サンプルコード

import streamlit as st

st.header("1. st.pdf")
st.text("PDF を綺麗に表示できるようになりました。")
st.pdf("data/Release notes - Streamlit Docs.pdf")  # パスを指定

DataFrame セル選択

st.dataframe で セル単位の選択 がサポートされました。
選択したセルの行・列情報をイベントとして取得できるため、インタラクティブな分析やデータ操作が可能になりそうです。

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 カードなどでトレンドを直感的に見せられるので、ダッシュボードの表現力が向上しそうです。

st.metric のスパークライン

サンプルコード

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 上で行えるため、ラベル管理やメタ情報付きデータ入力に役立ちます。

ListColumn 編集対応

サンプルコード

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 リポジトリで公開しています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?