概要
- 目的:教育現場向けに「誰でも使える」機械学習モデルを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倍向上
作ったアプリ
使用技術
フロントエンド: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最適化
- チーム開発や多種職種開発体制で、グローバル環境も見据えた運用を設計
最後まで読んでいただき、ありがとうございました!

