大学生が1人で塾の出欠管理システムを開発した話。
はじめに
はじめまして、クワイです。
現在大学4年生で、来年からITベンダに入社予定です。
先日、内定者懇親会に参加したところ、同期が結構な開発経験を積んでいる猛者ばかりだということに気がつきました。入社後、同期のみんなに置いて行かれたくないので、何か自分も成果物を作ろうということで、厚かましくもアルバイト先の塾長に出欠管理システムの導入をプレゼンをしたところ、意外にもすんなりOKが出ました。この記事では初めての大規模(?)開発の苦難について語らせていただきたいと思います。大学生のみんなのモチベ向上に繋がれば幸いです。
開発のきっかけ
興味がない人は飛ばしちゃって下さい。
出欠管理システム導入の意義
「成果物を作りたい!」という私的な願望だけがきっかけというわけではありません。出欠管理システムは塾側にもメリットがあります。導入することで各生徒の登下校時間を管理することができ、そして登下校時間は生徒指導のための重要な材料となると考えたのです。
例えば、登下校時間をスタッフ側が管理できていない場合、以下のような事態が起きます。
~面談にて(bad ver)~
スタッフ「A君、今週はしっかり勉強できたかな?」
A君「はい!ばっちりです!」←実際は1日2時間もしていない。
スタッフ「それはいいことだ!来週も頑張ろう!」
こんな面談を毎週繰り返していてもA君の成績は上がらないでしょう。こんな薄い面談のために保護者様は入塾させたわけではありません。多額のお月謝をいただいている分、スタッフはそれ相応の指導を行う責任があります。そこで登下校時間を管理できるようになれば...
~面談にて(good ver)~
スタッフ「A君、今週はしっかり勉強できたかな?」
A君「はい!ばっちりです!」←実際は1日2時間もしていない。
スタッフ「けど、記録上今週は毎日2時間も塾に在校していないことになってるよ。勉強習慣を見直す必要があるんじゃないかな?」
...以下生徒指導が続く
質の高い生徒指導に繋げられそうですね。実際問題、嘘をつく生徒はたくさんいます。そんな生徒を野放しにしないためにも、登下校時間を管理することは大切なのです(他にもたくさんの恩恵がありました)。
ここまで、出欠管理システムを導入することの意義について簡単に説明してきましたが、実は私が開発する前から月額制の出欠管理アプリを導入していたのです。 しかしそのアプリにはさまざまな課題がありました。
課題
- 期間を指定して、登下校時間を一覧化できない。
- UI的にも使い勝手が悪くてストレス。
- いちいちログインを求められることが面倒なため、スタッフがそもそもログインしない。
以上の課題と当塾がほとんどの業務をスプレッドシートにて行っていたことを踏まえて、私は既存の出欠管理アプリから登下校時間を抽出し、スプレッドシートに書き起こすシステムの開発を決めました。
システム概要
システム概要は至ってシンプルです。
ただ、このシステムを実現するためには幾つもの困難がありました。
開発における困難
たくさんありましたが、ここでは2つ紹介させて下さい。
困難1:思ったよりも複雑だった
色々なケースを考える必要があったのです。既存アプリから登下校時間を抽出して、それを書き起こすだけなら簡単です。僕も最初はそれだけで済むと軽い気持ちでいました。しかし実際には、新規入塾生徒の追加・退塾生徒の削除など様々なケースが考えられ、それらにも対応できるプログラムを書く必要がありました。塾長にはドヤ顔で「まあ3日もあれば終わりますね」って話していたのにも関わらず、いざ開発を進めてみると絶対3日で終わるようなモノではなかったです。ここがマジでしんどかった😭
困難2:定期実行どうする問題
必要な要素を抽出して、書き起こすという動作を完全に自動化しようと思えば、何かのマシンに定期実行させる必要がありました。ここも開発着手前は深く考えていませんでした。google colaboratoryで定期実行あるでしょ?みたいな感じで軽く考えていました。が、実際はgoogle colaboratoryでは定期実行は有料オプションであり、この案はあっけなく却下。次の案は「GCPの無料枠で定期実行させる」でしたが、これ以上開発に時間をかけられない状況だったため学習コスト的(GCPについて無知だったため)に却下。最終的にとった手段は「塾内にあるPCで標準装備のタスクスケジューラーを利用して定期実行させる。」でした。紆余曲折ありましたが、なんとか実装でき、1週間ほどで出欠管理システムを完成させることができました。
開発を終えて学んだこと
1週間、大学での研究をそっちのけで、死に物狂いで取り組んだ今回の開発を通じて学んだことはただ1つ...ある程度開発規模を見積もってから着手せよ!
カッコつけて塾長に「まあ3日もあれば終わりますね」って話していたために、この一件でいただけた給与は8,000円ほど...。泣けるぜ。開発工数等をしっかり見積もってから、プレゼンしていればもう少し貰えたのかも...。「まあ、お金のためにやったわけじゃないからね!」と自分に言い聞かせ、この学びを今後の開発に繋げていきたいと思います。
嬉しいお話しが!
開発を終え、システムは現在も安定に稼働しております。先日、そんなシステムを見た当塾の重役のお偉いさんたちが興味を持って下さり、なんと全校舎に展開する話が出てきました!まだ確定はしていませんが、とても嬉しいお話です😀
以上、大学生が1人で塾の出欠管理システムを開発した話でした。世の大学生の何かのモチベ向上に繋がれば幸いです。それでは!
Discussion