条件の設定
From LimeSurvey Manual
LimeSurveyにおける条件の概要
LimeSurveyには、非常に強力な枝分かれ機能があります。質問ツールバーにある条件分岐設定 ボタンをクリックしてアクセスします。
このページでは以下の点について説明します。
- LimeSurveyで使える条件とは
- 条件を使ってできること・できないこと
- 単純・複雑な条件を設定するために理解すべきこと
ビデオによる手順の解説はこのチュートリアルを見てください。また、条件についてのアンケート例をダウンロードしてください。LimeSurvey_Survey_Setting_Conditions.zip
表示・非表示の分岐とジャンプ分岐
LimeSurveyでロジカルな枝分かれを設計することができます。つまり、ある質問について、"質問Yの回答がZのとき質問Xを表示する"といった条件を満たしたときだけ表示することができます。
表示・非表示の枝分かれロジックを実装する形になっています:
- アンケートの各質問について、条件を定義することができます( 条件が満たされれば質問が表示される)。
これは、他のソフトで実装されているようなジャンプ分岐ロジックとは異なるアプローチです。ジャンプ分岐ロジックでは、条件を満たすと他の質問にジャンプします(つまり両者の間の質問が非表示となる)。LimeSurveyではジャンプ分岐ロジックは実装されていません。質問をジャンプしたい場合は、表示したくない質問すべてに同じ条件を設定します。例えば、質問2に設定したいジャンプ条件が「質問1の回答が'はい'のとき質問5にジャンプする」である場合、
- 質問2、3、4に、「質問1の答えがはい'でない'」時だけ表示する、という条件を設定します。
LimeSurveyでは、(ジャンプ分岐ロジックを実装するため)同じ条件を複数の質問に簡単に設定できるよう、ある質問の条件を他の質問にコピーできます。上記の例では、まず質問2に条件を設定し、同じ画面でその条件を質問3、質問4にコピーします。
サポートされる条件のタイプ
基本的には、条件では、値を比較し、trueかfalseを返します。
比較に使える値は先行する質問への回答です。例えば、質問1への回答が'はい'ならば、質問2が表示されます。
条件エディターで、何が質問エントリーとして使用できるのか理解しておくことが重要です。
質問エントリーは以下の通りです。
- 単純な質問(配列を除くすべての質問タイプ)
- 例: テキスト、ラジオボタン、ドロップダウンリスト、複数選択質問
- 配列質問における列(二元スケール配列、複数の自由入力配列質問を除く)
- 例: 5点尺度配列、ラベル付き配列
- 二元スケール配列における左側、右側のエントリー
- 自由入力配列質問における各セル
- 定数
- 例: "以下の質問で18歳以上と回答したら"
- 参加者のプロフィールデータ: アンケート参加者テーブルのデータを使用するには"匿名回答"をNOとセットしなければなりません。 このオプションは、アンケート参加者設定タブにあります。
"等号"から"正規表現"まで、いくつかの比較演算子がサポートされています。
- "一致"、"不一致"を示す基本的な演算子
- 数値を入力する質問向けに、不等号に類する演算子も使えます
- 数値欄の比較では、数の大小で評価されます。例えば 2 < 10。
- テキストタイプの質問エントリーを使用する時は、条件では"2" > "10"と評価されます(文字順)
- 数字の質問や'数値のみ'属性を設定したテキスト質問では、数の大小で比較評価されます。
- 正規表現を利用した高度な比較演算子も使用することができます。
- パターンは'/'で囲む必要はありません。
- 例: [a-zA-Z]$
条件を組み合わせる方法
論理演算子AND ・ORを使用し単純な条件を組み合わせることによって複雑な条件を定義することができます。
ただし、LimeSurveyは、どの論理演算子が適用されるか自動的に決定することを理解してください。つまり、OR やAND 演算子は条件の文脈によって決まります。上記の例では、ただ一つのシナリオしかありません。これは、LimeSurveyがブール代数を使っているということであり、or演算子が先に"計算"されています。
複雑な条件については後述するとして、簡単なものから始めましょう。
条件設定
まず、条件設定にアクセスします。これを行うには、条件を適用する質問をクリックします。
次に、上部の質問バーにある条件を設定ボタンを探します。
アクセスすると次のページが読み込まれます。
条件設定パネルは、3つのセクションに分けられます。
条件設定ツールバー
ツールバーに以下の設定があります。
- この質問の条件を表示: このボタンをクリックすると、質問に適用される現在設定されている条件の概要が表示されます。
- 条件の編集と追加: 条件設定ボタンをクリックすると自動的に開くデフォルトのページです。(1)既存の条件をすべて表示するテーブルと、(2)条件の追加/編集メニューの2つの部分に分かれています。
- 条件をコピー: 最終的に質問Yを表示させるため、質問Xに同じ条件を適用することがあります。この場合は、条件をコピーをクリックします。質問に追加されている条件が表示されている新しいウィンドウが開きます(質問3とします)。質問5に追加するには、コピーしたい条件をチェックし、質問5を選択し、パネルの左下にある条件をコピーボタンをクリックします。詳細については、次のウィキセクションを参照してください。
- 保存して閉じる: 変更が完了したら、保存して閉じるをクリックして条件を保存します。
- 質問へ移動: 条件設定パネルを離れずに別の質問に移動するには、次のオプションを使用して、ドロップダウンリストから次に条件を適用する質問を選択します。ドロップダウンリストには、アンケート内で現在の質問の前後に表示される質問が表示されます。
- 閉じる: 変更を行わずにパネルを終了する場合は、設定/構成タブに直接移動して、目的のオプションを選択するか、画面の右上にある閉じるをクリックします。
現在設定されている条件の概要
このセクションには、既存のすべてのシナリオと質問の条件が記載されたテーブルが表示されます。ここからいくつかのアクションが実行できます。
- 右上の部分には、次の3つのアクションがあります。
- 素早く条件を追加 - 条件を追加するプロセスを素早く行います(すべてのオプションについては下記をご覧ください)
- シナリオ番号の付け直し - クリックすると、シナリオの番号が1から順に付け直されます。このオプションは、質問に2つ以上のシナリオが適用されている場合にのみ表示されます。
- 全ての条件を削除 - このアクションにより、質問に適用されている既存の条件とシナリオをすべて削除することができます。
- 各シナリオのID番号の他に、次の操作を実行できる3つのボタンがあります。
- シナリオの削除
- シナリオ番号の変更
- シナリオに条件を追加 - このボタンをクリックすると、シナリオに別の条件を追加できます。
- 各条件に対して2つのアクションを実行できます。
- 条件の削除
- 条件の編集 - クリックすると、条件メニューから条件を編集できます。
条件の追加/編集
画面の下部が「条件の追加/編集」メニューに割り当てられます。
LimeSurveyで条件がどのように機能するかを理解するため、初めに基本条件を提示します。
基本条件の定義
基本条件とは、ORやANDのような論理演算子を含まない単純な条件のことです。
以下のものから構成されます。
- 左辺: 比較される値
- 条件エディターのタブを選択することにより、比較される値のタイプを選択できます。先行する質問またはアンケート参加者属性のいずれかになります。
(前の質問タブから)質問項目を選択し、この質問で定義済みの回答が使用されている場合、これらの回答が比較値選択の予め定義されたタブに表示されます。
- 匿名の回答を使用しない
- アンケート参加者テーブルとクローズドアクセスを使用する
- 比較演算子。ドロップダウンリストから適用する比較演算子を選択します("より小さい"、"等しいかより小さい"、"等しい"、"等しくない"、"等しいかより大きい"、"より大きい"、"正規表現")。
- 右のオペランド: 比較値。条件エディターで適切なタブを選択すると、比較値タイプを選択できます。条件を作成するときは、予め定義された値(回答)、定数、質問、アンケート参加者属性、または正規表現を比較値として選択できます。
基本条件の例とその作成方法
- もし"質問'Gender'への回答が定義済みの回答'Male'であった場合"、質問'AAMN'を表示する
- 比較される値 = 質問'Gender'の回答
- 比較演算子 = 等しい
- 比較する値 = 定義済みの回答コード(この場合は'Male')
- もし "質問'Age'への回答が'18'以上だったら"、質問'Alcohol'を表示する
- 比較される値 = 質問'Age'の回答
- 比較演算子 = 等しいかより大きい
- 比較する値 = 定数'18'
- もし"質問'BirthDate'の回答が2000-01-01より後の場合"、質問'Alcohol'を表示する
- 比較される値 = 質問'BirthDate'の回答
- 比較演算子 = 等しいかより大きい
- 比較する値 = '2000-01-01'(定数フィールドのフォーマットは2000-01-01)
- もし"参加者属性"の'DrinkingHistory'が'Yes'である場合"、質問'Alcohol'を表示する
- 比較される値= アンケート参加者テーブルの'DrinkingHistory'の値
- 比較演算子 = 等しい
- 比較する値 = 定数'Yes'
LimeSurveyにおける条件とシナリオ
既定の条件の組み合わせ
前述の通り、LimeSurveyでは、'文脈'に応じて条件と条件の間に適用する論理演算子(ANDまたはOR)が自動的に決まります。
LimeSurveyでは、独自のロジックにより基本条件の順番を並べ替えるため、基本条件を定義した順番は考慮されないことに注意してください。
詳しくみていきましょう。2つのルールを常に記憶しておく必要があります。
- 第1のルール: 比較される値が同じ条件は、ORで組み合わされる
- 第2のルールSecond rule: 比較される値が異なる条件は、ANDで組み合わされる
ルール1: 比較される値が同じ条件は、ORで組み合わされる
共通の比較される値を使う条件がある場合は、論理和(OR)として組み合わされます。条件が1つの質問に対する複数の回答に適用される場合、これが該当します。たとえば、同じ質問に属する3つの回答に条件を適用した場合 - 質問'FavColour'の 回答が'green'に等しい場合、または質問'FavColour'の回答が'red'に等しい場合、または質問'FavColour'の回答が'blue'の場合、質問'生年月日'がアンケート回答者に表示されます。
ルール2: 比較される値が異なる条件は、ANDで組み合わされる
比較される値が異なる条件がいくつかある場合、これらは論理積(AND)として組み合わされます。たとえば、先行する別々の質問に基づく条件があるケースを以下に示します。"もし質問'Alcohol'への回答が'Y'であり、かつ質問'Gender'への回答が'F'である場合"、質問'Alcoholconsumption'がアンケート回答者に表示されます。
複数選択質問
複数選択およびコメントつき複数選択の質問タイプでは、2通りの表示があります。
- チェックボックスのグループでは、すべての選択肢について条件を設定できます。
- シングルチェックボックスでは、各々のチェックボックスについて条件を設定できます。
チェックボックスのグループによる設定
ここでは、2種類の設定方法の違いをよりよく理解するための例を中心に説明します。回答者が質問'MultipleOrganizations'でリストされている比較される回答の少なくとも1つをチェックする場合にのみ、質問'Pointchoice'を表示したいとします。
上記のように、チェックボックスのグループによる設定では、回答すべてに条件を設定することができます。したがって、以下の比較する値として「責任」に関するオプションのみが選択されます。
見てわかるように、条件は、チェックボックスのグループによる選択が論理和(OR)として組み合わされます。
複数選択質問でAND条件を設定する
さて、同様の例に焦点を当てましょう。しかし、今回私たちは、最も活発なメンバーにだけさらなる質問をしようとしています。このため、それぞれのチェックボックスに基づいて条件を個別に設定できるシングルチェックボックスによる設定方法を使用します。
この例では、AとBがチェックされている場合、質問Xが表示されます。
完了したら、2つの条件がANDされていることがわかります。
つまり、比較された値の両方(選択されたサブ質問)が満たされない限り、質問は表示されません。
シナリオを使う - 質問をまたがるOR条件
複数の質問に対して(つまり、比較される値が異なる場合)、ORで組み合わせる条件を設定したいことがあるでしょう。この場合は、シナリオを使います。
シナリオの定義
シナリオとは、条件を手動でグループ化したものであり、ある条件が他のシナリオの条件とは別に評価されます。いくつかのシナリオを組み合わせた複雑な条件は、そのうちの1つのシナリオが満たされた場合にのみ満たされます。換言すれば、シナリオは、上記のルールでいえば条件の論理的グループ化であり、複雑な条件を構成するため論理和として組み合わされます。
上記は、すべてのシナリオにある条件に適用されます。既定では、すべての新しい条件は既定のシナリオ内に作成されます。このシナリオでは、識別子として数字'1'が使用されます。新しい条件を作成するときに、それらを既定のシナリオに追加するかどうかを選択できます。シナリオを変更するには、別の識別子を使用します。
質問を他のシナリオに追加する
条件を作成(または編集)するときは、シナリオの追加ボタンをクリックするだけで、条件が保存されるシナリオを変更できます。
ご覧のとおり、既定のシナリオでは識別子'1'が使用されます。別のシナリオに条件を追加するには、ボックスに異なる番号を入力して識別子を変更します。
シナリオのID番号自体は重要ではなく、シナリオごとに連続しないIDを持つことができます。
シナリオに割り当てられた番号を変更するには、このアイコンをクリックして新しいIDをシナリオに割り当てます。
- 印刷可能なバージョンのアンケートを使用するとき、シナリオが表示される順序を決定する
- 2つのシナリオから条件をマージする(例えば、シナリオ10をシナリオ1とマージするため、シナリオ10の番号を1に付け替える)
例: 3つのシナリオを作成する
3つのシナリオを作成するには、少なくとも3つの条件が必要で、それぞれに異なるシナリオIDを設定する必要があります。設定すると、シナリオは'OR'演算子を介して相互に接続されます。たとえば、次のようになります。
同一シナリオにおけるANDとOR
同じシナリオの中で、ANDとORが混在することがあります。
LimeSurveyでは、最初にORを適用します。詳細については、Wikipediaのブール代数に関する記事を参照してください。
ただし、出現条件の式のフィールドで演算の順序を確認することもできます。上記の例では、出現条件の式が以下のように強調表示されています。
お分かりのように、最初に"演算"すべきものをソフトウェアに知らせるため、論理和演算の中に括弧が追加されています。
条件をコピーする方法
条件コピー機能は、質問5に適用したものと同じ一連の条件を質問10にも適用するような場合に使用できます。この方法を使えば、前の質問に適用した条件を手動で再作成する必要はありません。
条件のコピーを開始するには、最初に、条件が適用されている質問を選択する必要があります(この例では質問 'LowQ')。次に、コピーする条件を選択し、条件を追加する質問を選択します(ここでは質問 'Alcohol')。
あるシナリオの下にある一連の条件を同じシナリオID番号または別のシナリオID番号に属する質問にコピーして適用する場合は、条件コピー機能の仕組みに注意してください。可能性のあるケースについて、次の例を確認してください。
- 質問Xのシナリオ1の条件A・条件B、シナリオ7の条件C・条件Dを質問Yにコピーする
- 質問Yにはすでにシナリオ1の条件A・条件C、シナリオ6の条件E、シナリオ8の条件Fがある
- コピーすると、質問Yには以下の条件が設定される
- シナリオ1: 条件A、条件B、条件C -> 条件Aは質問Yにすでにあるのでコピーされず、条件Bだけコピーされる
- シナリオ6: 条件E -> 影響なし
- シナリオ7: 条件C、条件D -> 2つの条件を持つ新たなシナリオが作られる
- シナリオ8: 条件F -> 影響なし
条件のリセット
アンケートの条件をすべてリセットするには、アンケート関連の設定をクリックし、上部ツールバーのツールから条件のリセットをクリックします。
次のページで続行するか確認すると、すべての条件が削除されます。
注意点
一般的な検討事項
質問の条件を設定する前に覚えておくべき基本的なルールがいくつかあります。
- 質問に対して1つの条件が設定されると、その条件が満たされない限り、その質問は表示されません。
- 条件は、条件が設定されている質問の前に表示される質問に基づいてのみ設定できます。
- 条件を作成した後にアンケートの質問の順序を変更した場合、その変更によって条件が壊れても、LimeSurveyは警告しません。アンケートの質問とグループの順序に満足するまで、条件を確認しておく必要があります。
- アンケートを有効にした後でも条件を変更することができます。ただし、"一貫性チェック"が適用されていないので、慎重に行う必要があります。
'回答なし'の定義済み回答を使う条件
"質問'Gender'への回答が'回答なし'だったら質問'FavColour'を表示する"という条件は、"回答を送信していない回答者に、質問'Gender'が表示されたら、質問'FavColour'を表示する"ということになります。
連鎖する条件
自分自身に条件がある質問に条件を設定すると、予想しない動きになる可能性があります。たとえば、よくある副作用として、連鎖する条件を持つグループ内のすべての質問を非表示にする場合、以下で説明するように条件を修正しないと、グループヘッダーが表示されてしまいます。
上記の例では、回答者が質問'AAMN'に'No (N)'と回答した場合、質問'アルコール'が表示されます。ただし、回答者が質問'Gender'の回答を'Male (M)'にしなかった場合、最後に質問'AAMN'が表示されないことがあります。このシナリオでは、'Male (M)'が選択された場合、'Alcohol'の質問は表示されません。
質問'Alcohol'を表示するには、前の質問から編集中の条件まで、条件をコピーする必要があります。質問'Alcohol'を表示するには、次の条件を設定する必要があります。
- 'Gender'に'Male (M)'と回答したら、'AAMN'を表示する
- 'Gender'に'Male (M)'と回答し、かつ 'AAMN'に is 'No (N)'と回答したら、'Alcohol'を表示する
修正後、'Alcohol'の正しい条件は次のようになります。
したがって、多数の条件がある複雑なアンケートを設計している場合は、数多くの結果の組み合わせが思いどおりになるまでアンケートをテストしてください。
制限事項とその回避方法
プログレスバー
条件によって多くの質問がスキップされるアンケートを作成した場合、プログレスバーがいくつもの質問を飛び越したり、アンケートが50%で終了したりします。
このような動作を避けるため、スキップされうる質問は、表示される質問の間に配置する必要があります。このようにすれば、回答ごとに1つまたは2つの質問だけがスキップされます。
たとえば、質問1(はい/いいえ)に基づいて、質問1の回答が'はい'の場合に14の質問(2A〜15A)が表示され、'いいえ'の場合は2B〜15Bが表示されるとします。
ひとつのグループに質問を2A、2B、3A、3Bのように並べれば、ほぼ正しいプログレスバーになります。一方、2A、3A、4A、[...]、2B、3B、4Bのようにすると、最初の質問に対する回答に応じて、0〜50%の間または50%〜100%の間で推移するプログレスバーが表示されます。
日付質問タイプの定数比較値の設定
比較値として定数を定義するには、日付の内部表現(YYYY-MM-DD)を使用する必要があります。
複数選択の質問タイプで"その他"オプションの条件を設定する
複数選択の質問タイプでは、"その他"を有効な選択肢として使用できますが、条件を設定することはできません。たとえば、質問1が"どの色がよいですか?"で、回答のチェックボックスの選択肢が青、黒、その他とします。参加者が青を選択すると、条件を設定できます。参加者が黒を選択した場合は、別の条件を設定できます。ただし、参加者が"その他"を選択してテキストボックスに何かを入力する場合は、条件を設定することはできません。LimeSurveyでは、参加者が"その他"の条件を選択したかどうかを認識しません。これはバグではなく、制限です。
この質問タイプの'その他'のチェックボックスは、実際のフィールドには記録されていません。したがって、ユーザーが質問の'その他'の部分に答えたかどうかを知る唯一の方法は、その他の入力フィールドに書き込まれたテキストの値が空であるかどうかをチェックすることです。
しかし、複数選択質問の処理方法により、 'その他'のテキスト入力フィールドのテストはこれまで実装されていません。
回避策として、これらの質問タイプの'その他'機能を使うのではなく、'その他'という明示的な回答オプションを追加する方法があります。次に、この'その他'チェックボックスがクリックされた場合に表示される短いテキスト質問を追加します。
ブール式に括弧を使用する方法
できません。
次のような設定をしたい場合、
(condition1 OR condition2) AND (condition3 OR condition4),
以下のように設定する必要があります。
(condition1 AND condition3) OR
(condition1 AND condition4) OR
(condition2 AND condition3) OR
(condition2 AND condition4)