0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

教育現場の機械学習モデルをWebアプリ化してみた【Streamlit × Cloud Run】

0
Last updated at Posted at 2025-10-24

概要

  • 目的:教育現場向けに「誰でも使える」機械学習モデルをWebアプリ化し、現場導入の障壁を下げる
  • 技術:LightGBM・Streamlit・Cloud Runを用いて、モデル構築→デプロイ→監視までの一貫開発
  • 成果仮説:教員・保護者が数分で生徒の学習支援に活用できる環境を構築

はじめに

教師として働きながら、データ分析を学んでいます。
実務では生徒の成績データを分析し、
機械学習モデルで課題解決の施策を考えています。
ただ、モデルは作ったものの、Jupyter Notebook止まりでした。
「このモデルをもっと使いやすくできないか?」
「Webアプリにすれば、他の教員も簡単に使えるのでは?」
そう考えて、StreamlitとCloud Runで成績予測Webアプリを作りました。
予測モデルは、LinearRegressionとLightGBMを選択できます。
スコア要因については、SHAP値を表示して可視化しています。
さらに、Cloud SchedulerでR^2監視を自動化し、運用しています。
本記事では、なぜアプリ化が必要だと思ったか、そして実際にどう作ったかを共有します。

Github:コード

この記事で分かること

  • 教育現場での機械学習の課題
  • Jupyter NotebookからWebアプリへの移行理由
  • アプリ化による価値

困っていたこと

モデルは作ったものの、Jupyter Notebookで動かすだけでした。
他の教員がモデルを使えない(Pythonが分からない)
毎回コードを実行する必要がある
生徒・保護者に見せられる形式ではない
リアルタイムでの予測ができない

理想の姿

誰でもブラウザでアクセスできる
データを入力するだけで予測結果が出る
教員会議や保護者面談で使える
生徒自身も自分の予測を確認できる

→ Webアプリ化が必要だと考えました。

アプリ化のメリット

1. 保護者面談での利用

保護者:「うちの子、志望校に合格できますか?」

教員:「こちらのアプリで予測してみましょう。
[データ入力]
現在の予測では合格確率70%です。
reading scoreを10点上げれば85%になります。」

保護者:「具体的で分かりやすいですね」

2. 進路指導での利用

生徒:「科目選択で迷っています」

教員:「アプリで試してみよう。
理系選択の場合...合格確率75%
文系選択の場合...合格確率82%
あなたには文系が向いているかもしれませんね」

3. 教員会議での利用

管理職:「今年の補習対象者は?」

担当教員:「アプリで全生徒を予測したところ、
不合格リスク上位20%は30名です。
この生徒たちに重点的に補習を実施します」

このアプリは意思決定の補助ツールであり、最終判断は人間が行います。

  • モデルの予測は100%正確ではない
  • 生徒の状況は数値だけでは測れない
  • あくまで参考情報として活用

教育現場では、データと人間の判断を組み合わせることが重要です。

ROI(投資対効果)

開発コスト:約20時間
運用コスト:ほぼ0円(無料枠)
効果:作業時間80%削減、意思決定速度5倍向上

作ったアプリ

アプリのトップ画面
image.png

  • 生徒情報を選択あるいはスライダーするだけで予測できる予測結果
  • 視覚的に分かりやすい結果表示
    image.png

使用技術

フロントエンド:Streamlit
機械学習:scikit-learn(LinearRegression)
データ処理:pandas, numpy
インフラ:Google Cloud Run, Docker
データソース:BigQuery
言語:Python

技術選定

なぜStreamlitを選んだか

  • 教育現場では「速さ」と「シンプルさ」が重要
  • 1週間で作りたかった
  • PythonだけでUIまで作れる

なぜCloud Runを選んだか

  • 将来的に多人数アクセスに耐えたい
  • インフラ管理に時間を使いたくない
  • GCPの経験が増やしたかった

データと手法

データ
実務データは個人情報保護のため使えないので、公開データで動作確認:
Kaggle:Students Performance in Exams

生徒1000名の成績データ
reading, writing, math のスコア
test preparation講座の有無など

モデル
LinearRegressionを選択:シンプルで解釈しやすい
LightGBM:精度の高い予測が可能

LinearRegressionについて:

教育現場では「説明できること」が最重要
「なぜこの予測なのか」を保護者に説明できる
複雑なモデルは不要と今回は判断(精度は十分)

性能

train_R2: 0.8812
test_R2: 0.8553

工夫した点

1.教育現場では「見やすさ」が最重要。

数値だけでなく、アイコンや色で直感的に分かるように。

2. エラー対応

selectboxやsliderのみで構成
→エラーが起きにくい

3. コスト最適化

最小インスタンス数を0に設定
→アクセスがないときは課金ゼロ。教育現場では予算が限られているため重要。

アプリ化による価値

Before(Jupyter Notebook)

[教員がPythonを実行]

[結果を見る]

[Excelにコピペ]

[教員・保護者に説明]

所要時間:10分/件
対象者:教員1名のみ

After(Webアプリ)

[ブラウザでアクセス]

[データ入力]

[即座に結果表示]

所要時間:2分/件
対象者:誰でも
効果:
作業時間:80%削減
利用可能者:教員全員 + 生徒・保護者
意思決定の速度:5倍向上

学んだこと

1. 「使われるモデル」を作ることの重要性

モデルの精度を上げることも大事ですが、実際に使われることの方がもっと大事だと実感しました。
Jupyter Notebookに眠っているモデルよりも、精度が少し低くても「毎日使われるアプリ」の方が価値があります。

2. 技術選択は「目的」から逆算

「最新技術を使いたい」ではなく、「現場のニーズは何か」から考えることが重要でした。

教育現場では:
複雑なUIは不要
速く動くことが重要
誰でも使えることが最優先
→ Streamlitが最適解でした。(まだ勉強したい領域)

3. クラウドは思ったより簡単

「GCPは難しそう」と思っていましたが、Cloud Runは実装しやすさを実感しました。
gcloud run deploy一発でデプロイ完了。サーバー管理不要。

今後やりたいこと

因果推論(傾向スコア/DID)で講座効果を厳密に検証
ダッシュボード機能(全生徒の一覧表示)
A/Bテスト機能
認証機能(学校専用)
BigQueryとのリアルタイム連携

まとめ

教育現場の機械学習モデルをWebアプリ化することで、以下を実現できました:

  • 誰でも使える形に(Python不要)
  • リアルタイムで予測可能
  • 作業時間80%削減
  • クラウドの経験

機械学習は作って終わりではなく、使われて初めて価値が出ることを改めて実感しました。
同じように「モデルは作ったけど使われていない」と感じている方の参考になれば嬉しいです。

今後の展開

  • 教育プラットフォーム向けに本アプリをスケール化し、教員・生徒・保護者全員が利用できるサービスに昇華
  • 多職種(教育設計、デザイナー、エンジニア)との協働による機能改善やUX最適化
  • チーム開発や多種職種開発体制で、グローバル環境も見据えた運用を設計

最後まで読んでいただき、ありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?