%#DVIPDF dvipdfmx -f index.txt
\documentclass[11pt]{jbook}
\setcounter{tocdepth}{3}
%\usepackage{listings}
%\usepackage{graphicx}
\usepackage[dvipdfmx]{graphicx}
\usepackage{listings, jlisting}
%\usepackage[sectionbib]{chapterbib}
\usepackage{ascmac}
\usepackage{longtable}
\usepackage{geometry}
\usepackage{subfigure}
\usepackage{tabularx}
%\usepackage{boites}
%\usepackage{boites,boites_exemples}
\renewcommand{\bibname}{参考文献}
\geometry{textwidth=160mm, textheight=225mm}
\makeatletter
\def\maketitle{%
  \null
  \thispagestyle{empty}%
  \vfill
  \begin{center}\leavevmode
    \normalfont
    {\LARGE \@title\par}%
    \vskip 1cm
    {\Large \@author\par}%
    \vskip 1cm
    {\Large \@date\par}%
  \end{center}%
  \vfill
  \null
  \@thanks%\vfil\null
  \cleardoublepage
  }
\makeatother
\title{位置情報を用いた出席管理システムの提案}
\author{廣瀬研究室 4年\\C1160818 佐々木大器\\}
\date{}

\usepackage{url}	% required for `\url' (yatex added)
 
\usepackage{eclbkbox}	% required for `\breakbox' (yatex added)
\begin{document}
\maketitle
 
%\tableofcontents
 
 \begin{center}
 {\bfseries 概要}
\end{center}
大学の講義や演習において、学生の出欠席を以下に効率的に管理するかは古くからの課題である。講義や演習に毎回出席することは成績評価に対する前提条件となっていることが多いため、出席状況を把握し、授業の運営に反映させることが重要である。出欠管理は、名簿に記載された学生の氏名を順番に読み上げて返事を確認する方法(氏名読み上げ方法)、出席票を回覧し学籍番号や氏名を記入させる方法(出席リスト方法)、出席票を配布し学籍番号と氏名を記入させたものを最後に回収する方法(出席票方法)などの方式が主である。本学では出席票方法が主であり、メールで出席メールを送る場合もある。しかし、いずれの出欠方法にも、他人が欠席者になりすまして出席のふりを行う、「代返」や「代筆」の不正行為を防ぎにくいといった課題がある。さらに、本学で使われている出席票方法は、受講者数が増えれば増えるほど教員側の負担が増える。そこで、本研究では、スマートフォンの位置情報サービスを利用した出席管理システムの構築をする。(435文字)

\clearpage
\tableofcontents
\clearpage
\chapter{はじめに}
\section{背景}
大学の講義や演習において、学生の出欠席を以下に効率的に管理するかは古くからの課題である\cite{1}。東北公益文科大学(以下、本学)も例外ではなく、講義や演習に毎回出席することは成績評価に対する前提条件となっていることが多いため、出席状況を把握し、授業の運営に反映させることが重要である。\par
出欠管理は、名簿に記載された学生の氏名を順番に読み上げて返事を確認する方法(氏名読み上げ方法)、出席票を回覧し学籍番号や氏名を記入させる方法(出席リスト方法)、出席票を配布し学籍番号と氏名を記入させたものを最後に回収する方法(出席票方法)などの方式が主である\cite{1}。本学では出席票(図\ref{8})方法が主であり、メールで出席メールを送る場合もある。しかし、いずれの出欠方法にも、他人が欠席者になりすまして出席のふりを行う、「代返」や「代筆」の不正行為を防ぎにくいといった課題がある。さらに、本学で使われている出席票方法は、受講者数が増えれば増えるほど教員側の負担が増える。そこで、ICTを活用し、学生の出欠情報を自動化する試みが提案されている。その中に学生のスマートデバイスを使った出欠管理がある。\par

\begin{figure}[htbp]
\begin{center}
    \includegraphics[clip,width=10.0cm]{syuseki.jpg}
    \caption{本学で使われている出席票}
    \label{8}
  \end{center}
\end{figure}

