筑波大学附属坂戸高等学校 RFID 登校連絡システムの構築
加島 倫a
筑波大学 東京キャンパス事務部 学校支援課 附属坂戸高等学校係〒350-0214 埼玉県坂戸市千代田 1-24-1

概要
本システムは、RFID カードを用いて学生の登校状況を記録し、Web 経由の保護者への昇降口通過通知、保護者から教員へのメッセージ通知を行うシステムである。
既存学務システムと連携し、ホームルーム担任出欠席入力の補助、登校・メッセージ状況の表示、科目担当出欠席入力補助が可能である。
キーワード： RFID 登校連絡 安全管理 学生

１．開発経緯学校教務においては、朝の時点で学生の登校、出欠連絡の状況が収集されていなければならない。学生の当日の出欠情報は、担任が朝のホームルームで点呼を取り、電話連絡の情報とまとめて職員室の掲示板などに掲示する方法が一般的である。
本校では、一般的な朝のホームルームに学生を招集せず、直接１限目の授業を行うような日課となっている。そのため、１限目の科目担当教員の出欠情報で学生が登校しているかどうかの出欠情報として扱い、病欠などの保護者からの連絡は教務当番が早朝に出勤し電話で受け付け、所属の担任へ連絡を行っていた。科目担当の出欠情報は出か欠の情報のみであり、詳細情報は収集されず、どのような理由で欠席したかの情報を知るためには、担任と教務当番、科目担当に連絡して情報を統合して判断する必要があった。
学生登校時の RFID カードチェック、インターネットによる保護者連絡機能をシステム化することにより、教務当番の労力軽減および出欠情報の統合作業のスマート化を狙い、本システムを開発することとなった。

２．システム構成
本システムは、既存の学務情報システム[1]の追加機能であり、学務データーベースと連動して動作する。

2.1 ハードウェア
・メインサーバー
本体
Dell PowerEdge R640
プロセッサ Xeon Silver 4114 x2
ストレージ HDD 6TB RAID5 (2TB 2.5” SAS x4)
メモリー64GB
OSWindows Server 2016 Standard

akashima.hitoshi.fp@un.tsukuba.ac.jp

・外部公開 Web サーバー
本体
Dell PowerEdge R230
プロセッサ Xeon E3-1220 v5
ストレージ HDD 2TB RAID1 (2TB 2.5” SATA x2)
メモリー40GB
OS
Windows Server 2016 Standard
・RFID リーダー端末
本体
Raspberry Pi 3
プロセッサ BCM2837 1.2GHz SoC
ストレージ microSD 16GB
メモリー1GBOS
Raspberry Pi OS 10

2.2 ソフトウェア
・メインサーバーDBMS
SQL Server 2017 Standard
Web システム IIS 10.0
開発言語
Visual Studio 2019 .net ASP, C#・外部公開 Web サーバーWeb システム IIS 10.0
開発言語
Visual Studio 2019 .net ASP, C#・RFID リーダー端末
開発言語
Python３．情報フロー
各部情報フローについて説明する。(図 1)

3.1 入力情報
・家庭連絡
保護者連絡(Web) → TBL-登校連絡(SQL)
Web より入力された家庭連絡文が学籍番号、入力時刻と共にテーブルに格納される。

・通過情報
RFID 端末 → TBL-RFID 履歴(SQL)
RFID 端末の作動時に、カード IDm (ManufactureID = 固有番号)、打刻時刻、端末番号が格納される。

・ホームルーム出欠
HR 出欠(Web) → TBL-HR 出欠(SQL)
ホームルーム担任による出欠情報。学籍番号、各時限出欠、欠席、忌引、出停マークを格納。

・ホームルーム出欠席入力画面
TBL-登校連絡 TBL-RFID 履歴
TBL-科目出欠 TBL-HR 出欠
TBL-保健室(SQL)→ HR 出欠(Web)・科目出欠
科目出欠(Web) → TBL-科目出欠(SQL)

HR 出欠、遅刻マーク、科目出欠、保健室、通過時刻、保護者連絡フラグ、学生のほぼ全ての情報を集計。

科目担当者による科目出欠情報。学籍番号、科目コード、欠席、遅刻マークを格納。

・保健室利用情報
保健室利用(Web) → TBL-保健室(SQL)

・科目出欠入力画面
TBL-登校連絡 TBL-RFID 履歴
TBL-科目出欠(SQL)→科目出欠(Web)
科目出欠、通過時刻、保護者連絡を集計。

養護教員による利用情報。学籍番号、入室時限、退室時限、理由事項を格納。
・集計帳票
TBL-HR 出欠 → HR 出欠レポート(SSRS*)
TBL-科目出欠 → 科目出欠レポート
TBL-RFID 履歴 → 登校状況レポート

