サイトアイコン アマチュア無線局JS2IIU

【Streamlit】ユーザーからの数値入力:st.number_input

こんにちは、JS2IIUです。

1. はじめに

Streamlitは、Pythonで簡単にインタラクティブなWebアプリケーションを作成できる便利なライブラリです。その中でも、ユーザーからの入力を受け取るためのウィジェットは非常に重要な要素です。

今回はその中でも「数値を入力してもらう」ためのウィジェットである st.number_input を紹介します。この記事では、st.number_input の基本的な使い方から、オプションを活用した応用例、よくある注意点まで、ステップバイステップで丁寧に解説します。

2. st.number_inputとは?

st.number_input は、ユーザーから 数値(整数または小数)を入力 してもらうためのウィジェットです。入力された値は変数として取得できるため、後続の処理に自由に利用できます。

Python
number = st.number_input('数値を入力してください')

このように簡単な一行で、数値入力フィールドを画面上に表示できます。

3. 基本的な使い方【ステップバイステップ】

まずは最も基本的な使い方を見てみましょう。

ステップ①:Streamlitのインポート

Python
import streamlit as st

ステップ②:数値入力フィールドの作成

Python
number = st.number_input('数値を入力してください')

ステップ③:入力された値を表示

Python
st.write(f'あなたが入力した数値:{number}')

フルコード例:

Python
import streamlit as st

number = st.number_input('数値を入力してください')
st.write(f'あなたが入力した数値:{number}')

このコードを実行すると、画面に数値を入力できるフィールドが表示され、入力した値がリアルタイムで下に表示されます。

4. よく使うオプションの解説

st.number_input は、いくつかの便利なオプションを指定することで、入力値の範囲やステップなどを細かく設定できます。

オプション名説明使用例
min_value入力できる最小値min_value=0
max_value入力できる最大値max_value=100
valueデフォルトの初期値value=10
step値の増減ステップstep=5
format表示フォーマット(小数点の桁数など)format="%.2f"
key同じラベルが複数あるときの識別子key='input1'

さらに詳しくはStreamlitのドキュメントを参照してください。

st.number_input – Streamlit Docs

st.number_input - Streamlit Docs
st.number_input displays a numeric input widget.

5. オプションを使った応用例

例えば、年齢の入力フィールドを作りたい場合は以下のように記述します。

Python
import streamlit as st

age = st.number_input(
    '年齢を入力してください',
    min_value=0,
    max_value=120,
    value=25,
    step=1
)

st.write(f'あなたの年齢:{age}歳')

解説:

6. 小数を入力する例

小数(たとえば体重など)を入力してもらいたい場合は、次のように記述します。

Python
import streamlit as st

weight = st.number_input(
    '体重を入力してください(kg)',
    min_value=30.0,
    max_value=150.0,
    value=60.0,
    step=0.1,
    format="%.1f"
)

st.write(f'あなたの体重:{weight}kg')
https://js2iiu.com/wp-content/uploads/2025/04/11_03.mov

解説:

7. よくあるエラー・注意点

❗ min_value と max_value の順序に注意

Python
st.number_input('', min_value=100, max_value=0)  # ❌ エラーになります

min_value は必ず max_value より小さく設定しましょう。

❗ value が範囲外だとエラーまたは無視される

Python
st.number_input('', min_value=0, max_value=10, value=50)  # ⚠️ 50は無効

valuemin_valuemax_value の範囲内にしましょう。

❗ 小数点のステップを使うときは format も設定

Python
st.number_input('', step=0.1)  # ⚠️ 表示が意図しない形式になることも

format="%.1f" を併用して、見た目を整えましょう。

8. まとめ

st.number_input は、ユーザーから数値を受け取りたい場面でとても便利なウィジェットです。基本的な使い方はシンプルですが、オプションを使いこなすことで、より実用的なUIを作ることができます。

本記事のポイント

ぜひ、あなたのアプリでも st.number_input を活用してみてください。

9. 参考リンク

最後に書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。ぜひ手に取ってみてください。

最後まで読んでいただきありがとうございます。

モバイルバージョンを終了