はじめに
私は情報系の学部に通う大学2回生で、学園祭実行委員会に所属して模擬店の管理・運営支援を行っています。今回、私は効率的な入室管理を行うべくFelica(学生証)を用いた入退出管理システムを作成しました。
主に利用した技術
Apache POI
Apacheソフトウェア財団のプロジェクトで、WordやExcelといったMicrosoft Office形式のファイルを読み書きできる100% Javaライブラリとして提供
引用:https://ja.wikipedia.org/wiki/Apache_POI
学籍番号とそれに結びつけるデータを保存しているExcelファイルを読み取るために使用しています。
felicalib
USB接続の FeliCa(フェリカ) リーダ PaSoRi(パソリ) を使って、FeliCa にアクセスするためのライブラリです。Suica, Edy, nanaco などの電子マネーへのアクセスなどに使用できます。
引用:http://felicalib.tmurakam.org/
→http://felicalib.tmurakam.org/
学生証から学籍番号を取得するために使用しています。
Jaxa Swing
Swingは、プログラミング言語 Java のGUIツールキットである。Oracle社のJava Foundation Classesの一部であり、同じくJavaの GUI ツールキットである AWT を拡張したもの。Javaプログラムにグラフィカルユーザインタフェース(GUI)を提供するAPIである。
引用:https://ja.wikipedia.org/wiki/Swing
GUIの実装に使用
JLayer
JLayer is a library that decodes/plays/converts MPEG 1/2/2.5 Layer 1/2/3
(i.e. MP3) in real time for the JAVA(tm) platform. This is a non-commercial project
and anyone can add his contribution. JLayer is licensed under LGPL (see LICENSE.txt)
引用:https://github.com/wkpark/JLayer
→https://github.com/wkpark/JLayer
mp3ファイルを再生するために利用
きっかけ
学園祭実行委員会では模擬店の責任者向けにガイダンスを開催していました。総出席人数は500人近く、その出席全員の事前の体温提出の確認と入室の記録を入室時にスムーズに行う必要がありました。しかし、その数は手作業で確認するにはあまりにも膨大であったため、「入退出管理システム」を作成しました。
また、そもそもFelicaとは、Sonyによって開発された技術で、Sonyの公式HPには以下のように記載されています。
駅の改札口で交通系ICカードをタッチしたり、コンビニエンスストアで電子マネーを利用したり。いまや、あちこちで見られる“かざす便利”をつくりだしたのが、ソニーの非接触ICカード技術方式「FeliCa」です。非接触だから、かざすだけで高速データ送受信。さらに、データは何度も書き換えられ、カード本体を再利用できるエコロジーなシステム。厳重なセキュリティーも実現し、公共交通機関の乗車券システムから、電子マネー、マンションの鍵まで幅広い用途で使われています。これからも、Felicity(至福)に由来する名前どおり、「FeliCa」は世の中をもっと便利に楽しく変えていきます
(https://www.sony.co.jp/Products/felica/about/より引用)
つまり、Felicaはその技術に対応したカードをかざすだけで、データを参照することができる技術です!
自分の所属する大学の学生証がFelicaの技術によって作られていることは事前に知っていたため、スムーズに人を管理するためにはどうしたら良いかを考えた際にFelicaの採用を決めました。
概要
事前に下のようなExcelファイルを準備し、アプリの開始画面のそのファイルを指定します。
そして開始のボタンを押すと下のような画面が出てきます。
ここで大学の学生証をカードリーダー(Felica Pasori ↓ )にかざすことにより、学生証のデータから学籍番号を抽出し、その抽出した学籍番号からその人のデータを参照して、出席時間を記録し、体温記録表の提出の有無を確認していきます。
非接触ICカードリーダー/ライター PaSoRi(パソリ)
※一部モザイク処理を施しています
そのうち、ある番地のデータ(赤枠部)には下のようにShift-JISで「氏名」「学籍番号」が登録されています。
詳しくは黄枠の部分に学籍番号、青枠の部分に名前が含まれています
※個人情報は伏せています
「32 36 30 30 32 31 30 32 31 30 31 」をShift-JISでデコードすると、「26002102101」となり、「○○ ○○ ○○ ○○ 20 CA D4 C4 」をデコードすると、「○○○○ ハヤト」となり、個人情報が含まれていることが分かります。
ここから得られた学籍番号を事前に登録した責任者のデータを照合して、確認していきます。
そして、体温記録表の提出の有無によって表示が異なります。
また、1人1人のデータ読み取るたびにこんなかんじで学生証の名前のデータと時間を記録していきます。