◯こちらのサンプルコードは指導等にご自由にお使いください。
【サンプルコードの使い方】
◯サンプルコードを写す時はコピペをしないようにしましょう。
◯▶を押すと出力が表示されます。
◯Geminiボタンを押すとGemini(AI)による解説が表示されます。間違っていることもあるので、疑問に思った場合はご質問ください。
◯本マークを押すとカテゴリーの解説が見られます。
◯サンプルコードを写す時はコピペをしないようにしましょう。
◯▶を押すと出力が表示されます。
◯Geminiボタンを押すとGemini(AI)による解説が表示されます。間違っていることもあるので、疑問に思った場合はご質問ください。
◯本マークを押すとカテゴリーの解説が見られます。
【カテゴリーごとのページへ移動】
【Code List】
CODE: r-1 (Streamlit)
import streamlit as st def main(): st.set_page_config(page_title="はじめてのStreamlit") st.title("はじめてのStreamlit") name = st.text_input("あなたのお名前を教えてください") if ( st.button("実行する") ): st.write(f"こんにちは、{name}さん!") return(0) if __name__ == "__main__": main()

- Streamlitは、簡単にWebサイトを作れるライブラリ。
- st.title()でタイトル設定、st.text_input()でテキストボックス作成、st.button()でボタン作成など...
- st.write()でページの書き換えを行う。
- 作成されたページで名前を入れてみて、"こんにちは、〇〇さん!"と表示されるかを確かめよう。
CODE: r-2 (Streamlit)
import streamlit as st def main(): title = "Streamlitでセレクトボックス!" st.set_page_config(page_title=title) st.title(title) fruits_list = ["りんご", "バナナ", "みかん", "いちご"] name = st.text_input("あなたのお名前を教えてください") selected_fruits = st.selectbox("好きな果物を教えて!", fruits_list) if ( st.button("実行する") ): st.write(f"こんにちは、{name}さん!") st.write(f"選択したフルーツ: {selected_fruits}") return(0) if __name__ == "__main__": main()

- Streamlitではセレクトボックスやラジオボタンなど、Webサイトに必要な要素が一通り使える。
- セレクトボックスは"配列"を作成し、st.selectbox()で設定するだけ!
- st.selectbox()で取得した値は、選択された要素となる。
CODE: r-3 (Streamlit)
import streamlit as st def show_page1(): st.title("問い合わせフォーム") with st.form("contact_form"): name = st.text_input("お名前") message = st.text_input("内容") submitted = st.form_submit_button("送信") if ( submitted ): if ( name and message ): st.session_state.name = name st.session_state.message = message st.session_state.page = "page2" st.rerun() else: st.error("すべての項目に入力してください。") return def show_page2(): st.title("送信完了!") st.write("送信内容") name = st.session_state.get("name") message = st.session_state.get("message") st.write(f"名前: {name}") st.write(f"内容: {message}") if ( st.button("フォームに戻る") ): st.session_state.page = "page1" st.rerun() return def main(): st.set_page_config(page_title="問い合わせフォーム") if ( "page" not in st.session_state ): st.session_state.page = "page1" if ( st.session_state.page=="page1" ): show_page1() elif ( st.session_state.page=="page2" ): show_page2() return(0) if __name__ == "__main__": main()

- 「一つの画面に一つの関数」という考え方を大事にしよう!
- どこからどの画面(関数)に遷移するのかをチェック!
- st.session_stateにて入力内容を保存する。
- st.rerun()でmain()がもう一度呼び出されるイメージ。main()で画面を振り分けている。
- st.form()の引数は空欄でなければなんでも良いが、他のフォームと違うものにしよう。
- 【注意】st.session_state.{xxx} のxxxの部分は何を入れてもよい。適当な変数名にしよう。
CODE: r-4 (Streamlit)
import streamlit as st def show_tab1(): st.subheader("ユーザープロフィール") name = st.text_input("表示名", value="山田 太郎") bio = st.text_area("自己紹介", placeholder="ここに自己紹介を書いてください") st.info("これらは公開プロフィールに表示されます。") return(name, bio) def show_tab2(name, bio): st.subheader("現在の設定内容") st.write(f"**名前:** {name}") st.write(f"**紹介文:** {bio}") return def main(): st.title("マイページ設定") (tab1, tab2) = st.tabs(["基本情報", "プレビュー"]) with tab1: (name, bio) = show_tab1() with tab2: show_tab2(name, bio) return(0) if __name__ == "__main__": main()

- st.tabs()でタブ画面を簡単に実装できる。
- タブ画面も関数で管理するとわかりやすい。
- 画面について、「何の値を渡して」「何を取得するか」を考えて関数を作成しよう。
- タブ以外にも、横分割のst.columns()など様々な関数が実装されている。st.columns()はスマホ画面で見づらくなることがあるので、まずはタブ画面をマスターしよう。
CODE: r-5 (Streamlit)
import streamlit as st def main(): st.title("計算チャットボット") if ( "messages" not in st.session_state ): st.session_state.messages = [] for message in st.session_state.messages: with st.chat_message(message["role"]): st.write(message["content"]) prompt = st.chat_input("計算式を入力してください (例: 10 + 5)") if ( prompt ): st.session_state.messages.append({"role": "user", "content": prompt}) with st.chat_message("user"): st.write(prompt) try: result = eval(prompt) response = f"計算結果は {result} です。" except Exception: response = "計算できませんでした。正しい数式を入力してください。" with st.chat_message("assistant"): st.write(response) st.session_state.messages.append({"role": "assistant", "content": response}) return(0) if __name__ == "__main__": main()

- st.chat_message(), st.chat_input()の2つだけで、チャットボットの画面を作成することができる。
- try - exceptにて、例外処理を行っている。Pythonでの「例外処理」の基本
- st.session_state.messagesにメッセージのやりとりを保存しておき、最初に表示する。
- st.chat_message()でroleを入力し、st.write()でメッセージの内容を出力。
- roleは"user"と"assistant"の他に"system"や、ユーザで設定したものを使用することもできる。
- eval()は文字列で与えられた式を実行する組み込み関数。ここの部分を自作のものに変えることで、好きなチャットボットを作ることができる。



