19
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

watnowAdvent Calendar 2022

Day 16

学生証を用いた入退出管理システムを作成した話

Last updated at Posted at 2022-12-16

はじめに

私は情報系の学部に通う大学2回生で、学園祭実行委員会に所属して模擬店の管理・運営支援を行っています。今回、私は効率的な入室管理を行うべくFelica(学生証)を用いた入退出管理システムを作成しました。

主に利用した技術

Apache POI

Apacheソフトウェア財団のプロジェクトで、WordやExcelといったMicrosoft Office形式のファイルを読み書きできる100% Javaライブラリとして提供
引用:https://ja.wikipedia.org/wiki/Apache_POI

https://poi.apache.org/

学籍番号とそれに結びつけるデータを保存している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ファイルを準備し、アプリの開始画面のそのファイルを指定します。

12121212.png

そして開始のボタンを押すと下のような画面が出てきます。

qiita7.png

ここで大学の学生証をカードリーダー(Felica Pasori ↓ )にかざすことにより、学生証のデータから学籍番号を抽出し、その抽出した学籍番号からその人のデータを参照して、出席時間を記録し、体温記録表の提出の有無を確認していきます。

pasori
非接触ICカードリーダー/ライター PaSoRi(パソリ)

学生証には下のようなデータが含まれてます。
felica.png

※一部モザイク処理を施しています
そのうち、ある番地のデータ(赤枠部)には下のようにShift-JISで「氏名」「学籍番号」が登録されています。
qiita6.png

詳しくは黄枠の部分に学籍番号、青枠の部分に名前が含まれています
qiita5.png
※個人情報は伏せています
「32 36 30 30 32 31 30 32 31 30 31 」をShift-JISでデコードすると、「26002102101」となり、「○○ ○○ ○○ ○○ 20 CA D4 C4 」をデコードすると、「○○○○ ハヤト」となり、個人情報が含まれていることが分かります。
ここから得られた学籍番号を事前に登録した責任者のデータを照合して、確認していきます。

そして、体温記録表の提出の有無によって表示が異なります。

qiita10.png

qiita11.png

また、1人1人のデータ読み取るたびにこんなかんじで学生証の名前のデータと時間を記録していきます。

BE2116E3-947C-4B93-9F06-011E8EDC2EED.png

まとめ

今回は簡単に私が作成した入退出管理システムの紹介をしていきました。まだまだ課題点も多いので、改善を図っていきたいです。また、これだけではなく、他にも体温記録表を自動で確認するためのプログラムやGASでお問い合わせフォームの自動返信などを実装したりしているので、追々紹介していきます。
19
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?