i移転先予定のブログURLはこちら(作成中):http://www.sawanoboly.net/wp/
旧ブログはこちらでも保管しときます:http://www.sawanoboly.net/wp_old/
簡単なやつ、小規模な社内向けとか。
全従業員を対象にアンケートを実施する必要があったとして、その仕組みを考える。
こういう設計は専門外だけど、たまには面白いだろう。突っ込み歓迎。
記名制ならWEBにフォームをおいてURLを案内、適当に飛ばしてもらえば別にそれでいいんだけど、ちょっと匿名で集めたい場合は色々と工夫が必要だ。
単純に無記名だと誰が提出済みかわからないうえ、同一の人が複数送ってもわからないため未提出の状況を全然把握できない。
その辺を踏まえて要件を出してみる。
・アンケートは匿名
・内容は誰が出したかわからないように受け取る
・提出は1人1件
・もれなく提出できているかチェックできる
こんなシステムならいいのかな。
回答はWEBのフォームからやるのが楽そう、それを軸に考えて...
提出が1人1件というから、対象のリストは必要だろう。メンバID,名前,メールアドレス くらいかな。
アンケート自体、ステータスの管理をするからマスタがいるなあ、アンケートID,アンケート名 程度あれば。完了フラグがあってもいいかも。
さて、提出/未提出をメンバーごとに管理という部分が悩ましい。
考えてみた実装は次のような感じ。
メンバIDごとに[ランダム文字列]を作成、アンケートURLにその文字列を組み合わせたものがそのユーザ専用のアンケート回答フォーム。
(例:http://アンケートサーバ/enq.cgi?code=[ランダム文字列])
そのURLから回答したら、同じURLは使えない。
アンケートを作成したら、対象メンバ毎に固有のURLを記載したメールで案内する、というのでどうだろう。
提出管理のテーブルがいる。 アンケートID,ユーザID,ランダム文字列,提出済みフラグ 、こんなもん?
そして提出されたアンケートの内容だけど、たとえばこれをDBに順に突っ込んだとすると、回答順から提出者の予測ができたりしてしまう。
これを避けるには、あらかじめアンケート回答の入れ物を作っておき、そこにランダムで突っ込んでいくようにすれば幾分ましだろうか。
少なくとも全員が回答するまでそのテーブルを開かなければ、誰がどの回答をしたかログでも追わない限り分からないはずだ。ここには アンケートID,ストアID,回答内容 が入ればいいかな。
●アンケート作成機能
アンケート用WEBアプリに必要な機能
・アンケートを作成し、メンバリストの数だけ提出管理リストを作る
・回答用レコードを用意する
・作ったアンケートを実施対象に個別URL付きで送信する
●回答受付、提出状況管理機能
・アンケートを受付、ステータスを更新する
・回答済みのURLはブロック
・アンケートストアの作成
・アンケートを適当なところにストア
DBに必要なテーブルたち
・メールアドレス付き名簿 [メンバID,名前,メールアドレス]
・アンケートのリスト [アンケートID,アンケート名]
・アンケートごとの提出管理 [アンケートID,ユーザID,ランダム文字列,提出済みフラグ]
・アンケート回答の入れ物 [アンケートID,ストアID,回答内容]
と、このくらいでできるかな?
管理画面とか言い出すとたぶん今は手におえないからこんなもんで、という方が本音かも。まあ作る予定はないのだが。
しかし下手に結果をDBに突っ込むような仕組みだと複数個所でインジェクションが怖いな、かといってメールだと回答タイミングがもろバレだからイマイチ。。
最後に、代理提出の抑止や提出内容の暗号化などと、じっくり凝ったややこしい仕組みが必要な場合は、平成19年春期のテクニカルエンジニア情報セキュリティ過去問題午後Iの問4が参考になります。
これはとても面白かった。ランダムにデータをストアとかはこれで紹介されている仕組みの改変版です。
(0)
(0)
(0)
(0)
Total: 0
最近のコメント