「Streamlit」で小学生の漢字学習を後押し
プログラミングが苦手な人でも、手軽にWebアプリが作れるツール「Streamlit」があることをご存知でしょうか。
これは元Googleブレインの研究者、Amanda Kellyが開発した魔法のようなフレームワークです。
Amanda自身、研究で生まれたAIモデルをアプリ化する過程が非常に面倒で時間がかかることに frustration を感じていました。
そこで、Pythonコードをそのまま実行するだけでアプリが作れる、まさに革命的なStreamlitを生み出したのです。
今回は、このStreamlitを使って小学生向けの漢字練習アプリを作る手順をご紹介します。
漢字学習は地道な努力が必要ですが、このアプリなら子供たちがゲームを楽しむ気分で漢字に親しめます。
間違えた問題の解答が見られたり、ランダムに出題されるので飽きない等、学習を助ける多くの工夫が凝らされています。
Amandaの「テクノロジーの力で、人々のための可能性を最大化したい」という思いが込められたStreamlitで、子供たちの漢字力アップをサポートしましょう。
初心者でも、このブログを手引きにアプリ作成に挑戦できます。
Streamlitとは?
Streamlitは、データサイエンティストであるAmanda Kellyによって作られたPythonのアプリケーション開発フレームワークです。
Amanda Kellyの原点
Amanda Kellyは幼い頃から数学と科学が大の得意でした。
両親はAmandaの好奇心と探究心を常に後押ししてくれていました。
夏休みには両親に連れられローマ遺跡を訪れるのが何よりの楽しみで、そこで古代ローマ人の知恵と水道技術の素晴らしさに感銘を受けたAmandaは、将来考古学者になることを決意したのでした。
大学時代、Amandaは古典文学と考古学を学びながら、休暇を利用して発掘調査にも参加して実地経験を積みました。
ある夏のクレタ島での発掘調査で、ローマ時代の浴場跡が出土したことから、Amanda は強く興味を持ち卒業論文のテーマをその浴場跡に決めます。
卒業後は熱心に資料を収集し、浴場の構造や利用形態について詳細に分析。この経験がAmandaをローマ時代の水道・浴場の第一人者に導いたのです。
2004年にはフルブライト奨学生としてハーバード大学に留学し、研究に没頭しました。
古代ローマ人の水道技術の素晴らしさに改めて気付いたAmandaは、ローマ人の知恵や工夫を現代に活かせないか真剣と考えるようになりました。
当時のアプリ開発は極めて複雑でした。
アプリ化するためには高度なプログラミング力が求められ、研究者たちにはそこに多大な時間を割かれてしまいます。
本来の研究活動から遠ざけられてしまう状況だったのです。
そこで Amanda は、「もっと手軽にアプリを作れる環境があれば、研究の成果を広く活用しやすくなる」と考えました。
つまり、アプリケーション開発の効率化こそが、古代の英知を現代に生かす鍵だと気づいたのです。
このように、Amanda Kellyには幼少期から科学への関心が強く、考古学の道を歩んだ中で築かれたローマ時代の水道技術への深い理解があり、それを現代に生かそうとする情熱がStreamlitの誕生を導いたのです。
周りの子供たちが人形遊びに夢中になっている中、Amandaはローマ時代の水道橋の模型作りに熱中していたそうです。
マジカルアプリ”Streamlit”の誕生
Amanda KellyはデータサイエンティストやAIリサーチャーが、アプリケーション開発にあまり時間を取られずに本来の研究に集中できる環境を整えたいと考えました。
そこで、Pythonスクリプトをほとんどそのままアプリケーションに変換できるStreamlitの開発に着手しました。
開発の過程では数々の試行錯誤を重ねましたが、Amandaの情熱と並々ならぬ探究心がStreamlitを生み出す原動力となりました。
遂にStreamlitはリリースされ、データサイエンティストの強力な味方となりました。
Amandaは「Streamlitを使えば、技術的なハードルを気にすることなく、誰もがデータ分析アプリを作れるようになる」と語っています。
彼女の夢は、テクノロジーを活用して人々の可能性を最大限に引き出すことです。
このように、Amanda Kellyは幼少期から科学への関心が強く、AIの分野で活躍した後にStreamlitを生み出しました。彼女の人生は探究心と可能性を広げたいという情熱に貫かれています。
Webアプリ作成手順
Streamlitを使って小学生向けの漢字練習アプリを作る手順を紹介します。
今回作成するアプリでは、小学1年生レベルの漢字問題を出題します。
問題文の一部が**で囲まれており、その部分に当てはまる漢字を入力する形式になっています。
例えば「**あめ**がふっています」といった具合です。
Streamlitをインストールする
まずは、Streamlitをインストールしましょう。次のコマンドをターミナルに入力してください。
pip install streamlit
テスト用の漢字データを用意する
テスト用の漢字データを辞書形式で作成します。例えば以下のような形で、問題と答えのペアを作成します。
questions_answers = {
"1. 今日は **" + "あめ" + "** がふっています。": "雨",
"2. 公園でたくさんの **" + "こども" + "** があそんでいる。": "子供",
"3. 私たちの **" + "かぞく" + "** は **" + "いっしょ" + "** にピクニックに行った。": "家族・一緒",
# 他の問題と答え...
}
Streamlitアプリケーションを作成する
次に、Streamlitアプリケーションを作成します。以下のようなスクリプトを作成して app.py
という名前で保存します。
import streamlit as st
import random
# 問題と答えのペアを作成します
questions_answers = {
"1. 今日は **" + "あめ" + "** がふっています。": "雨",
"2. 公園でたくさんの **" + "こども" + "** があそんでいる。": "子供",
"3. 私たちの **" + "かぞく" + "** は **" + "いっしょ" + "** にピクニックに行った。": "家族・一緒",
# 他の問題と答え...
}
user_answers = {}
def main():
st.title("小学生の漢字テスト(1年生レベル)")
st.write("以下の問題に対して正しい読み方を入力してください。")
# テストスタートボタンを表示します
if st.button("テストスタート"):
run_test()
# テストスタートボタンを表示します
if st.button("解答"):
run_answer()
def run_test():
st.write("テストスタート!")
user_answers.clear() # テストを再度行う際に前回の解答をクリア
# ランダムに問題を選んで出題します
for question, answer in questions_answers.items():
user_answers[question] = answer
st.write(f"問題: {question}")
def run_answer():
st.write("解答結果")
# 問題と正解を表示し、回答と比較して正解数をカウントします
for question, correct_answer in questions_answers.items():
st.write(f"問題: {question}-正解: {correct_answer}")
if __name__ == "__main__":
main()
テストを実行してみる
ターミナルで以下のコマンドを入力し、Streamlitアプリケーションを実行します。
streamlit run app.py
すると、ブラウザが開き、小学生向けの漢字テストが表示されます!「テストスタート」ボタンをクリックして問題を解いてみましょう。
このように、Streamlitを使ってインタラクティブなUIを構築し、ユーザーの入力を処理して正解・不正解を判定するロジックを組み込むことで、小学生でも楽しみながら漢字の練習ができるアプリが作成できます。
問題と答えのペアをquestions_answers辞書に追加すれば、自由に問題を増やせるので、レベルに合わせて難易度を調整することも可能です。楽しみながら着実に漢字力を伸ばせるでしょう。
Webアプリをもっと作りたい方へ
手軽にWebアプリを使ってもっとビジネスで成果を出したい方にはオンラインスクールがお勧めです。
ただし、ライフスタイルのバランスや家族関係、自己実現のための時間の問題でなかなか踏み出せないのビジネスマンが多いと思います。
そこでお勧めなのは、勉強したい領域のみを自分で選んで、そこだけに特化して短時間で学べる「PyQ」オンラインスクールです。
- 7days Python チャレンジ:7日間の無料体験でプログラミングの基礎を学びましょう
- Webアプリ・API:PythonによるWeb開発を学習するコース
今回であれば7days Python チャレンジ(17時間)とWebアプリ・API(65時間)を受講すれば習得できるはずです。
月額制なので忙しくなれば途中退会も可能ですので、リスクは低いとおもいます。