こんにちは、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】
まずは最小限のコードから使い方を見てみましょう。
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(初期値)
st.text_area("メモ", value="ここに初期値を設定できます")2. height(高さの指定)
st.text_area("高さ調整テスト", height=200)単位はピクセル。高さが足りないと感じるときに使うと便利です。
3. max_chars(最大文字数の制限)
st.text_area("最大文字数10文字", max_chars=10)これ以上は入力できません。
4. placeholder(入力前に表示される薄い文字)
st.text_area("フィードバック", placeholder="ここにご意見をお書きください")5. disabled(入力不可にする)
st.text_area("この欄は無効です", disabled=True)6. key(一意な識別子)
同じようなウィジェットを複数使うときに必要になります。
st.text_area("コメント1", key="comment1")
st.text_area("コメント2", key="comment2")応用例:文字数カウントアプリ【ステップ3】
実際に入力された内容を使って簡単なアプリを作ってみましょう。今回は、入力した文章の文字数をカウントして表示するアプリです。
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=200やheight=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著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。ぜひ手に取ってみてください。
最後まで読んでいただきありがとうございます。

