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

【Streamlit】複数行のテキスト入力:st.text_area

こんにちは、JS2IIUです。
今回はStreamlit上で複数行にわたる長い文字列を入力できる様にするst.text_areaについて説明していきます。今回もよろしくお願いします。

はじめに

WebアプリケーションやGUIツールを作るとき、ユーザーから「長文の入力」を受け付けたいことがあります。たとえば、感想や問い合わせ内容、コードスニペット、長めのコメントなどです。

Pythonで手軽にWebアプリが作れるStreamlitには、そんなときに便利なウィジェットが用意されています。それが、st.text_area です。

st.text_areaとは?

st.text_areaは、複数行のテキスト入力フィールドを表示するStreamlitのウィジェットです。

似た名前のst.text_inputは「1行だけ」のテキスト入力に使いますが、st.text_area改行を含む長文の入力ができる点が大きな違いです。

✅ こんなときに使うと便利!

基本的な使い方【ステップ1】

まずは最小限のコードから使い方を見てみましょう。

Python
import streamlit as st

text = st.text_area("ご意見・ご感想を入力してください")
st.write("あなたの入力内容:")
st.write(text)
https://js2iiu.com/wp-content/uploads/2025/04/13_01.mov

✅ 解説:

このコードをStreamlitで実行すると、複数行のテキストボックスが表示され、入力内容がその下に表示されます。

よく使うパラメータ【ステップ2】

st.text_areaには便利なオプションがいくつかあります。それぞれの意味を具体的なコードと一緒に紹介します。

1. value(初期値)

Python
st.text_area("メモ", value="ここに初期値を設定できます")

2. height(高さの指定)

Python
st.text_area("高さ調整テスト", height=200)

単位はピクセル。高さが足りないと感じるときに使うと便利です。

3. max_chars(最大文字数の制限)

Python
st.text_area("最大文字数10文字", max_chars=10)

これ以上は入力できません。

4. placeholder(入力前に表示される薄い文字)

Python
st.text_area("フィードバック", placeholder="ここにご意見をお書きください")

5. disabled(入力不可にする)

Python
st.text_area("この欄は無効です", disabled=True)

6. key(一意な識別子)

同じようなウィジェットを複数使うときに必要になります。

Python
st.text_area("コメント1", key="comment1")
st.text_area("コメント2", key="comment2")

応用例:文字数カウントアプリ【ステップ3】

実際に入力された内容を使って簡単なアプリを作ってみましょう。今回は、入力した文章の文字数をカウントして表示するアプリです。

Python
import streamlit as st

text = st.text_area("文章を入力してください", height=150)

if text:
    length = len(text)
    st.write(f"文字数:{length} 文字")

✅ 解説:

このように、st.text_areaで入力された情報は、Pythonのコードで自由に処理できます。

よくある注意点とTips

✅ 改行の入力方法

✅ 高さが足りないときはheightを調整

✅ MarkdownやHTMLはサポートされない

まとめ

今回は、Streamlitで複数行のテキストを入力できる st.text_area の使い方を紹介しました。

✅ ポイントのおさらい

StreamlitでフォームやインタラクティブなUIを作るときには、ぜひ活用してみてください!

参考リンク

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

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

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