Google Formで条件分岐するアンケートを作成する

 Googleスプレッドシートのフォームでアンケートを作ってみたでは,第 1 正規形でアンケートを取る方法を説明した.今回は選択肢によって質問を条件分岐させる方法について説明する.題材は国際標準化身体活動質問票 (IPAQ) である.

 IPAQ とは International Physical Activity Questionnaire の略である.short 版と long 版がある.一週間の身体活動を思い出してもらい,仕事,移動,家庭,余暇の 4 つのドメインごとに身体活動をメッツ・分/週の単位に変換してサブスコアにし,最終的にそれらを合算して総身体活動量を算出する.

 総身体活動量および活動日数により 3 つのカテゴリーに分類される.低身体活動 (low), 中身体活動 (moderate), 高身体活動 (high) である.

関連記事

IPAQガイドラインをクエリで表現するには

国際標準化身体活動質問票のデータ処理および解析に関するガイドライン

Google FormからSQL Serverへデータを移行するには

Google Form の作成

 例によって,フォームの新規作成から.「マイドライブ」メニューをプルダウンし,「その他」から「Googleフォーム」を選ぶ.

Fig1. フォームの新規作成.

 すると,まっさらの状態のフォームが作られる.

Fig2. フォームが新規に作られた.

 最初のセクションにはアンケート名と解説を入力する.

Fig3. 最初のセクションにはアンケート名と解説を入力する.

 新規にセクションを挿入し,最初の質問の説明文を入力する.

Fig4. 新規にセクションを挿入する.

 再度セクションを挿入する.

Fig5. もう一度セクションを挿入する.

 セクションのタイトルに質問を識別できる質問番号を入力し,「質問」に質問の本文を入力する.この理由は,後で説明する.

 回答形式は「ラジオボタン」にする.最初の回答に「はい」を,次の回答に「いいえ(→第2部:移動の身体活動に関する質問へ)」と入力する.

Fig6. セクションのタイトルに質問番号を入力する.質問も入力する.

 セクション右下のドットが 3 つ縦に並んだアイコンをクリックし,「回答に応じてセクションに移動」を選ぶ.

Fig7. 回答に応じてセクションに移動.

 ラジオボタンの回答の右に「次のセクションに進む」というプルダウンメニューが現れる.

Fig8. 次のセクションに進む.

 新規セクションを挿入する.

Fig9. 新規セクション

 次の質問を入力する.例によってセクションのタイトルには質問番号を振り,質問本文を入力する.回答形式はラジオボタンとし,「回答に応じてセクションに移動」をチェックする.

Fig10.

 ここで「次のセクションに進む」のプルダウンメニューを押してみる.これまで作成したセクションが行き先として提示されている.

Fig11.

セクションは条件分岐の単位である

 察しの良い方ならもうお分かりだろう.これはフローチャートの条件分岐と同じ,つまりアルゴリズムである.

 セクションのタイトルに質問番号を振っておいたのは,「セクション〇〇に移動」の「〇〇」にあたる行き先を識別するためである.

行き止まりと無限ループに注意

 アルゴリズムであるなら,どの選択肢を選んでも必ず最後まで到達しなければならない.行き先のない選択肢を作ってはならない.

 また,選択肢によって以前に一度通ったセクションに戻すのは極めてまずい.これは無限ループを作ることであり,アンケートが永久に終わらない.プログラムを書いたことがある人なら経験があるだろう.

条件分岐の後は必ずセクションを独立させろ

 アンケートは基本的に回答必須である.条件分岐の後に同じセクション内に回答必須の質問があると,そこで回答者はフリーズしてしまうことになる.条件分岐の直後は必ずセクションを独立させよう.

 その意味で質問1b (Fig 10.) の選択肢の作り方はイレギュラーだ.選択肢は「あり」「なし」に限定して次のセクションで「日数」を選択させるほうが良い.

FIg12. 質問を分ける.

 こんな風に.

