全国の学校公示データ検索・比較サービス
(woorischool.com)こんにちは。学校情報を探すときに複数のサイトやExcelファイルを行き来しなければならない不便さを減らしたくて、うちの学校どう? を作りました。
開発の全工程はバイブコーディング方式で進めました。AIに一度コードを生成してもらって終わったプロジェクトではなく、要件を文書として分割し、実装結果を実際のデータと突き合わせながらエラーを修正する工程を繰り返しました。特に学校データは、画面がそれらしく見えることよりも、別の学校に誤って結び付かないことのほうが重要だと判断し、マッピングと検証に最も多くの時間を使いました。
サービスでは、学校名検索、同じ学校種別どうしの比較、地域別の公示データ比較、教科別の学業達成資料や学校暴力対策審議委員会の審議結果などを確認できます。元データで確認できる数値と独自に計算した指標は区別して表示しています。
データ構成
- 学校基本情報
- 学級数、生徒数
- 教員数
- 生徒移動情報(転入、転出)
- 安全教育の履修時間
- 学校暴力対策審議委員会の結果
- 教科別学業達成(平均点のみ反映)
技術構成
- Next.js App Router, TypeScript, Tailwind CSS
- Firebase FirestoreとFirebase Admin SDK
- VercelへのデプロイとGitHub Actionsの自動化
- ブラウザ検索用の静的
search-index.json - 学校詳細・ランキング・比較ページ用の静的JSON
- NEIS・学校アラートデータ収集および
row_hashベースの差分反映 - 学校アラートのXLSファイルの表構造を判別する手動公示資料取り込みツール
作りながら予想以上に難しかった部分
最も厄介だったのは学校名のマッチングでした。同じ名前の学校、名前が変更された学校、閉校した学校、学校種別だけが異なる学校が混在しており、学校名だけで結び付けると誤マッピングが発生する可能性がありました。学校コードと教育庁情報、地域、学校種別を優先して使い、自動で確定できない項目は別途検証対象として残す方式に変えました。
学業達成と学校暴力公示のXLSも、ファイルごとに表の列位置が完全に同じではありませんでした。特定の列番号を固定して読み込むと、正常な数値のように見える誤った値が入る可能性があったため、表題とヘッダーを確認して形式を判別し、範囲外の値は反映しないよう検証段階を入れました.
まだコメントはありません。