Show logic file/ja

=概要=

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

アンケートを開始する前の開発やテストの段階で、アンケートのロジックを検証することは非常に重要です. 複雑な関連式、カスタマイズ、検証式を作成するならなおさらで、アンケートが問題なく実行できるようにする必要があります.

この機能では、アンケート、グループ、質問の正確性を手早く検証できます. アンケート選択後、アンケートのプロパティを通じて利用することができます.



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

=説明=

アンケートロジックファイルでは、個々の質問に設定したすべて（名前、テキスト、ヘルプ、条件／関連、検証ルール、既定値、サブ質問、回答など）が便利な表形式で表示されます. エラーがあればハイライトされ、質問やグループのID（または式の中で使われている変数）をクリックすると、ブラウザのタブが新たに開かれ、編集することができます. これにより、エラーを手早く修正し、アンケートを開始する前にアンケートが正確に動作するよう、ロジックファイルが更新されます.

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

以下の列があります.


 * # - グループ、質問の順番を示します. 番号は0から始まります.


 * 名前 [ ID] - グループ／質問／サブ質問のコード. これらのコードは、式内の変数として使用できます. IDは、質問ID（QID）またはグループID（GID）です. このフィールドには、質問タイプ（複数選択[M]など）も表示されます.


 * 出現条件 [ 検証] （既定値） - 次のことを示す.
 * 出現条件 - その質問またはグループの構文強調表示された出現条件式で、値は1です.
 * 検証 - 式マネージャーは質問の属性（回答数の最小値／最大値、合計値の最小値／最大値／一致、個々の値の最小値／最大値、正規表現による検証など）に応じて自動的に検証式を生成します. このセクションでは、生成された検証式を示していますので、未定義の変数などのエラーがあるかどうかを検出できます.
 * 質問レベルの検証は、上記の質問属性を検証するために必要な式を示します.
 * サブ質問レベルの検証は、array_filter、array_filter_exclude、exclusive_optionの実現に必要な式を示します.
 * 既定値 - 質問に既定値がある場合は、構文強調表示されています（既定値が式である可能性があるため）.


 * テキスト [ ヘルプ] （TIP） - 以下のものが表示されます.
 * テキスト - グループ、質問、サブ質問、または回答のテキスト. 組み込まれている文言調整を表示するために構文が強調表示されているので、文言調整に使用するすべての変数が宣言されているか確認できます.
 * ヘルプ - これは、質問のヘルプテキストを示しており、構文強調表示されています.
 * TIP - 質問の属性に基づいて、内部で生成された検証のヒントです. このヒントは、すべてのアンケートスタイルと、印刷可能なアンケートおよびデータ入力画面でも使用されます.
 * 質問属性 - この質問に関連するすべての質問属性の表です. 式かもしれない属性は構文強調表示されているため、正しいかどうか検証できます.

行は以下のルールによって色づけされています.
 * グループ - 背景がライトグレー
 * 質問 - 背景がライトグリーン
 * サブ質問 - 背景が淡い黄色
 * 回答 - 背景が白

回答には、関連欄に追加の属性が表示されます.
 * 値 - 計算で使用される内部の既定値です. 評価機能を使う場合、評価値となります. それ以外の場合では、回答の名前と同一になります.

=使い方=

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

構文エラーがある質問は、左端の列に赤で表示されます（例：Q-1）. 以下のエラーが一般的です.
 * 変数名が正しくない - 質問コードに英数字以外の文字が含まれているか、アンケートで複数回使用されている場合はエラーです. しかし、古いバージョンをサポートするため、これは現在許容されています. そのような質問は、紫色で囲まれた赤いqcode名で表示されますが、質問自体はエラーとしてフラグが立てられません.
 * 未定義の変数 - すべての変数を定義していないか、array_filter名の誤記がある（またはarray_filterと回答オプションのミスマッチ）場合は、検証質問のいくつかにエラーが表示されます. 未定義の変数は赤色のテキストで示され、赤色の線で囲まれています.
 * 構文誤り - 関連式を使い始めると、カッコが多すぎたり少なすぎたりすることがあります. このような構文上の問題は、赤でハイライト表示され、囲まれています. この赤いボックスのテキストの上にマウスを置くと、ツールチップにエラーの内容が表示されます.


 * 未定義の変数 - 変数すべてを定義していない場合、またはarray_filter（またはarray_filterの回答オプションのセット）に誤記がある場合、検証質問にエラーが表示されることがあります. 未定義の変数は赤色のテキストで示され、赤色の線で囲まれています.


 * 不正な構文 - 出現条件の式を使い始めると、括弧が多すぎたり少なすぎたりすることがあります. このような構文の問題は、赤色でハイライトされ、枠で囲まれて表示されます. このような赤色のボックスのテキストの上にマウスを置くと、ツールチップにエラーが表示されます.

