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

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

こんにちは、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)

✅ 解説:

  • st.text_area("ラベル名"):ラベル付きでテキストエリアを表示します。
  • text には、入力された内容(文字列)が代入されます。
  • st.write を使って、入力内容を画面に表示しています。

このコードを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} 文字")

✅ 解説:

  • 入力されたテキストが空でない場合に文字数をカウント。
  • Pythonの len() 関数を使って、文字数を取得します。

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

よくある注意点とTips

✅ 改行の入力方法

  • 通常のEnterキーで改行ができます(フォームを送信することはありません)。
  • 送信がトリガーされることはなく、リアルタイムで値が反映されます。

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

  • 入力内容によってはスクロールが必要になることがあります。
  • 長文が予想されるときは、height=200height=300 などを指定しましょう。

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

  • st.text_areaに入力された内容はあくまで「プレーンテキスト(素の文字列)」です。
  • Markdown形式で表示したい場合は、別途 st.markdown() を使って処理が必要です。

まとめ

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

✅ ポイントのおさらい

  • st.text_areaは長文や改行を含むテキスト入力に便利。
  • value, height, max_chars などのオプションで柔軟にカスタマイズ可能。
  • 入力内容はそのままPythonで処理できるため、さまざまな応用が可能。

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

参考リンク

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

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

コメント

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