diff --git a/ER2.pdf b/ER2.pdf new file mode 100644 index 0000000..3d7ad5b --- /dev/null +++ b/ER2.pdf Binary files differ diff --git a/ER3.pdf b/ER3.pdf new file mode 100644 index 0000000..86a9135 --- /dev/null +++ b/ER3.pdf Binary files differ diff --git a/bib.bib b/bib.bib index 9f28330..80ed020 100644 --- a/bib.bib +++ b/bib.bib @@ -112,7 +112,7 @@ @article{screape, -author="小島, 一恭 and 奥村, 高広", +author="小島一恭 and 奥村高広", title="2115 Webスクレイピングによる温熱データと居住者の温冷感申告との関係性(福祉機械・ヒューマンインターフェース(2))", journal="機素潤滑設計部門講演会講演論文集", ISSN="", diff --git a/mituyuki.pdf b/mituyuki.pdf index ee2fd51..a46c655 100644 --- a/mituyuki.pdf +++ b/mituyuki.pdf Binary files differ diff --git a/mituyuki.tex b/mituyuki.tex index 2de2c0e..c20326c 100644 --- a/mituyuki.tex +++ b/mituyuki.tex @@ -12,7 +12,8 @@ \usepackage{ulem,color,graphicx,eclbkbox} \usepackage{multicol} \begin{document} - \title{災害時を想定した複数人での活動を支援するシステムの構築} + \title{非同期通信を利用したWeb上のマップ描画による\\情報共有システムの設 + 計} \author{廣瀬研究室 4年 c1151073 鈴木光明} \date{平成30年1月15日} \maketitle @@ -24,10 +25,12 @@ % \abstract{ 近年、GPS内蔵型携帯電話等の位置情報を計測できる情報端末が広く普及して いる。しかし、近年の熊本地震や北海道胆振地震をはじめと - する災害時にその機能が有効に活用されていないのが現状である。現在位置情 + する災害時の行方不明者や災害弱者の逃げ遅れの状況から見える通りその機能 + が有効に活用されていないのが現状である。現在位置情 報を利用したガイドシステムは存在するが、利用者同士のコミュニケーショ ンや情報共有が念頭に置かれていない場合が多い。また、従来災害時に用いら - れている伝言板等のシステムでは携帯電話とPCとの連携が取れず、避難者の立 + れている伝言板等のシステムでは携帯電話とPCとの連携が取れず、避難時に災 + 害時の状況を確認できる手段がないことから避難者の立 場が考慮されていないことが問題視されている。\par そこで、個人単位で位置情報を発信できる点に着目し、災害時における避難 者の位置情報の共有の簡易化を図るWebアプリケーションを構築する。また、外部か @@ -35,7 +38,7 @@ 互共有を可能にし、災害時に家族等の少人数のコミュニティ内で活用できるよ うな機能も構築する。また、その機能を応用し、フィールドワーク等複数人の 位置情報を相互に確認したいような場面でも利用できるようなシステムを構築 - する。(441文字) + する。(491文字) \\ \thispagestyle{empty} \tableofcontents @@ -59,8 +62,8 @@ で把握できないのは不便な状況が存在する。宗森らによると 既存の位置情報を使ったガイドシステムでは、その場での交換やチャットなど、 利用者同士のコミュニケーションや情報共有は念頭に置かれていない場合が多 - いとされている\cite{oni, xEx}。また、位置情報を扱うため、Apple StoreやGoogle - Playから配布されているアプリケーションであっても、位置情報を不正に取得 + いとされている\cite{oni, xEx}。また、Apple StoreやGoogle + Playから配布されているアプリケーションの中にも、位置情報を不正に取得 している例が確認されている\cite{alert}。\par 更に、Google Playでnekonotesoftから配信されている情報共有ソフト``いまど こ?位置検索''等をはじめとした無料のアプリケーションでは共 @@ -167,6 +170,7 @@ \begin{table}[h] \begin{center} + \caption{システム利用時に必要な設定数の差} \begin{tabular}{|c|c|c|}\hline 利用人数&既存のシステム &本システム \\\hline 2 & 2回 & 2回 \\\hline @@ -174,55 +178,113 @@ 4 & 12回 & 4回 \\\hline n & n(n-1)回 & n回 \\\hline \end{tabular} - \caption{システム利用時に必要な設定数の差} \label{system} \end{center} \end{table} -\chapter{システムの構築環境} -本研究で開発するシステムの環境について記述する。 - % \section{用語解説} - % システムを提案する上で必要となる用語の解説を記述する。 +\chapter{システムに必要な情報と構築環境} +本研究で開発するシステムに必要なデータと構築環境について記述する。 - % \subsection{JSON形式} - % JavaScript Object Notation(JSON) とは、データを表現するための記法であ - % る。表形式では記述が困難な構造のデータを、人間に対しての可読性を残しつつ計 - % 算機に対して伝達出来るような記法である。 + \section{必要なデータの考察} + 本システムを設計するにあたり必要なデータについて考察する。 + \subsection{ベースシステムにおける必要最低限のデータ} + 本システムの設計において、Web上のマップ描画における位置情報の共有 + のみを目的としたシステムを考える。最低限必要なデータは以下の通りである。 + \begin{itemize} + \item ユーザ名 + \item クッキー情報 + \item グループ加入情報 + \item 位置情報 + \end{itemize} + ここから本システムを設計していく上で必要なデータを考察しながら追加していく。 + + \subsubsection{パスワード} + 本システムを利用する際、クッキー情報を取得していれば本人の認証を維持す + ることは可能である。しかし、利用端末の故障等の理由から別の端末に変更し + た際や複数端末からの利用をする際にクッキー情報を引き継ぐことができない。 + そのため、 クッキーIDとは別に情報を引き継ぐための個別の情報が必要にな + る。 + そこで、本システムではクッキーIDとは別にユーザごとのパスワードをユーザ + を認識するための情報として設定する。 - % \subsection{CGI} - % Common Gateway Interface(CGI)とは、 Webサーバとプログラム間のデータの - % 送受信の規格で、ブラウザからの要求に応じてプログラムを起動し、その - % 結果をブラウザに返すためのインターフェイスである。 + \subsubsection{グループマスタ} + 複数人数でのグループで情報を共有する際、本システムでは情報の更新頻度等 + の設定は個別で行う。しかし、この機能では位置情報とともにユーザ名も表示 + するため、作成したグループに全てのユーザが自由に干渉できる設定にすると + プライバシやセキュリティ面の安全性に欠ける。そこで、ユーザの中にグルー + プマスタという役職を割り当て、グループへの参加承認等に関する権限を付与 + する必要がある。 + + \subsubsection{最終利用時刻} + 本システムはWeb上のマップ描画によるリアルタイムな情報共有を目的として + いる。ユーザ名と位置情報のみの表示ではマップに表示される他のユーザがい + つ情報を送信したかを知る手段がないためリアルタイムに情報を更新する利点 + が失われる。。そこで、本システムでユーザが情報を + 送信する際に利用した時刻も送信し、閲覧できるようにする必要がある。 + + + \subsubsection{地域名} + 本システムでは災害時のユーザの避難分布を表示する。その際、全ユーザの情 + 報を表示すると範囲が広く情報過多になる。そこで、一定範囲ごとの地域を設定し、 + 設定した地域内の利用者の分布を表示する。元段階の本システムでは市町村を + 単位としているが、人口等を考慮し更に厳重な条件のもと範囲の単位を設定す + る必要がある。 + + + \subsection{本システムに実装するデータ} + 上記の点を踏まえて、本システムでは以下のデータをユーザから取得し、管理 + する。 + \begin{itemize} + \item ユーザ名 + \item パスワード + \item クッキー情報 + \item 位置情報 + \item グループ加入情報 + \item グループ編集権限情報 + \item 利用時刻 + \item 地域名 + \end{itemize} + + + \section{データの正規化} + 本システムは関係データベース(DBMS)でデータを管理するため、データを正規化する必 + 要がある。正規化とは、データを効率良く扱うために特定のルールにしたがっ + て整理することである。\par + 例として、本システムで利用するデータの一部をまとめた表\ref{nama}があ + る。この状態では任意のデータを抽出したり参照したりする際に一度に複数のデータ + が当てはまるため効率的ではない。また、一つのデータを修正するために複数 + の箇所を変更する必要があり手間がかかる場合がある。そこで、本研究ではプ + ログラムからデータの参照や抽出を行うため第3正規化まで行う。\par + 以下に本システムで利用したデータの正規化の手順について記述する。 - \section{データの正規化} - 今回は関係データベース(DBMS)でデータを管理するため、データを正規化する必 - 要がある。正規化と - は、データを効率良く扱うために特定のルールにしたがって整理することであ - る。以下に正規化の手順について本システムで利用したデータの一部を用いて - 記述する。 - - \subsubsection{非正規形} - 整理されていない生の状態のデータのことを非正規形と言う。データベースで - データを管理する際、このように一つの項目(フィールド)内に複数のデータが - 格納されていても複数のデータと認識することはできない。これらのデータを - データベースが計算機で処理しやすい形式にすることが正規化である。\par \begin{table}[h] \begin{center} + \caption{生のデータ} + \label{nama} \begin{tabular}{|c|c|c|c|}\hline 太朗 & hogehoge & 鶴岡 & Aグループ38.4, 138.5 12:00 Bグループ38.6, 138.1 13:00\\\hline 花子 & gehogeho & 酒田 & Aグループ38,1, 138.1 13:05\\\hline 鈴木 & pasuwa-do & 鶴岡 & Bグループ38.5, 138.5 14:30\\\hline \end{tabular} - \caption{生のデータ} \end{center} \end{table} + + + \subsubsection{非正規形} + 表\ref{nama}のように整理されていない生の状態のデータのことを非正規形 + と言う。データベースで + データを管理する際、このように一つの項目(フィールド)内に複数のデータが + 格納されていても複数のデータと認識することはできない。これらのデータを + 関連性を失わないようにデータベースが計算機で処理しやすい形式にするこ + とが正規化である。\par \subsubsection{第1正規化} - 非正規形において繰り返していたり、フィールド内に複数格納され - ていたりするデータを別の行(レコード)に分離し、繰り返しを排除する。\par + 非正規形において繰り返しや、一つのフィールド内に複数格納され + ているデータを別の行(レコード)に分離し、繰り返しを排除する。\par \begin{table}[h] \begin{center} + \caption{繰り返しを排除した形} \begin{tabular}{|c|c|c|c|c|c|c|}\hline name & pass & group & local & lat & lng & time\\\hline 太朗 & hogehoge & Aグループ & 鶴岡 & 38.4 & 138.5 & 12:00\\\hline @@ -231,7 +293,6 @@ 鈴木 & pasuwa-do & Bグループ & 鶴岡 & 38.5 & 138.5 & 14:30\\\hline \end{tabular} \label{kuri} - \caption{繰り返しを排除した形} \end{center} \end{table} 更に、テーブルごとにデータを一意に識別するための項目を設定する。このよ @@ -250,30 +311,31 @@ \begin{table}[h] \begin{center} + \caption{パスワードテーブル} \begin{tabular}{|c|c|}\hline name & pass \\\hline 太朗 & hogehoge \\\hline 花子 & gehogeho \\\hline 鈴木 & pasuwa-do \\\hline \end{tabular} - \caption{パスワードテーブル} \end{center} \end{table} \begin{table}[h] \begin{center} + \caption{地方テーブル} \begin{tabular}{|c|c|}\hline name & local \\\hline 太朗 & 鶴岡 \\\hline 花子 & 酒田 \\\hline 鈴木 & 鶴岡 \\\hline \end{tabular} - \caption{地方テーブル} \end{center} \end{table} \begin{table}[h] \begin{center} + \caption{ユーザ情報テーブル} \begin{tabular}{|c|c|c|c|c|}\hline name & group & lat & lng & time\\\hline 太朗 & Aグループ & 38.4 & 138.5 & 12:00\\\hline @@ -282,7 +344,6 @@ 鈴木 & Aグループ & 38.5 & 138.5 & 14:30\\\hline \end{tabular} \label{daini} - \caption{ユーザ情報テーブル} \end{center} \end{table} @@ -292,33 +353,34 @@ ることを指す。今回の場合、表\ref{daini}において、nameとgroupが決まれ ばその他のデータが決まるため、別のテーブルを新たに作成する。検索の効 率を考慮して部分的に正規化の程度を敢えて落とした状態のままにする場合 - もある。最終的には表3.6~3.9の状態になる。 + もある。最終的には表3.6, 3.7, 3.8, 3.9の状態になる。 \begin{table}[p] \begin{center} + \caption{パスワードテーブル} \begin{tabular}{|c|c|}\hline name & pass \\\hline 太朗 & hogehoge \\\hline 花子 & gehogeho \\\hline 鈴木 & pasuwa-do\\ \hline \end{tabular} - \caption{パスワードテーブル} \end{center} \end{table} \begin{table}[h] \begin{center} + \caption{地方テーブル} \begin{tabular}{|c|c|}\hline name & local \\\hline 太朗 & 鶴岡 \\\hline 花子 & 酒田 \\\hline 鈴木 & 鶴岡 \\\hline \end{tabular} - \caption{地方テーブル} \end{center} \end{table} \begin{table}[h] \begin{center} + \caption{位置情報テーブル} \begin{tabular}{|c|c|c|c|}\hline name & group & lat & lng \\\hline 太朗 & Aグループ & 38.4 & 138.5 \\\hline @@ -326,13 +388,13 @@ 花子& Bグループ & 38.1 & 138.1 \\\hline 鈴木 & Aグループ & 38.5 & 138.5 \\\hline \end{tabular} - \caption{位置情報テーブル} \end{center} \end{table} \begin{table}[h] \begin{center} + \caption{利用時刻テーブル} \begin{tabular}{|c|c|c|}\hline name & group & time\\\hline 太朗 & Aグループ & 12:00\\\hline @@ -341,7 +403,6 @@ 鈴木 & Aグループ & 14:30\\\hline \end{tabular} \label{daini} - \caption{利用時刻テーブル} \end{center} \end{table} @@ -354,37 +415,36 @@ \item SQLite3 \end{itemize} - - % \section{扱うデータ} - % \label{data} - % 今回は正規化を行った以下のテーブルでデータを管理する。 - % \begin{itemize} - % \item user(ユーザ名, パスワード) - % \item users(クッキーID, ユーザ名, 最終ログイン時刻) - % \item ginfo(グループ名, グループの管理ユーザ名) - % \item gmember(ユーザ名, 所属するグループ名) - % \item latlng(グループ名, ユーザ名, 取得した経度, 取得した緯度) - % \item lastlaln(ユーザ名, 最後に取得した経度, 最後に取得した緯度) - % \item time(ユーザ名, グループ名, 取得した時刻) - % \item local(ユーザ名, 設定した地域) - % \end{itemize} - \chapter{システムの設計} 本システムの設計について記述する。 - \section{RDBMSによるデータ管理} - 前章で延べた通り本システムではRDBMSで各データを管理する。そこからRubyプ - ログラムやCGIからSQL文を実行することで必要なデータを取り出す形式である。 - 本システムで扱うデータのER図は図\ref{ER}の通りである。 + \section{本システムの概観} + 本システムを利用する際の流れは以下の通りである。 + \begin{enumerate} + \item アカウントの作成・ログイン\par + 本システムを利用するための情報を入力しアカウントを作成し、ログイ + ンする。 + \item グループの作成・加入・選択\par + 指定したユーザ同士で構成されるグループ周辺の設定をする。 + \item 利用端末から情報を送信・取得\par + ユーザ自身の位置情報・利用時間等の情報をDBMSに送信すると同時に最 + 新の情報を取得する。 + \item 取得したデータが反映されたマップの閲覧\par + 取得したデータを元に目的に応じて作成されたマップを閲覧する。 + \end{enumerate} - \begin{figure}[h] - \begin{center} - \includegraphics[bb=0 0 398 436,scale=0.5]{ER.pdf} - \caption{本システムで扱うデータのER図} - \label{ER} - \end{center} - \end{figure} + なお、目的がユーザ自身の情報の更新に限る場合グループを選択する必要はなく、自身 + の情報のみを更新する機能を利用することができる。利用時の概念図は図 + \ref{sys}のようになる。 + + \begin{figure}[h] + \begin{center} + \includegraphics[bb=30 69 561 795,scale=0.5]{system.pdf} + \caption{システム利用時の概念図} + \label{sys} + \end{center} + \end{figure} \section{個別アカウントの管理} 本システムを利用するために必要なアカウント周辺について記述する。 @@ -393,7 +453,6 @@ システムを利用するためのアカウントを最初に作成する必要がある。メイルア ドレス等の登録を用いないため、ユーザ名を直接ユニークキーとする。 - \subsection{アカウントの認証期限に関して} 本システムでは後述のAjaxによる非同期通信を行う以外に、複数ページを経由 したり、システムから離れたりした際にもある程度の間ログイン情報を保持す @@ -419,41 +478,43 @@ タをJSON形式で返す。 \item 受け取ったデータをもとにマップを作成する。 \end{enumerate} - + \begin{figure}[h] \begin{center} \includegraphics[bb=70 69 808 508,scale=0.25]{ajax.pdf} \caption{本システムでの非同期通信の例} \end{center} \end{figure} -\chapter{システムの概観と実行} -実際に構築したシステムの概観と実行する行程について記述する。 - \section{本システムの概観} - 本システムを利用する際の流れは以下の通りである。 - \begin{enumerate} - \item アカウントの作成・ログイン\par - 本システムを利用するための情報を入力しアカウントを作成し、ログイ - ンする。 - \item グループの作成・加入・選択\par - 指定したユーザ同士で構成されるグループ周辺の設定をする。 - \item 利用端末から情報を送信・取得\par - ユーザ自身の位置情報・利用時間等の情報をDBMSに送信すると同時に最 - 新の情報を取得する。 - \item 取得したデータが反映されたマップの閲覧\par - 取得したデータを元に目的に応じて作成されたマップを閲覧する。 - \end{enumerate} + + \section{RDBMSによるデータ管理} + 前章で延べた通り本システムではRDBMSで各データを管理する。そこからRubyプ + ログラムやCGIよりSQL文を実行することで必要なデータを取り出す形式である。 + + 今回は前章の例に挙げたデータの他にグループのマスタ、クッキー情報のデー + タを加えて正規化を行った以下のテーブルでデータを管理する。 + \begin{itemize} + \item ユーザ情報(ユーザ名, パスワード) + \item 設定地域情報(ユーザ名, 設定した地域) + \item クッキー情報(クッキーID, ユーザ名, 最終ログイン時刻) + \item 利用時刻情報(ユーザ名, グループ名, 最終利用時刻) + \item 位置情報(ユーザ名, 取得した経度, 取得した緯度) + \item グループ情報(グループ名, マスター名) + \item グループ加入状況(ユーザ名, 所属するグループ名) + \end{itemize} + + 本システムで扱うデータのER図は図\ref{ER}の通りである。 - なお、目的がユーザ自身の情報の更新に限る場合グループを選択する必要はなく、自身 - の情報のみを更新する機能を利用することができる。利用時の概念図は図 - \ref{sys}のようになる。各行程の詳細な手順は次章以降に記述する。 - - \begin{figure}[h] - \begin{center} - \includegraphics[bb=30 69 561 795,scale=0.5]{system.pdf} - \caption{システム利用時の概念図} - \label{sys} - \end{center} - \end{figure} + \begin{figure}[h] + \begin{center} + \includegraphics[bb=0 0 398 436,scale=0.8]{ER3.pdf} + \caption{本システムで扱うデータのER図} + \label{ER} + \end{center} + \end{figure} + + +\chapter{システムの実行} +実際に構築したシステムを実行する行程について記述する。 \section{個人アカウントの管理} 本システムを利用する際、利用者を特定するための個人アカウント周辺 @@ -485,7 +546,7 @@ \label{kozin} アカウントを所有するユーザがデータベースに自分の利用情報をデータベース に送信する機能である。ここで得たデータを元に後述の地域ごとの分布マップ - を作成する(\ref{bunpu}章)。 + を作成する(\ref{bunpu})。 \begin{figure}[h] \begin{center} \includegraphics[bb=36 39 814 559,scale=0.4]{gainen1.pdf} @@ -499,7 +560,7 @@ ステムである。災害時に家族等少人数のコミュニティ内でお互いの情報を把握 するための機能である。この機能は、災害時のみならず、グループワーク等複数人の位 置情報を相互に把握したい状況で利用することも目的とする。この機能を利用 - する際に利用者が送信したデータも\ref{bunpu}章のマップ作成に使用する。 + する際に利用者が送信したデータも\ref{bunpu}のマップ作成に使用する。 \par % この際、既存のアプリケーションでは複数人で情報を相互に把握する際、図\ref{kizon}の矢印の数だけ登録が必要になるが、本システムでは図\ref{my}のようになる。 @@ -529,7 +590,7 @@ \end{itemize} \subsubsection{グループ単位のマップの作成} - \ref{group}章の機能を用いて作成したグループ単位で利用するシステムである。グルー + \ref{group}の機能を用いて作成したグループ単位で利用するシステムである。グルー プメンバーが最後に利用した位置情報、名前、時刻をマップ上のピンで表示す る。 \begin{figure}[h] @@ -541,9 +602,9 @@ \subsection{設定地域内の分布表示} \label{bunpu} - 利用者が\ref{kozin}章や\ref{shounin}章のシステムを利用した際に発信され + 利用者が\ref{kozin}や\ref{shounin}のシステムを利用した際に発信され る情報をもとに各利用者が設定した地域分布マップを作成するシステムである。 - ここでは利用者にプライバシーやセキュリティ面への考慮からユーザ名等は表 + ここでは利用者にプライバシやセキュリティ面への考慮からユーザ名等は表 示せず、地域内での分布のみを表示する。図\ref{skt}は山形県酒田市の人 口密度をもとにマップを擬似的に作成したものである。 \begin{figure}[h] @@ -591,7 +652,7 @@ 整えていく必要がある。 \subsection{同時利用時のキャパシティ} - \ref{bunpu}章から、個人の特定を + \ref{bunpu}から、個人の特定を 目的としない場合の避難所から離れている利用者のばらつき等の視認性においては 問題なく見えるが、災害時に多くの利用者が同時に利用した場合、またより人口 の多い場合などの動作に関してプログラムを用いて摸擬的に検証する必要があ