Actions

アンケートロジックの確認 - 高度

From LimeSurvey Manual

This page is a translated version of the page Check survey logic - Advanced and the translation is 100% complete.


概要

複雑なアンケートを作成し、簡単に維持するための重要な機能として、アンケートロジックの確認があります。

アンケートを開始する前の開発やテストの段階で、アンケートのロジックを検証することは非常に重要です。複雑な出現条件式、文言調整、検証式を作成するならなおさらで、アンケートが問題なく実行できるように確認する必要があります。

この機能を使用すると、アンケート、グループ、質問の正確性を素早く検証することができます。アンケート関連設定の下にあるトップバーメニューオプションからアクセスできます。ツールメニューから利用できます。



上図からわかるように、このオプションは、アンケートの中で使用されている言語ごとに4回実行することができます。

説明

アンケートロジックの確認から、個々の質問やグループに設定したすべての項目(名前、テキスト、ヘルプ、条件/出現条件、検証ルール、既定値、サブ質問、回答など)が便利な表形式で表示されます。エラーがあればハイライトされ、質問やグループのID(または式の中で使われている変数)をクリックすると、ブラウザのタブが新たに開かれ、編集することができます。これにより、エラーを手早く修正し、アンケートを開始する前に正確性を確認するためのロジックチェックページが更新されます。

表示画面は、アンケートの設計とロジックが正しいかについてアンケート実施者や依頼者が確認できるようにできています。アンケートロジックを確認すると、実施中のアンケートのすべての式のキャッシュが更新されます。

以下の列があります。

  • # - グループ、質問の順番を示します。番号は0から始まります。
  • 名前 [ID] - グループ/質問/サブ質問のコード。これらのコードは、内の変数として使用できます。IDは、質問ID(QID)またはグループID(GID)です。このフィールドには、質問タイプ(複数選択[M]など)も表示されます。


式内で使用できる変数の詳細については、こちらのウィキサブセクションを参照してください。


  • 出現条件 [検証](デフォルト値) - 以下のとおり表示されます。
    • 出現条件 - 質問またはグループについて出現条件式が構文ハイライト表示されます。常に真(いかなるシナリオでも表示)である場合、値は1となります。
    • 検証 - ExpressionScriptは選択された質問属性に基づいて検証式を自動生成します(例:回答の最小値/最大値、合計値の最小値/最大値/一致、個々の値の最小値/最大値、正規表現による検証)。このセクションには、エラー(未定義の変数など)の有無を検出できるよう、生成された検証式が表示されます。
      • 質問レベルの検証では、上述の質問属性を検証するために必要な式が表示されます。
      • サブ質問レベルの検証では、array_filterarray_filter_excludeexclusive_optionの実装に必要な式が表示されます。
    • 既定値 - 質問に既定値がある場合、ここに構文ハイライト付きで表示されます(既定値が式であることもあるため)。
  • テキスト[ヘルプ](Tip) - 以下のとおり表示されます。
    • テキスト - グループ、質問、サブ質問、回答のテキスト。文言調整されていることを示すため、構文ハイライト表示されており、文言調整で使用するすべての変数が宣言されていることを確認することができます。
    • ヘルプ - 質問に対するヘルプを示しており、構文ハイライトされています。
    • Tip - これは質問属性に基づいて内部的に生成された検証ヒントです。これと同じものがすべてのアンケートスタイル、印刷可能なアンケート、データ入力画面で使われます。
    • 質問属性 - この質問に関連する質問属性の表です。属性が式の場合は正確性を検証するため構文ハイライト表示されます。

行は以下のルールによって色づけされています。

  • グループ - 背景がライトグレー
  • 質問 - 背景がライトグリーン
  • サブ質問 - 背景が淡い黄色
  • 回答 - 背景が白

回答には、出現条件欄に追加の属性が表示されます。

  • - 計算で使用する内部の既定値です。評価機能を使う場合は評価値となります。それ以外の場合では、回答の名前と同一になります。


対応するフィールドが空でない場合、アンケートの説明、ようこそメッセージ、終了メッセージ、完了URL、アンケートデータポリシーの通知、ラベルは、アンケートロジック確認(表の上)に表示されます。

使い方

ページ上部にサマリーメッセージが表示されます。何も問題ない場合は、"このアンケートで検出された構文エラーはありません。"、"このグループ"あるいは"この質問"には"構文エラーが含まれていません。"となっています。エラーがあれば、"X個の質問に修正する必要のあるエラーがあります。"となります。

構文エラーのある質問は左端の列(#)の背景が赤く色分けされます。また、質問に含まれる最小のエラー数を示す警告が名前[ID]欄に表示されます。以下のエラーが一般的です。

  • 未定義の変数 - 変数すべてを定義していない場合、またはarray_filter(またはarray_filterの回答オプションのセット)に誤記がある場合、検証質問にエラーが表示されることがあります。未定義の変数は赤色のテキストで示され、赤色の線で囲まれています。
  • 不正な構文 - 出現条件の式を使い始めると、括弧が多すぎたり少なすぎたりすることがあります。このような構文の問題は、赤色でハイライトされ、枠で囲まれて表示されます。このような赤色のボックスのテキストの上にマウスを置くと、ツールチップにエラーが表示されます。

ExpressScript構文における色づけ

条件と式では、見やすくするため構文が強調表示されています。

  1. 緑 / 水色: アンケート中の先行する質問を参照する変数
  2. 青: 関数
  3. 灰色: 文字列式
  4. 茶色: TOKEN式(参加者データ)
  5. 黒: 演算子

チェック項目:

  1. 紫: アンケート中の後続の質問を参照する変数。通常、これはエラーであり、確認する必要があります。
  2. 赤または赤枠: 存在しない変数、存在しない先行質問の参照、構文エラーであり、確認する必要があります。


未定義の変数

未定義の変数が使用されている場合、それぞれの変数名は赤で色分けされ、赤い線で囲まれています。変数名の上にマウスを置くと、"未定義の変数"と表示されます。



  Attention : LimeSurveyでは、同じ質問コードを使用した質問を作成できません。ただし、すでに定義されている質問と同じ質問コードを使用する質問グループまたは質問をインポートすると、アンケートの中で同様の質問コードが含まれることがあります。質問IDは異なるため、質問をインポートすることはできます。ただし、(RまたはSPSSで)さらに分析するため、アンケート結果をエクスポートする場合、質問コードが変数と見なされるので注意してください。



}}