3.2 出力情報・保護者連絡 Web ページ
TBL - RFID 履歴(SQL) → 保護者連絡(Web)TBL - 登校連絡
学生の登校情報、通過時刻、保護者連絡文を集計。

SQL Server の帳票機能 Web サービス(SSRS*)による、各種帳票レポート出力。
*

SSRS: SQL Server Reporting Services

図 1. データーフロー図

４．データーベース構成
SQL Server 上で使用する主要テーブル構成について説明する。(図 2)

らのカード検出情報がレコード追加される。保存期間は卒業後 1 年である。

・生徒テーブル
学生個人情報、HR 所属クラス他を格納する。学籍番号と HR クラス、名前の照合に使用。年 1 回進級時更新され、保存期間は卒業後 20 年間である。

・科目出欠テーブル
科目担当教員が記録する科目授業の出欠情報。講座の科目コード、日付、時限、出欠、学籍番号、学生ごとの備考文他で構成される。時限ごとの記録であり、2 コマ(時限)の授業であれば、2 レコード追加される。保存期間は卒業後 3 年である。

・HR 出欠テーブル
学生 1 日ごとのホームルーム出欠情報。1 日あた
り 1 人で追加更新。保存期間は卒業後 3 年間である。

・出欠名簿テーブル
教員の担当授業ごとの学生名簿情報。教務手帳に相当するもので、名簿 ID と科目コード、名簿名称の対応表となる。逐次更新。

・RFID ゲートテーブル
RFID 読み取り機の機体番号と場所名称の対応情報。

・名簿所属テーブル
出欠名簿テーブルに格納した名簿情報に所属する学生の一覧情報。逐次更新。

・RFID タグテーブル
各学生の持つ RFID カードの IDm と学籍番号の対応情報。全学生分。カード更新時逐次更新。保存期間は卒業後 1 年である。

・保健入室テーブル
養護教員が入力する保健室利用情報。利用案件ごとで追加更新。保存期間は卒業後 1 年である。

・RFID 履歴テーブル
学生の RFID カードが検出された時刻と IDm、リーダー機体番号の履歴。すべての読み取り端末か・登校連絡テーブル
保護者からの連絡情報を格納。1 日あたり 1 保護者 1 報告で追加更新。保存期間は卒業後 1 年である。

図 2. データーベーステーブル構成

５．RFID リーダー端末
RFID リーダーは学生が所持する交通系 IC カードを読み取る装置であり、昇降口に 3 台、実習棟入口に 1 台、校内で合計 4 台設置している。(写真 1)

して、リーダーからの入力を SQL Server へ逐次送信するものである。
端末には画面表示の必要がないため、GUI 環境が除かれた Raspberry Pi OS Lite を使用し、Wi-Fi、Bluetooth の無線コンポーネントも使用しないため、/boot/config.txt を修正しシステムで無効設定としている。電源供給については、PoE スプリッタを使い、有線 LAN と共用し外部への接続線を１本とした。
・起動機序
工場出荷状態の Raspberry Pi は、電源投入後にログイン待ちの状態のままになるため、Python スク
リプトを自動起動するための開始コマンドを/etc/rc.local に記述する。
[/etc/rc.local]/usr/bin/python2 /root/PunchTimeClock.py \> /dev/console 2>&1 &写真 1. RFID 端末

5.1 本体構成
リーダー部の処理系はデスクトップ PC の規模が必要な演算処理をするほどのものではないため、コストの安い Linux シングルボード・コンピューター
Raspberry Pi を利用した構成とした。(写真 2)

写真 2. 端末の内部・ハードウェア
本体
RFID リーダー
音声出力
電源アダプタRaspberry Pi 3, 16GB microSD
Sony Pasori リーダー
アンプ付きスピーカー
PoE 受電・ソフトウェア
OS
開発言語

Raspberry Pi OS (debian Linux)
Python5.2 動作説明
Raspberry Pi の Linux システム上で RFID カードの読み取り処理を記述した Python スクリプトを実行[2]

https://github.com/nfcpy/nfcpy

