memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

欠席者管理用Webシステム(未完)

現在、学科教員間でメーリングリストを介して欠席者の連絡とフォローをしています。科目担当者が講義毎に記録する出席簿から欠席者を抜き出し全員(主は担任)に報告します。特に注目しているのは連続欠席者です。休みが少し続くということは何か問題があるはずなので早期に確認して必要であれば対処します。*1

もちろん、本学部もサイボウズをはじめ様々な情報システムを運用していますが、各教員の出席簿の管理(MS-Excel)とのミスマッチがあり普及するのは難しいのが現状です。何がミスマッチか?簡単な話です。Webインタフェースで代表的なテキストフィールドがありますが、大抵の教務システムでは1つずつここに情報を入力します。これはこれでいいのですが。。。やはり面倒。

何が面倒かわかりにくいですね。少し具体的な作業を書いてみます。

講義が終了して研究室に戻ってから出席表のMS-Excelを開きデータを入力します*2。そこからMS-Excelで入力情報をフィルタリングして欠席者を抽出します。このあたりは表計算ソフトが適しています*3。そのデータをそのまま貼付けてボタンを押して登録すると教員に通知できるシステムがあれば便利はなずです。今はこういうシステムがないので(セキュリティ上問題があると知りつつも対策を優先して)メーリングリストを代用しているのです。

前置きがいつもながら長くなりましたが、何とかしたい。。。とは誰しも思ってきました。セキュリティもそうですしデータベース化されていないので長期間の蓄積・整理が大変でした。で、ちょうど個人的に時間が空いたのでRails(3.0)の勉強を兼ねて、出席簿ならぬ欠席簿をWebで登録できるシステムを作り始めたという話です。

といっても私はRails初心者。数日前から少し本腰を入れて勉強し始めた状態です。勉強自体は出始めの頃からやっているのですが入門書をパラパラやっては頓挫していました。*4

書籍やWebをもとに試行錯誤してみましたが入力しても動かないことが多く、その多くがバージョンの違いによるものでした。特にVersion1xと2xの違いは大きく、ノウハウを提供してくれているエントリーにはそれらが混在する状況(かつバージョンが明記されていないものが多い)だったため、勉強はなかなか大変な作業でした。とりあえず最終的には最新のバージョン3で作ることに決め、慣れないフレームワークで四苦八苦しましたが、何とか1週間で基本機能が動くようになってきました。とりあえず基本認証もつけました。あとは科目や学生や期間で欠席者を検索する機能をつければ、だいたい使えるシステムになりそうです。来週一杯で何とか完成してとりあえずRailsのお勉強はひとまず置いておきたいと思います。

ちなみに以下が開発中の登録画面。scaffoldで生成したそのものです(苦笑)。ただtextareaで複数人登録できるところがミソです(そもそもそんなに欠席が出てはまずいんですがね。。。)

で、以下が一覧画面。データが大量になるとページロードに時間がかかるためwill_paginateでページ切り替えるができるようにしています。といってもプラグイン(人様の力を借りているだけ)ですけどね。

とりあえず個人的に作っているので。。。ある程度、裏で運用して使えそうになったら公開しようと思います。他の学科でも使ってもらえたらいいですね。(こんなことやっているなら研究しろ!と言われそうですが。。。)

ちなみに、Railsを勉強するときに役立ったリソースは以下です。

IPAがWebで公開している教材(PDF)がわかりやすかったです。私は。ただしRailsバージョンは2.3.2です。とりあえず、この教材で流れ(特にControllerとViewの連携とActiveRecordの基礎)が理解できました。

それからあちこちに寄り道したのですが、結果的にたどり着いたのが、Rails3.0のGuideです。とりあえず「Getting Started with Rails」だけで私の用途には十分でした。足りないところは適宜、他の章を見て補いました。

あと、手元にあったRailsレシピブックという本ですね。新しい言語を学ぶときには逆引き辞典があるといいです。ただ、これもバージョン3ではないので要注意です。

Railsレシピブック 183の技

Railsレシピブック 183の技

*1:単位も卒業も生活も自己責任であった我々が大学生の頃には到底考えられなかったことですが。。。

*2:Webに直接入力するシステムもありますが1つずつ入力するためとても面倒!!!

*3:Ajaxを多用したGoogle Docsのようなシステムがあれば代用できるはずですが

*4:Javaのときもそうでしたね。。。気づくのは早いのですが実際に手を出すのはかなり遅れます。。。