総務省平成30年度版情報白書によると、2017年の世帯における情報通信の保有率は94.8％となっている。また、2017年における個人のモバイル端末の保有状況を見ると、スマートフォンの保有率が60.9％であり(図\ref{9})、前年より4.1ポイント上昇してることから、2019年でも伸び続けていることが期待できる\cite{2}。\par
スマートフォンには、GPS機器等が標準的に搭載されており、通信サービス上の行動履歴や利用者の状態に関する情報として、精度の高い位置情報が存在する\cite{3}。GPSや位置情報を使ったサービスの一例として、Googleがインターネットを通して提供している地図、ローカル検索サービスである「googleマップ\footnote[1]{https://www.google.co.jp/maps/}」がある。また、秋田横手市ではみちびきのセンチメータ級測位補強サービス（CLAS）を受信可能な受信機と、排雪車両の前方と、車両内部のオペレーター2名の車両操作を記録するビデオカメラを取り付け、排雪時の車両挙動を明らかにし、新人育成につなげる取り組みが行われた\cite{yuki}。

\begin{figure}[htbp]
\begin{center}
    \includegraphics[clip,width=10.0cm]{sumaho.png}
    \caption{モバイル端末の保有状況\cite{2}図5-2-1-2より引用}
    \label{9}
  \end{center}
\end{figure}

\section{先行研究}
スマートデバイスを使った出席管理システムに関した先行研究は以下のようなものがある。嶋川らは、スマートフォンとBLEビーコン\footnote[2]{Bluetoothを利用した屋内位置測位を行う装置}を用いた出席管理手法の研究を行なっている\cite{3}。学生がBLEビーコンが設置された部屋に入り、BLEビーコン検知用アプリケーションを実行することで出席管理ができるシステムである。学生は、BLEビーコンが検出できる場所でしかログインができないため、出席表の代筆等の不正出席をなくすことに有効である。しかし、BLEビーコンの設置を教室毎に行わなくてはならなく、コストが高い。また、BLEビーコンの設定等を行わなくてはならないなどの問題点があげられている。\par
握美、久保は、学生が所有するAndroid端末を用いた出席管理システムの研究を行なっている\cite{4}。出席確認を行うシステムとしてFelicaなどのICカード式学生証とその読み取り端末を用いる場合に、履修者数の多い授業は時間がかかってしまうため、NFC対応のAndroid端末をシステムの一部として利用し、試作を行なった。握美らのシステムは、学生から任意により端末を提供させるという形を原則としているため、提供の有無によって授業内での学生の扱いに差別を生じさせてはならないという問題点があげられる。
\section{出席管理の問題点}
1.2であげたスマートデバイスを使った出席管理の問題点をまとめる。
\begin{itemize}
  \item BLEビーコンの購入、設置等のコストが高い
  \item 端末の提供の有無によって学生の扱いに差別を生じさせてはならない
\end{itemize}
このような問題点が判明した。そのため、本学では、BLEビーコンの設置を必要としない。かつ、学生自身に端末の提供を必要としないシステム作りが必要である。
\chapter{システムの提案}
\section{GPSの概要}
GPS(Grobal Positioning System:全世界的測位システム)は、人工衛星による位置決定システムである。1970年代の初頭に米国国防総省DOD(Department of Defense)により地球上どこでも実時間の連続測位が可能なシステムを目指し開発が開始された\cite{gps}。\par
約32機の人工衛星（測位衛星）が高度約2万kmを飛行しており、それらの衛星が発信する信号をGPS端末が受信することで位置を特定する。測位衛星には、正確な時計が搭載されており、衛星はその時刻と軌道の情報を電波に乗せて発信していて、GPS端末でその情報を受信すると、発信されてから届くまでの時間差を算出できる仕組みになっている。時間差といっても電波は光の速さで進むので差はわずかだが、衛星と地球との距離は遠いので、計算できるだけの時間差が生まれる。この時間差と光速とを掛けることで、衛星とGPS機器との距離を図れる\cite{gps}。\par
3機のGPS衛星を用いることで測位位置を求めることができる。これは、数学的に測位位置を表現する3次元座標の成分の3つの未知数を求めるために必要である。実際測位を行うには、受信機内の時計の誤差を求めることになるため、図\ref{10}のように最低4機の衛星を同時に観測する必要がある。
\begin{figure}[htbp]
\begin{center}
    \includegraphics[clip,width=10.0cm]{gps.pdf}
    \caption{GPS観測例}
    \label{10}
  \end{center}
\end{figure}
\section{目的}
本システムは、スマートデバイスに搭載されているGPSを利用し、位置情報を取得し続けることで出席の有無を記録するシステムである。また、本システムに、ログイン機能を搭載することで誰が出席をしているのかの判断を行う。本システムは、本学で運用することを想定しており、現在本学で利用できる設備や仕組みの利用可能な範囲で設計、構築を行う。また、本システムの利用者は本学に所属する学生、教員を前提とする。
\section{システムの概観}
システムの概観は以下のようになる(図\ref{1})。学生は、ログインフォームで自分の学籍番号とパスワードの入力を行う。学籍番号とパスワードは、事前にプログラムに入力しておく。このことにより、新規に作成する手間や、意図しない登録を防止する。

\begin{figure}[htbp]
  \begin{center}
    \includegraphics[clip,width=8.0cm]{gaikan.pdf}
    \caption{システムの概観図}
    \label{1}
  \end{center}
\end{figure}

\chapter{システムの開発}
ログインフォームと出席管理システムの位置情報取得方法について説明する。
\section{開発環境}
開発環境を以下に示す。
\subsection{PHP}
The PHP Groupによってコミュニティベースで開発されているオープンソースの汎用プログラミング言語である。サーバーサイドで動的なウェブページ作成するための機能を多く備えていることを特徴とする。
\subsection{JavaScript}
ウェブブラウザ上で動作し動的なウェブサイト構築やリッチインターネットアプリケーションの開発に用いられるオブジェクト指向スクリプト言語。
\section{ログインフォーム}
ログインフォームを以下の図に示す(図\ref{2})。
\begin{figure}[htbp]
  \begin{center}
    \includegraphics[clip,width=6.0cm]{loginform.pdf}
    \caption{ログインフォームの画面}
    \label{2}
  \end{center}
\end{figure}\par
学生は学籍番号に本学で使っている学生番号と、事前に学生が指定したパスワードを入力しログインを行う。\par
ログインフォームを呼び出すためのファイル(login.php)とrequire\_onceを使い、login.phpを呼び出すファイル(loginform.php)、ログアウト処理を行うファイル(logout.php)の3種類のファイルを作成。login.phpに学生番号やパスワードを保存している。パスワードは、学生が指定したものをハッシュ化し保存することにより、万が一漏洩事故が起きた際に、パスワードがわからないようにしている。詳しくは3.3.1で説明する。\par
\section{セキュリティ問題}
本システムのログインフォームのような動的システムには、適切な処置をしたプログラムを用意する必要がある。本来、本システムを用いて説明すれば、学籍番号やパスワードの記述欄に、JavaScriptなどの動的なプログラミング言語を用いてプログラムコードを記入されると、学籍番号やパスワードの漏洩につながる危険がある。そのため、本システムでは、以下の漏洩防止対策を行う。
\subsection{パスワードのハッシュ化}
パスワードが漏洩してもハッシュ化を行うことで不正ログインの防止ができる。ハッシュ化されたパスワードの例を図\ref{3}に示す。ハッシュ化を行うプログラムは、\cite{5}を参考に作成し、ハッシュ化した。

\begin{figure}[htbp]
  \begin{center}
    \includegraphics[clip,width=17.0cm]{hash.pdf}
    \caption{ハッシュ化した文字列の例}
    \label{3}
  \end{center}
\end{figure}
\subsection{エスケープ処理}
エスケープ処理とは検索処理を行うプログラムやコメント投稿を表示するプログラムなどに用いられる文字変換の処理方法である。検索処理やコメント投稿を表示するプログラムのプログラムコードに使われている半角記号をそのまま処理プログラムに取り込むとバグの原因となる。そのため処理プログラムを実行する際に、一度半角記号を\&lt;や\&gt; に変換。こうすることでバグを未然に防ぎ、ハッカーからの攻撃（XSSなど）を防ぐことができる。本システムでは、エスケープ処理を行う関数を作ることでエスケープ処理を行なっている。

\section{学生情報の管理}
学生の情報は、login.phpに格納されている。関数は図\ref{5}のように指定している。

\begin{figure}[htbp]
  \begin{center}
    \includegraphics[clip,width=13.0cm]{yuza.pdf}
    \caption{ユーザ情報}
    \label{5}
  \end{center}
\end{figure} \par 
useridに学籍番号を入れ、usernameに学生の名前を入れている。hashには、3.3.1で説明した方法でハッシュ化したものを入れている。入力されたパスワード文字列とハッシュ化済みのパスワードを照合しログインができるようにしている。
\section{出席管理システム}
出席管理システム(図\ref{6})では、授業を行う教室に入室した後にログインをすることを前提にシステム開発を行なっている。また、学生には、自身のスマートデバイスの位置情報サービスをオンにしているという前提としている。ログインが正常に行われると、位置情報を取得する(図\ref{7})。図\ref{7}は、デバックで位置情報が取得されていることを確認するためのものであり、学生が使うシステムには表示されないようにする。
\begin{figure}[htbp]
  \begin{center}
    \includegraphics[clip,width=9.0cm]{syusseki.pdf}
    \caption{出席管理システムの画面}
    \label{6}
  \end{center}
\end{figure}\par
出席ボタンを押すことで持続して位置情報を取得し続ける。ログインをした時に取得した位置情報と出席ボタンを押した後に取得し続ける位置情報を比べる。学生が途中退出を行なった際に位置情報が変更されると、出席失敗となる。出席ボタンを押してから105分が経つと出席完了となる。
\begin{figure}[htbp]
  \begin{center}
    \includegraphics[clip,width=8.0cm]{itiA.pdf}
    \caption{位置情報が取得された際に出てくるalert}
    \label{7}
  \end{center}
\end{figure}

\chapter{実験}
出席管理システムの使用実験を行う。
\section{実験環境}
実験環境を以下に書く。
\subsection{実験場所}
実験場所は、本学の203教室(図\ref{8})を使い実験を行う。

\begin{figure}[htbp]
  \begin{center}
    \includegraphics[clip,width=10.0cm]{kaizyo.jpg}
    \caption{実験を行なった203教室}
    \label{8}
  \end{center}
\end{figure}

\subsection{使用モバイル端末}
実験に使ったモバイル端末とモバイル端末のバージョンを書く。
\begin{quote}
 \begin{enumerate}
  \item MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports) \\
  MacOS Mojave 10.14.6
  \item SONY Xperia X Compact SO-02J \\
  Androidバージョン 8.0.0
  \item ASUS ZenFone 5 (ZE620KL)\\
  Androidバージョン 8
 \end{enumerate}