未定義の変数
変数名は赤で色分けされ、赤い線で囲まれます. 変数名の上にマウスを置くと、 "未定義の変数"と表示されます.



}}

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





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

エラーを含むカスタムJavaScript
アンケートにカスタムJavaScriptが含まれている場合は、このような状況に遭遇することがあります. この場合、質問にエラーがある旨のフラグが立てられますが、"赤枠"の変数名は表示されません.



=編集と検証を手早く行う=

すべての構文強調表示されたテキストには、ツールチップが埋め込まれており、クリック可能です.
 * 1) ツールチップ
 * 2) *関数 - マウスカーソルを合わせると、関数の目的と定義を見ることができます.
 * 3) *変数名 - マウスカーソルを合わせると、質問の位置（グループと質問の順番）、質問テキスト、および許容される回答が表示されます.
 * 操作
 * 1) *変数名 - 変数名をクリックすると、質問を編集できる新しいウィンドウが開きます. これにより、ロジックのナビゲートと検証が簡単になります. 関連や検証条件の変数名をクリックするだけで、どこから来たのか、どのように使用されているのかを確認できます.

=スクリーンショット=

次の例は、式マネージャーのアンケート例ExpressionScript Sample Surveysから取得したものです. アンケート、説明、ダウンロードのスクリーンショットがあります.

ボディー・マス・インデックス（BMI）
本例のスクリーンショットです.

これは、体格指数計算の質問並べ替え画面です. 関連式（変数名の後ろ、大括弧の中で、体重は[1]、BMIは[ !is_empty(height) && !is_empty(weight)]）が示されています. カスタマイズする質問のテキストを見ることもできます.



ロジックファイルには、質問タイプ、サブ質問と回答オプションのリスト、すべての質問属性を含む追加の情報が表示されます.



これは、weight_statusを生成するためのネストされたifステートメントの良い例です.



ロジックのカスケード
本例のスクリーンショットです.

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



この例のQ05は、それぞれQ01とQ02のarray_filterとarray_filter_excludeを同時に使用しています. これは、この例がarray_filterのカスケーディングがどのように機能するかを示しています. 質問とサブ質問レベルのVALIDATION基準を示す主な理由の1つは、array_filterまたはarray_filter_exclude変数名を指定する（または、フィルタリングされたサブ質問のリストに異なる変数名を使用する）際にタイプミスしていないことを確認することです. そのようなタイプミスがあれば、無効な変数名はすべて赤色で表示され、未定義であることがわかるので、すぐに問題を修正できます.



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

また、kid1〜kid3の質問は必須であることに注意してください. しかし、質問の関連が否である場合、必須要件は無視されます（関係のない質問に答えるよう強制する必要はないからです）. これらの質問は"条件付き必須"とみなすことができます.



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

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

また、すべての質問が必須であることに気付くかもしれません. しかし、グループの関連が否であれば、すべての質問も否であり、グループが関連していれば、グループ内の質問は実際に必須となります.

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

さらに、TIPメッセージも自動的に作成されます. 値の範囲（最小／最大）、合計値の範囲（最小／最大・等しい）、回答の数（最小／最大）などで構成されます. 回答範囲を検証するものの、ユーザーにはぼんやりした検証のヒントを見せたい場合があるかもしれません. そのような場合は、hide_tipという高度な質問オプションを使用することができます（この場合、おかしな値を入力しようとしない限り、年齢が0から115の間でなければならないことはユーザーに知らせません）.



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

また、高度な質問属性から自動的に検証ロジックが作成されます. 圧倒的な式に驚くかもしれませんが、心配する必要はありません.