よく、一問一答形式でアンケートに答えるサイトがあるのですが、こういうのをコンバセーショナルフォームというそうです。
初めて知りました。
でも、某ショッピングモールなどではよく見かけますね。
今回は、このような一問一答形式のアンケートをFileMakerで実装してみたいと思います。
質問ごとにプルダウンやラジオボタンなどを使うのはもうちょっと高度なので、今回は単にテキストで回答を進めていくことにします。
動き
動きを見ていきましょう。
まずは、質問を準備です。
質問は、単純に答えられるものを用意しました。
最初のページを表示すると、何件の質問があるかを明示しています。
この件数の表示があることで、回答をする人は、「いつまで質問が続くのか?」という心配がなくなりますね。
スターとボタンを押すと、1ページに1つの質問がでます。
回答が終わったら、「次へ」ボタンでさくさくと4つの質問に答えていきます。
実際に入力されたデータを見てみましょう。
回答idは、回答をしてくれた人の数になります。
今回は3人が回答してくれたようですね。
これを集計してみます。
なるほど、年齢に幅がありますね。なんてね。集計結果を眺めたりします。
その他、グラフを作成して見える化をはかるのもいいと思いますが、今回はテーマから外れてしまうのでやりません。
実装
では、実装をしていきましょう。
今回は、3つのテーブルを用意しています。
図のコメントにも書いていますが、通常の人の動きになぞらえると、
(1)コンバセーショナルフォームという原本から、コンバセーショナル回答テンポラリという用紙にコピー
(2)コピーした質問用紙に回答を書き込む
(3)回答が終わったデータを、コンバセーショナル回答というファイルに保存する
というところでしょうか。
こういう動きを、FileMakerで実装することになります。
テーブル設計
今回は、質問idがわかったら、質問内容をコンバセーショナルフォームからコピーするために、ルックアップという機能を使います。
コードを書くのは、一つでも少ない方がいいですからね。
設定で済むことは、設定にお任せしましょう。
コンバセーショナル回答テンポラリの設定を例にとります。
これは、コンバセーショナル回答の設定もおなじようにします。
なぜルックアップで質問内容を持ってこれるかというと、先に提示したリレーションシップで、質問idを紐づけているからです。
これがないと、ルックアップできませんから、あらかじめリレーションシップはしっかりと張っておきましょう。
最初の画面で質問件数を出していますので、集計の設定を使います。
スクリプト
スクリプトをいくつか書きます。
質問件数
最初の画面表示用です。
このスクリプトを、レイアウトが表示するときにグローバル変数に設定して表示できるように、スクリプトトリガに指定します。
グローバルフィールドで実装してもいいのですが、将来的にカテゴリの違う質問を出すことを考えて、スクリプト化しておき、フィールド設定を極力変えないような設計にしてみました。
この辺は、作る人の好みですかね。
スタートボタン
スタートボタンが押されたら、質問内容をテンポラリにコピーして回答の準備を行います。
次へボタン
次へボタンが押されたら、次の質問へいきます。
もし、最終ページだったら、テンポラリの回答を、コンバセーショナル回答に保存します。
作るレイアウトを最小限に
質問数ごとにレイアウトを作るのは、はっきり言って手間だし、メンテナンスが大変ですよね。
ですので、なるべく少ないレイアウトで済むように設計してみてください。
今回は、単純に手入力の回答ですが、回答方法が違うとユーザが答えやすく、集計する人が集計しやすくなりますので、レイアウトをどう少なくかつやりやすくするかがキモになると思います。
では、楽しいFileMakerライフを!