【ITニュース解説】Streamlitの@st.dialogデコレータでモーダルダイアログを実装する
2025年09月07日に「Qiita」が公開したITニュース「Streamlitの@st.dialogデコレータでモーダルダイアログを実装する」について初心者にもわかりやすく解説しています。
ITニュース概要
Streamlit v1.37で追加された`@st.dialog`デコレータを使うと、モーダルダイアログが簡単に実装可能に。従来難しかったダイアログ表示が容易になり、ユーザー登録のようなステップ形式のフォームもダイアログ内に実装できる。Webアプリ開発のUI/UX向上が期待できるだろう。
ITニュース解説
Streamlitの@st.dialogデコレータは、バージョン1.37から導入された機能で、ウェブアプリケーションにモーダルダイアログを簡単に実装するためのものだ。これまで、Streamlitでモーダルダイアログを実現するには、状態管理やセッション状態の操作など、複雑な実装が必要だった。しかし、@st.dialogデコレータを使うことで、これらの複雑さを抽象化し、より直感的にダイアログを作成できるようになった。
モーダルダイアログとは、ウェブページ上で特定の操作を行う際に、メインコンテンツの上に重ねて表示されるウィンドウのことだ。ダイアログが表示されている間は、通常、メインコンテンツの操作は制限され、ダイアログ内での操作が完了するまで、他の操作はできないようになっている。ユーザーに特定の情報を提供したり、重要な決定を促したり、複数ステップの入力フォームを表示したりする際に、モーダルダイアログは有効だ。
@st.dialogデコレータを使う基本的な流れはこうだ。まず、ダイアログとして表示したいコンテンツを生成する関数を定義する。この関数は、Streamlitのコンポーネント(例えば、st.text_input、st.buttonなど)を使って、ダイアログ内に表示する要素を記述する。そして、この関数に@st.dialogデコレータを付与する。これにより、Streamlitは、この関数がダイアログの内容を生成するものであると認識する。
ダイアログを表示するには、通常、ボタンなどのUI要素を配置し、そのボタンがクリックされた際に、デコレータを付与した関数を呼び出す。関数が呼び出されると、Streamlitは自動的にダイアログを表示し、関数内で定義されたコンテンツをダイアログ内に表示する。
ユーザー登録ウィザードを例に考えてみよう。ユーザー登録は、通常、複数のステップで構成される。例えば、名前、メールアドレス、パスワードなどの情報を順に入力する必要がある。各ステップを個別のフォームとして実装し、@st.dialogデコレータを使って、これらのフォームをモーダルダイアログとして表示することができる。
具体的には、各ステップに対応する関数を定義する。例えば、名前を入力するフォームを表示する関数、メールアドレスを入力するフォームを表示する関数、パスワードを入力するフォームを表示する関数、といった具合だ。それぞれの関数内で、st.text_inputなどのコンポーネントを使って、必要な入力フィールドを配置し、st.buttonを使って「次へ」ボタンなどを配置する。
各関数に@st.dialogデコレータを付与し、メインのStreamlitアプリケーション内で、登録開始ボタンを配置する。登録開始ボタンがクリックされたら、最初のステップの関数を呼び出す。ユーザーが最初のステップのフォームに入力し、「次へ」ボタンをクリックしたら、次のステップの関数を呼び出す。これを繰り返すことで、ステップ形式のユーザー登録ウィザードを、モーダルダイアログを使って実現できる。
@st.dialogデコレータを使うことで、状態管理が容易になる。ダイアログ内の入力フィールドに入力された値は、セッション状態に自動的に保存されるため、ステップ間で値を引き継ぐのが簡単になる。例えば、最初のステップで入力された名前を、次のステップで確認のために表示したり、最終ステップで登録内容全体を表示したりする際に、セッション状態に保存された値を利用できる。
また、@st.dialogデコレータは、コールバック関数との連携も可能にする。コールバック関数は、ダイアログが閉じられた後に実行される関数だ。例えば、ユーザー登録が完了した後に、データベースにユーザー情報を保存したり、登録完了メッセージを表示したりする際に、コールバック関数を利用できる。
@st.dialogデコレータを使うことで、Streamlitアプリケーションに、より洗練されたユーザーインターフェースを実装できる。モーダルダイアログは、ユーザーエクスペリエンスを向上させ、アプリケーションの使いやすさを向上させるための強力なツールだ。特に、複数ステップのフォームや、重要な決定を促す必要がある場合に、モーダルダイアログは非常に有効だ。
Streamlitを始めたばかりの初心者でも、@st.dialogデコレータを使えば、比較的簡単にモーダルダイアログを実装できる。公式ドキュメントやチュートリアルを参照しながら、実際にコードを書いて試してみることをお勧めする。様々なUIコンポーネントを組み合わせて、独自のモーダルダイアログを作成することで、Streamlitの理解を深め、より高度なアプリケーション開発に挑戦できるようになるだろう。