\end{quote}
以下、実験に使用した端末を箇条書き番号で書く。

\section{実験条件と手順}
実験の条件と手順を以下に書く。
\begin{quote}
 \begin{enumerate}
 \item 実験時間は、本学の授業時間105分とする。
 \item 端末1,2は105分間動かさずに、スリープ状態にならないように管理する。
 \item 端末3を途中退席を行なった生徒と想定し、実験途中に今日室外に運び、位置情報がズレたことにより、位置情報取得を止めるか見る。
 \item 105分後、出席が完了するかを見る。
 \end{enumerate}
\end{quote}

端末1,3は学内wifiを使用し、端末2はdocomoのSIMカードを使い、docomoの回線を使用する。端末2は、全ての学生が学内wifiを使えるとは限らないためキャリア回線を使用し実験を行う。\par

\section{実験結果}
端末1,2は、105分間位置情報を取得し続け、出席完了することができた(図\ref{9})。\par
\begin{figure}[htbp]
  \begin{center}
    \includegraphics[clip,width=10.0cm]{ok.jpg}
    \caption{出席完了のalert}
    \label{9}
  \end{center}
\end{figure}
端末3を203教室から持ち出した際には、動かした警告が出るようにできた(図\ref{10})。
\begin{figure}[htbp]
  \begin{center}
    \includegraphics[clip,width=10.0cm]{ugoki.png}
    \caption{動いた際に出るalert}
    \label{10}
  \end{center}