不正な構文

式にまつわる間違いのほとんどは、誤った構文に関連しています。これは、アンケート管理者は、しばしば中括弧を追加しわすれたり、正しい括弧の使用しなかったり、間違って式を使用したりするためです。



構文ハイライトの使用例を示します。


エラーを含むカスタムJavaScript

JavaScriptのエラーもアンケートロジック確認でも強調表示されます。


編集と検証を手早く行う

構文ハイライトされたテキストにはすべてツールチップが埋め込まれており、クリックすることができます。

  1. ツールチップ
    • 関数 - マウスの上にカーソルを置くと、関数の目的と構文の定義を見ることができます。
    • 変数名 - マウスの上にカーソルを置くと、場所(グループ、質問、サブ質問)、質問のテキスト、質問に対して許容される回答が表示されます。
  2. アクション
    • 変数名 - 変数名をクリックすると新しいウィンドウが開き、質問を編集することができます。これによりロジックを簡単に確認・検証することができます。具体的には、質問の出現条件や検証基準の中の変数名をクリックすることにより、それらがどこからきてどのように使用されているかを確認することができます。


次の例は、ExpressionScriptサンプルアンケートから取得したものです。アンケート、説明、ダウンロードのスクリーンショットがあります。


ボディー・マス・インデックス

本例のスクリーンショットです。

これは、質問で並べ替えた体格指数(BMI)計算のビューです。体重、身長、BMIの出現条件式は、質問列に表示されます。



アンケートの概要については、アンケートロジックのページを確認してください。



このアンケート例は、"weightstatus"を生成するためのネストされたif()ステートメントの良い例でもあります。


ロジックのカスケード

本例のスクリーンショットです。

この例は、array_filterおよびarray_filter_excludeを使用すると自動的に生成されるサブ質問の検証ロジックを示しています。この例は、"その他"の値をどのように置き換えることができるか(Q02_otherの回答はQ01_otherとする)も示しています。



Q05は、Q01とQ02でarray_filterとarray_filter_excludeをそれぞれ同時に使用する例です。この例は、array_filterの機能をカスケードすることを示しています。質問とサブ質問レベルの検証基準を示す主な理由は、array_filterまたはarray_filter_excludeの変数名を指定する際に(またはフィルタリングされたサブ質問のリストに異なる変数名を使用している場合に)タイプミスをしていないことを確実にするためです。このようなタイプミスがあった場合、無効な変数名はすべて未定義であることを示す赤で表示され、すぐに問題を修正することができます。



動的な出現条件

これは、質問の表示・非表示を制御する"出現条件"の動的でカスケーディングされたロジックの例を示しています。この例はここからダウンロードできます。

また、特定の検証基準を満たしている場合にのみ質問が表示されることにも注意してください。例えば、ある人が「子供が2人いる」と回答したときに特定の質問に回答しなければならない場合などです(kid1とkid2)。


グループレベルの出現条件

この例では、ロジックファイルにグループレベルの出現条件がどのように表示されるかを示します。以下の例のスクリーンショットがあります。

ご覧のように、グループレベルの関連式(cohabs > 1 && p1_rel != "")はG-2の灰色のPerson 2の行に表示されます。

また、すべての質問が必須であることに気付くかもしれません。しかし、グループの出現条件が否であれば、グループに属するすべての質問も否であり、グループが出現条件を満たしていれば、グループ内の質問は回答必須となります。

先行する質問に対する回答が空でない場合にのみ表示される質問があることに注意してください。 p2_sexが記入されていない場合、必須の質問であっても、p2_nameは表示されません。 p2_nameが記入されていない場合でも、必須質問p2_ageは表示されません。これらの質問は"条件付きで必須"と見なすことができます。

さらに、ヒントメッセージも自動的に作成されることに注意してください。値の範囲(最小/最大)、合計値の範囲(最小/最大/一致)、回答数(最小値/最大値)などで構成されています(質問タイプとアクティブな属性に依存)。回答範囲を検証したいものの、とるに足らない検証のヒントをユーザーに表示したくないこともあるでしょう。このような場合、hide_tip質問オプションを使用することができます(この例では、ユーザーが年齢として範囲外の値を入力しない限り、その値が0から115の間に制限されていることをユーザーに伝えないようにします。p2_ageを参照してください)。


小数点としてのカンマ

LimeSurveyは実行時に小数点の区切り記号としてカンマを使用することが完全にサポートされていますが、設計時(高度な質問属性で最小値・最大値を設定するときなど)には小数点としてドットを使用する必要があることを示す例をここに示します。実際の例がこちらにあります 。

また、検証ロジックは有効な質問属性から自動的に作成されることを覚えておいてください。圧倒的な式に驚くかもしれませんが、心配する必要はありません。