・Python スクリプト
読み取りプログラムの記述には、各種応用例の豊富な Python を採用した。Python はインターネット上のパッケージソフトウェアを追加することにより、機能拡張が可能な処理系であり、本システムでは nfcpy[2 ] (RFID アクセス処理)、pyodbc[3 ] (SQLServer 連携) パッケージを利用している。
・読み込み処理
RFID カードのアクセスには nfcpy パッケージのnfc.clf (Contactless Frontend = 非接触フロントエンド)クラスを使用する。
読み込み処理の場面(sense メソッド)では、NFCA/B 、 NFC-F な ど の 対 象 の カ ー ド 規 格(RemoteTarget)の指定、さらに NFC-F(Felica)においては交通系、職員証などカードの事業者割り当て(System Code)をあらかじめ指定しなければならない場合があり、例えば Felica と NFC Type-A に対応した混在検出では、複数の規格の同時検出を行う
ため、Remote Target の要求ごとに分割して読み込み手続きをする必要がある。
読み込みできるカード規格を増やした場合、交通系 IC カードでも NFC-A タグ両方とも利用可となり、学生が所持可能なカード種を増やすことができるが、分割読み込みによるタイムロスが発生する。学生がカードをリーダーに置いてもすぐに反応せず朝の登校時においての実用性に欠けるため、本システムでは、利用できるカードの種類を交通系 IC カードのみとした。
・スマートフォン内蔵 IC カード
単体 RFID カードと、スマートフォンに搭載される内蔵 RFID 機能とでは検出機序が異なるため、スマートフォン向けの読み取りの場合 sense メソッドを用い、カードの事業者割り当て(System Code)を明示した読み取り手続きを行う。
スマートフォンの RFID 機能は、カードを内部に複数登録することができるが、RFID 通信ユニットは１つであるため、１枚の RFID カードの情報をリ[3]

https://github.com/mkleehammer/pyodbc

クエストに応じて都度書き換えし応答する仕組みとなっている。
利用カードの切り換えには設定から手動で行う方法の他、交通系 IC カードの駅やバスの利用時、即座に反応、無操作にてゲートを通過することを想定した、エクスプレスカード設定と呼ばれる機能がある。この機能は学生がスマートフォンに登録した交通系 IC カードを利用するにあたり、対応すべき重要な機能である。スマートフォンのスリープ時にも RFID 応答可能とする機能であるが、リーダー側の System Code を明示した読み取り手続きをトリガーとして反応する仕組みである。
System Code の不一致や、手続きが規定と違う場合は反応せず、この場合は、ユーザーはスマートフォンの設定からカードを手動選択して準備した後に使用しなければならない。
[PuchTimeClock.py] (抜粋)suica =
nfc.clf.RemoteTarget("212F") ※1
suica.sensf_req =bytearray.fromhex("0000030000") ※2
clf = nfc.ContactlessFrontend('usb:054c:06c3')
res = clf.sense(suica)
tag = nfc.tag.activate_tt3(clf, res)tag.sys = 3
idm = binascii.hexlify(tag.idm)※1

RemoteTarget 読み取り対応カードの指定
NFC-A (Type-A)“106A”
NFC-B (Type-B)“106B”
NFC-F (Felica)“212F”※2

sensf_req (System Code) 事業者区分の指定
交通系カード“0000030000”
筑波大学職員証“00fe000000”
大手電子マネー・効果音
カードに反応したことを学生に判りやすくする
ため、効果音を設定した。
[PuchTimeClock.py] (抜粋)os.system("aplay -q pop.wav")