\end{figure}
\chapter{結論}
\section{結論}
本研究は、位置情報を使った出席管理システムを作成することを目指した。\par
出席管理システムは、実験の結果、105分間動かなければ出席完了でき、動けば出席失敗になることができた。ログインシステムは、ハッシュ化やエスケープ処理を行うことで漏洩防止対策を施すことができた。
\section{今後の展望}
今回の実験では、iOSのスマートフォンを使えなかったため、iOS端末での実験を行う必要性がある。また、キャリア回線を使う際に、データ通信量の問題点が出てくる。本システムは、1秒ごとに位置情報を取得できればするようにしているため、通信量が多くなる。毎日使えるようにするには、位置情報の取得のスパンを長くするか、全ての学生に学内wifiを使ってもらう必要がある。
\begin{thebibliography}{}
 \bibitem{1}
飯尾 淳. ``スマートデバイスを用いた出席管理システムの利用に対する学生の意識調査`` . 文学部紀要 社会学・社会情報学. 2017. 13-28
\bibitem{2}
 総務省. ``基本データと政策動向``. \url{http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h30/html/nd252110.html}, (参照日2019-12-9). 
 \bibitem{3}
 総務省. ``スマートフォンを経由した利用者情報の取扱いに関するWG中間とりまとめ(案)``.  \url{http://www.soumu.go.jp/main_content/000155904.pdf}, (参照日2019-12-10). 
 \bibitem{yuki}
 内閣府 宇宙開発戦略推進事務局. ``みちびき(準天頂衛星システム) GPSと一体運用なみちびきで位置情報高精度測位``. \url{https://qzss.go.jp/usage/userreport/yokote_190520.html}(参照日2019-12-10)
  \bibitem{4}
嶋 川司 三木 光範 中原 蒼太 間 博人. ``スマートフォンとBLEビーコンを用いた出席管理手法の提案``. 同志社大学ハリス理化学研究報告. 2017,88-95
\bibitem{gps}
喬 耘. ``GPS単独測位の高精度化に関する研究``. 東京海洋大学 海洋工学部 海事システム工学科 GPS/GNSS研究室 情報通信工学研究室. 2005
\bibitem{5}
握美 孝明 久保 裕也. ``学生の所有するNFC対応Android端末を用いた出席管理システムの試作``. 第77回全国大会講演論文集. 2015,383-384
\end{thebibliography}
\end{document}