【Streamlit】テキスト入力:st.text_input

Streamlit
この記事は約6分で読めます。

こんにちは、JS2IIUです。
Streamlit上でテキスト入力し、プログラムに渡して処理を行う方法について説明していきます。今回もよろしくお願いします。

🧭 はじめに

Streamlitは、PythonコードだけでインタラクティブなWebアプリケーションを簡単に作れる人気のライブラリです。
本記事では、ユーザーからの文字入力を受け取るためのウィジェット、st.text_inputについて詳しく解説します。

🔰 st.text_inputとは?

st.text_inputは、Streamlitでテキスト入力欄(シングルライン)を表示するための関数です。
ユーザーが入力した文字列は、Pythonの変数として取得することができ、さまざまな処理に活用できます。

✅ 主な用途

  • 名前や住所などの入力受付
  • 検索キーワードの取得
  • 任意のメッセージやコマンドの受け取り など

🛠 ステップ1:基本的な使い方

まずは、最もシンプルな形でst.text_inputを使ってみましょう。

📄 サンプルコード

Python
import streamlit as st

name = st.text_input("あなたの名前を入力してください")
st.write("こんにちは、", name, "さん!")

📝 解説

  • st.text_input("ラベル"):入力欄の上に表示されるラベルです。
  • 入力されたテキストは変数nameに格納されます。
  • st.writeを使って、その入力値を画面に表示しています。

💡 補足

テキストを入力するたびに自動的にアプリが再実行され、即時に画面が更新されるのがStreamlitの特徴です。

🛠 ステップ2:デフォルト値とプレースホルダーを設定する

ユーザーが入力する前に、ヒントや初期値を表示したい場合は、valueplaceholderという引数が便利です。

📄 サンプルコード

Python
city = st.text_input(
    label="住んでいる都市を入力してください",
    value="東京",
    placeholder="例:大阪、名古屋"
)
st.write("入力された都市:", city)

📝 解説

  • value="東京":最初から入力欄に「東京」が表示されます。
  • placeholder="例:大阪、名古屋":入力欄が空のときに表示される薄いガイド文字です。

🛠 ステップ3:入力値を使った条件分岐

入力された値が空かどうかで、表示内容を変えることもできます。

📄 サンプルコード

Python
keyword = st.text_input("好きな果物を入力してください")

if keyword:
    st.write(f"{keyword}は美味しいですね!")
else:
    st.write("果物の名前を入力してみてください。")

📝 解説

  • if keyword: で入力があるかを判定。
  • 入力があればメッセージを出力、なければ促すメッセージを表示します。

🛠 ステップ4:入力値を処理に活用する

入力値を関数の引数として使えば、より柔軟な処理が可能になります。

📄 サンプルコード

Python
def fake_search(keyword):
    return f"「{keyword}」に関する検索結果を表示中…(※実際の検索は未実装)"

search_term = st.text_input("検索キーワードを入力してください")

if search_term:
    result = fake_search(search_term)
    st.write(result)

📝 解説

  • 入力されたキーワードを関数に渡して、動的なメッセージを生成しています。
  • 実際の検索機能を作る場合もこのような形式で処理を組み立てられます。

⚠️ よくある注意点

1. 空の入力に注意

空文字が入力されたときに処理が動かないように、if文などでチェックするのが基本です。

2. 入力内容のチェック(バリデーション)は自分で実装

st.text_inputは入力内容を制限しません。数字だけを許可する、文字数を制限するなどの処理は、Python側で実装する必要があります。

3. パスワードのように入力内容を隠したい場合

type="password"という引数で、入力内容をマスク表示できます。

Python
password = st.text_input("パスワードを入力してください", type="password")

🧾 まとめ

項目内容
関数名st.text_input
用途ユーザーからテキスト入力を受け取る
主な引数label, value, placeholder, type
活用方法条件分岐、関数呼び出し、他のUIとの連携など

🎯 ポイントのおさらい

  • st.text_inputはユーザーとのインタラクションの第一歩
  • 入力値はPythonの変数として扱える
  • デフォルト値やプレースホルダーでユーザビリティ向上
  • 入力値を処理に活用することで、動的なアプリが作れる

🔗 参考リンク

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

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

コメント

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