６．ソフトウェア
ユーザー向けインターフェースのほとんどは、Web アプリケーション(.net ASP, C#)で構成されており、教員は机上の PC から Web ブラウザ経由で操作する。

6.1 保護者 Web ページ
保護者 Web ページは、保護者がアクセスする外部公開 Web ページであり、学生が RFID カードで入構したかの情報確認と、学校への連絡事項の入力ができる。(図 3、4)

図 3. ログイン画面

・SQL Server 連携
データーベースへの登録は pyodbc パッケージを経由し実行する。
[PuchTimeClock.py] (抜粋)conn = pyodbc.connect('DSN=sqlsv;UID=user;PWD=pass’)with cnxn.cursor() as cur:sql = "insert into RFID_REC (date,IDm,gate)values (CURRENT_TIMESTAMP,'"+ idm + "'," + GATENUM + ")"conn.close()

端末接続は、学校施設の共用部に LAN を解放するため、セキュリティ対策として、テーブルのアクセス制限および IP フィルタ設定をしている。
図 4. 連絡入力画面

保護者が入力する連絡事項枠は、当日の欠席連絡などでの利用を想定している。入力枠は 50 文字以内であり、1 枠の｢連絡板｣として機能する。2 度目以降のログインでは、直前に入力した連絡事項を再編集する格好となり、1 日ごとに改新・保存される。単純・簡潔・敏速の観点から、双方向のメッセージのやりとりや、長文を分割して送り続けることはできない仕組みとなっている。

6.5 登校状況レポート
教員が昇降口の通過状況を確認する SSRS レポー
トページである。保護者連絡の有無の一覧が色別に表示される。(図 6)6.2 HR 出欠入力
ホームルーム担任が毎日のホームルーム出欠席を記録するためのページである。学生ごとに保護者連絡の有無(学生氏名下側)、科目出欠の状況(時限枠下側)、保健室入室状況の情報(時限枠下側)が赤緑のインジケーターとして表示され、各学生の状況がリアルタイムで確認できるようになっている。(図 8)6.3 科目出欠入力
科目担当教員が 1 回の授業ごとの出欠情報を入力するためのページである。RFID カードがタッチされているかの有無、保護者連絡、1 時間目の出欠、HR出欠で担任が欠席にチェックしたかどうかの確認が可能である。 また、科目名簿の作成時に入力する備考文が併せて参照できる。障害があるなど留意の必要な学生についての注記が可能である。(図 9)

図 6. 状況レポート

6.6 連絡受付レポート
保護者連絡 Web ページで入力された連絡を閲覧できる SSRS レポートページである。RFID による学生の登校時刻、保護者連絡が表示される。(図 7)

6.4 カードマネージャ
学生が持つ RFID カードの固有番号(IDm)を登録するツールである。USB 接続の読み取り機(Sony Pasoriリーダー)を用いて読み取った情報をデーターベースに登録する。(図 5)USB 接続機器を使用するため、カードマネージャソフトは Windows アプリケーションとして供給される。

図 7. 連絡受付レポート

図 5. カードマネージャ

図 8. HR 出欠入力画面

図 9. 科目出欠入力画面

6.7 保護者用 QR コード発行
保護者に親展で発行するログイン URL のQR コードが記された印刷物を出力する SSRSレポートページである。(図 10)

・自動集計メールの確認
SQL Server の時限エージェントとデーターベースメール機能により、毎日の正午に現状出欠と保護者連絡を集計した自動集計メールが職員メーリングリストへ送信される。(図 11)

図 10. 保護者向け QR コード

７．実際の運用と維持管理
学生の持つ RFID カードについては、現時点ではすでに所有する率の高い交通系 IC カード(Felica)を登録して使用することとした。RFID 内蔵の学生証や、キーホルダー形状のタグを頒布し利用することも可能である。
通年の運用の流れを下記に示す。
[入学時作業]・保護者案内入学式終了後の保護者集会にて、連絡システムのID とパスワードに加え、連絡用の Web ページにアクセスできる QR コードを印刷した案内・説明書を配布し、翌日より連絡システムを利用できるようにする。
・カード登録交通系 IC カードを持参させ、全学生が行う学生証写真撮影などのイベントと合同で登録作業を実施する。
[毎日の作業]・登校通知
学生は毎朝の登校時 RFID リーダーに IC カードをタッチする。
・保護者連絡
保護者は、学生の病欠や何らかの連絡がある場合、保護者連絡用 Web ページにアクセスし、連絡事項を入力する。もしくは、RFID タッチ時刻を確認する。

図 11. 自動集計メールの例
・科目出欠の入力科目担当の出欠入力画面に、学生名簿と一緒にRFID タッチ時刻と保護者連絡有無が表示される。
学生が教室にいない場合の対処が可能。
・HR 出欠の入力
科目出欠状況、保健室利用状況、RFID タッチ時
刻、保護者連絡有無が同時に確認できる。担任は、これらの情報を総合して対処をする。
・RFID 状況レポート
学生全員の登校状況・保護者連絡有無を確認できる。職員室における登校状況掲示の補助機能となる。
[臨時作業]
・カード更新学生の所持カードが変更になった場合の更新作
業。紛失の他、定期券など交通系 IC カード更新によるものが主である。
・ID パスワード再発行、保護者対応
ID パスワード喪失の場合は QR コード用紙を再発行する。

参考文献[1] 加島倫, 附属坂戸高等学校学務処理システムの構築,
筑波大学技術報告 29 (2009) 28-35.
https://www.tech.tsukuba.ac.jp/2008/pdf/report/Kashima_report2008.pdf[2] Stephen Tiedemann, nfcpy,
https://github.com/nfcpy/nfcpy[3] Michael Kleehammer, pyodbc,
https://github.com/mkleehammer/pyodbc

Development of RFID Students entrance tracking and parents messaging system
for the Senior High School at Sakado, University of Tsukuba
Hitoshi Kashimaa)
Senior High School at Sakado, Division of Services for Laboratory Schools, Department of Tokyo Campus Affairs,
University of Tsukuba,
1-24-1 Chiyoda, Sakado, Saitama, 350-0214 Japan

This system records information of passing gates of students and notify to their parents for students' safety andparents can send to message to school via the web. Otherwise, it has some functions such an assist for record of attendancein the class/subject and display an arriving school, message from parents.
Keywords: RFID, Felica, messaging from parents, tracking students