Fig13. 論理的に別の質問は別にしたほうが良い.

 原典は二つの質問を一つに押し込めており,変な形になってしまっている.本来ならこのような形にすべきだと思う.

 これは後でスプレッドシートで計算する時に効いてくる.一つの列に文字列と数値が混在していると,計算でエラーが発生する可能性がある.データベースに格納する際にも同じことが言える.一つのドメインに異なるデータ型のデータが格納されているのは異常事態だ.

回答形式の「時刻」を使う

 引き続き質問を作っていこう.作ってみて初めて分かったのであるが,フォームの中で「経過時間」を扱うことは意外に多い.「時刻」ではない.経過時間の扱いはこれまでとても面倒だった.記述式で入力規則を整数に限定する方法もあるが,フォームとして用意されているならそちらを使うべきだ.

Fig14. 「回答形式」から「時刻」を選ぶ

 回答形式から時刻を選ぶ.続けて入力規則を設定する.

Fig15. 入力規則は「経過時間」を選ぶ

最も重要なのはフローチャートをきちんと作ることだ

 抜けがないように,かつ同じことを 2 回聞かないようにする.フローチャートの作り方には人それぞれに合ったやり方があると思うが,複雑になるほど頭の中だけでは組み立てるのが難しくなってくる.

 IPAQ のフローチャートに関しては,Google FormからSQL Serverへデータを移行するにはを参考にしてほしい.

 頭の外に出すためには,印刷した質問を一つずつハサミで切り抜いてしまうのが良いのかもしれない. A3 の紙の上にでも置いて,鉛筆でロジックの流れを書いてみよう.頭の切れる友人か同僚にでも見てもらって,その流れに瑕疵がないか確認してもらうのも良いだろう.

Fig14. 最も簡単なフローチャート.

 上図の「判断」に当たるのが質問であり,答えが「はい」か「いいえ」の二択となっている.アルゴリズムとは基本的にこの繰り返しだ.質問を最も基本的な単位にまで分解し,答えを二択にまで突き詰めてしまうのである.

日本人よ,論理的に考えよ

 「こんな状況もあるじゃないか」「こういう場合はどうするんだ」と反論する向きもあるかもしれない.その場合は次の質問でまた基本的な質問をして条件を分岐させていく.仮にすべての質問が二択なら,質問の数 n に対して 2n 個の答えがありうる.

 日本人は論理的に考えるのが苦手だから,このようなデカルト的な二元論は苦手だ.「冷たい」とか「人間味がない」とか言って,世界を二つに切り分けていくのを避けようとする.

 だが,ちょっと待て.この論理的な考え方ができる人間が日本人に少ないから,日本はここまでダメになったんじゃないか?全てを曖昧にしたがる無能な老害にはさっさと引退してもらおう.

これからは「頭の良い子供」が増えていく

 2020 年度から小学校にプログラミング教育が導入されることが決まった.プログラミング言語の経験のある教員はまずいないと思われ,具体的に何をどうやるのかさっぱり分からない状況ではあるが,俺はあまり悲観していない.

 論理的に考えるとか,プログラムの動作を知るとか,いろいろ言われてはいるが,要は上で述べたように物事を秩序立てて考えられるような教育をしよう,ということだからだ.物事を曖昧にしたがる古き良き日本人が駆逐されていくことを切に願う.

 大事なことだからもう一度書く.

  • 質問は最も基本的な単位にまで分解する
  • 回答は漏れ・抜けがないようにする
  • 回答により分岐した流れは最後まで到達させる

 これは別にアンケートやプログラミングに限らない.人生におけるいろいろな問題もこれと同じアプローチで解ける.起こりうる回答をどこまで想定できるかという想像力の到達範囲の問題はあるかもしれないが.

 うかうかしてると,俺たちも若い世代に足をすくわれるかもしれないよ.

掌田津耶乃のGoogle Apps Script ビギナーズガイド.Googleフォームを扱う変数についても軽く触れている

“Google Formで条件分岐するアンケートを作成する” への2件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください