GASとKivyで教育現場向けQR出席管理システムを作り、運用しながら拡張した話
教育現場の構造的な非効率
教育現場には、責任感の強い人たちが、非効率な事務作業を善意で支えている構造があります。日々、子どもや保護者への対応、同僚との連携、教材準備に追われる中で、事務作業の非効率に気づいていても、「どう自動化するか」より「どう手を早く動かすか」「どう隙間時間で終わらせるか」という方向に向かいがちです。
空欄の出席表に手書きで記録し、それを毎日Excelに入力し、さらに学校報告や請求資料に転記する。責任を分散させようとしても、実際にはいつも同じ人がやることになる。毎月のように漏れが出て、集計はコピー&ペースト頼み。こうした運用は、まじめな人が頑張ることで維持されています。
しかし、そのやり方ではいつまでたっても楽になりません。私は、そうした構造そのものを変えたいと思っています。
原体験 — フリースクールで見た現実
2022年4月、あるフリースクールに入職しました。
現場の人たちは、決して手を抜いていたわけではありません。むしろ、子どもや保護者への対応を最優先にしながら、限られた時間の中で必要な事務を懸命に回していました。私自身も、その構造の中にいました。目の前の業務を回すことに精一杯で、「どう終わらせるか」ばかり考えていた側でもありました。
ただ、その運用は手作業に強く依存していました。不登校の生徒がいつ、誰が、どのタイミングで来るかは不確定な要素が多く、それでも月末には、生徒一人ひとりの出席記録を所属校へ送る必要があります。すべての出席情報が揃うのを待ってから一気に処理するのが最も効率的ですが、実際にはそうなりませんでした。月末の最後の平日、できるだけ早く学校へ届けるために、開校時間中に2、3回に分けて郵便局に足を運ぶ。手書きの記録をExcelに入力し、個人ごとに転記し、報告書にまとめ、封筒に入れて送る。
この作業を担うのは、いつも同じ人でした。まじめな人ほど手作業を引き受けてしまう、運用設計そのものに問題がありました。
前任者から引き継いだとき、QRコードをスキャンして、生徒自身が出席を登録する仕組みを作れば、手作業の大半はなくせると考えました。そう提案しました。
却下されました。
当時の私は、本格的なアプリケーション開発の経験がなく、アイディアはあっても自分で実装する力がありませんでした。提案は形にならないまま、そこで止まりました。
その後、ChatGPTを使いながらVBAで業務の自動化を少しずつ始めました。出席データの転記や報告書の作成を半自動化し、仕組みで改善するという方向に初めて手応えを持てました。
Onedropでの実装 — アイディアが動き出す
2025年4月、広島大学の特別支援教育特別専攻科に入学しました。特別支援教育を学びながら、同時にある個別指導塾の開業準備の相談にも乗っていました。代表の理念に共感し、立ち上げに関わる中で、出席管理の仕組みを組み込むことになりました。3年前に却下されたアイディアを、今度は自分の手で形にする機会が来たのです。
本格的なアプリケーション開発は未経験からのスタートでした。最初はChatGPTと対話しながら、Google Apps Scriptで生徒登録の自動化を作りました。フォームに生徒情報を入力すると、学籍番号が自動で割り振られ、QRコードが発行されます。次に、Kivyを使ってPythonのデスクトップアプリに取り組みました。QRコードを読み取って入退室を記録し、月次レポートを自動生成する仕組みです。ただ、基本的な画面遷移やデータの受け渡しを組むだけでも、当初はかなり苦労しました。そうした中でClaude Codeが登場しました。
ここで、作業の進み方は大きく変わりました。ターミナルでAIと対話しながら、コードベース全体を読み書きできます。以後、実装のスピードは一気に上がりました。
7月の開業に向けて、立ち上げメンバーにアプリを確認してもらいながら操作感を磨いていきました。入室時に3つの質問に答える仕組み――今日の気分、睡眠の満足度、来所の目的――は代表のアイディアでした。私の役割は、そのアイディアを実際に使える形へ落とし込むことでした。気分を天気アイコンで選ぶUI、テキスト入力を排除したタッチ操作には、特別支援教育で学んだ視覚支援の考え方を反映しています。パッと見で何をすべきかが分かり、誰でも使えることを優先しました。アプリ内で用いる画像はChatGPTの画像生成機能も活用し、全体のトーンをやわらかく整えながら、利用者にも従業員にも分かりやすいUXを目指しました。
このUIは現在、発達に課題のある小学生にとっても、一目で理解しやすい仕組みとして機能しています。実際、見学時に一度触れただけで操作の流れをつかんだ子どももいました。誰もが使えるデザインを目指した結果が、現場で少しずつ裏付けられています。
現場に応じて育つシステム
このシステムは、最初から完成形を目指して設計したものではありません。生徒登録はGAS、入退室記録やレポート作成はKivyアプリという形でスタートし、その後は現場で使いながら、課題が見えるたびに機能を増やしていきました。
開業後、利用者が増えるにつれ、自習室で働くアルバイトスタッフが全体の状況を把握しづらくなっていきました。誰が入室中で、誰が退室済みなのか。出席アプリにはデータが蓄積されていましたが、それをスタッフがリアルタイムで一覧できる手段がありませんでした。
転機は、10月に3週間の教育実習で特別支援学校に行ったことでした。学校現場で、ポータルサイトが情報共有の基盤として使われているのを見て、同じ仕組みを自分の現場にも持ち込めると考えました。実習から戻った後、2〜5日ほどでポータルサイトを構築しました。生徒の在室状況をリアルタイムで表示し、スタッフが一目で全体を把握できるようにしました。
12月には、小学生向けのプログラムが新たに始まりました。それに合わせて、Google Apps Scriptを小学生用にも調整し、出席管理アプリでは小学生と中学生以上のデータを分けて登録するように機能を改修しました。
どの改修も、最初から計画していたものではありません。現場で課題が生まれ、それに応じて必要な機能を足していきました。最初から完璧な設計を目指すより、使いながら育てていく。この進め方の方が、変化が多く、運用しながら学ぶことの多い教育現場には合っていました。
これからのこと
開業から半年が経ち、出席管理アプリは現場で継続的に使われる仕組みとして定着しつつあります。蓄積された6か月分のデータを分析し、利用状況の振り返りにも活用しました。単なる打刻ツールではなく、運用データを蓄積し、振り返りに使える仕組みとして機能し始めています。
開発に対して対価をいただく機会もありました。自分が作ったものに値段がついたことは、趣味の開発では得られない経験でした。
今回の開発を通して強く感じたのは、AIがあっても「何を作るか」「どう使える形にするか」を決めるのは人間だということです。AIは実装の速度を大きく引き上げましたが、課題を見つけ、仕様を考え、現場に合う形に整える役割までは代替しませんでした。
このシステムは、現時点では一つの拠点で使われている内部ツールです。しかし、教育現場の出席管理という課題は、この拠点に限った話ではありません。手書き、Excel転記、コピー&ペーストに頼る運用は、多くの教育事業所で今も続いています。
見せ方を整え、導入しやすい形にできれば、この仕組みは他の現場にも届けられるはずです。3年前に却下されたアイディアは、ようやく動き出したところです。