目的
自分で集めようとした情報をいざ紙のフォーマットを用意して印刷をし、それを配布して、記入してもらって、回収して、エクセルなどを利用して情報を仕分けをする。このような一連の作業をいちいちすることは面倒である。その作業をもっと簡潔に済ませるためにスマートフォンで集めたいデータを指定して、回収することにした。いまだに紙媒体を取り扱っているケースが多くみられることと、最近ほとんどの人が持っているスマートフォンを持ち歩いているので、利用すればよいのではないかと思った。このアプリケーションは簡単なため、あわよくば、スマートフォンを持ち歩くことは必須条件であるという認識を持たせることができればなおよいと考えた。 プログラム概要
実装ファイル(.m)は以下に分けられている。ただし、定義ファイル(.h)を除く。 objective-cのファイル
Test_TVC.m (XMLファイルを構文解析し、変数にデータを格納するクラス)
UIPlaceHolderTextView.m (TextViewにプレースホルダーを付けるクラス)
AddItem.m (追加するフォームをテーブルから選択するクラス)
AppDelegate.m (グローバル変数など全体の情報をコントロールするクラス)
FormClass.m (質問する事項、それに関する簡単な説明などを入力し、変数に格納するクラス)
NewForm.m (追加したフォームを確認するクラス)
SendMenu.m (自分のサーバーにおいてあるphpファイルにPOST通信するクラス)
TextForm.m (一般的な質問に関するインスタンスを生成するためのクラス)
TopMenu.m (フォームを生成するかフォームに返答するかを選択するクラス)
phpのファイル
index.php (送られてきたデータをデータベースに登録するためのファイル)
connect.php (データベースに接続するための設定ファイル)
xmlのファイル
samplexxx.xml (データベースに保存したアンケートフォームをXMLとして構造化したファイル[複数ファイル])
アプリケーションの流れ
作業工程は二つに分かれる。TopMenuでフォームを生成するか、フォームに返答するのかを選択する フォームを生成をする
データフォームの形式を選択する。
NewForm.mがこの画面を実装している。最初はこの画面はまっさらな状態であるが、AddItemというボタンを押すことによりAddItem.mの実装内でフォームを追加していく。
データフォームの形式にしたがって質問する事項を記入し、まとめ上げる。
FormClass.mがこの画面を実装している。現在は質問したい事項、その質問に関する補足事項、プレースホルダーを記入してフォームを作成する形をとっている。質問事項は複数設定でき、簡単なアンケートフォームを作成することが可能である。NewForm.mとFormClass.mを行き来することで対象者に記入してもらうためのフォームを完成させる。現在フォームは一つしか用意されてないが今後拡張する予定である。
作成したフォームをサーバーへ送信する。
SendMenu.mがこの画面を実装している。同期通信によってここまで記入したフォームの内容を自分のサーバーへ送信する。送信した内容はサーバーのデータベース(MySQL)に保存する。
サーバーに送信されたデータをデータベースに格納する
送信されたデータを加工して利用可能なデータの形に整える。index.phpでテーブルを作成し、データをデータベースに登録する。 後でフォームへの返答の際に必要となるxmlファイルを作成する フォームに返答をする
QRリーダを利用して情報を読み取る
QRのためのライブラリを用いてQRコードからフォームを取得する
返答したい質問のフォームを表示し、フォームの指示に従って返答する
XMLファイルを解析することで返答するフォームを作り上げる。対象者はフォームを見て回答する。
記入した内容をサーバーへ送信する
作り上げたデータをPOST通信でテーブルに登録する。