Actions

ExpressionScript エンジン - クイックスタートガイド

From LimeSurvey Manual

Revision as of 00:04, 20 March 2019 by Bravehorse (talk | contribs) (Created page with "#'''ナビゲーション/分岐''' - 回答者ごとに質問が表示される順番を変更します。 #'''文言調整/パイピング''' - 質問の文言調整(先...")


クイックスタートガイド

LimeSurveyでは、式マネージャー(EM)を使ってアンケートをカスタマイズすることができます。

EMを使用して以下の指定ができます。

  1. ナビゲーション/分岐 - 回答者ごとに質問が表示される順番を変更します。
  2. 文言調整/パイピング - 質問の文言調整(先行する回答の引用、数や性別による語句の変化など)、カスタムレポートの生成(評価点数、アドバイスの提示など)
  3. 検証 - 回答が条件(最大値、最小値、入力パターンなど)を満たすようにします。

式マネージャー(EM)では、各機能のロジックを指定する直感的な方法が提供されています。標準的な数式として書くことができるものは、ほとんどが有効な式になります。

EMは現在、70の関数が利用でき、より多くの機能をサポートするよう、簡単に拡張することができます。また、(SGQA名ではなく)人間が読める変数名を使用して変数にアクセスすることもできます。

以下のセクションで、式マネージャーを使う主な場面を紹介します。


関連(ナビゲーション制御/分岐)

アンケートによっては、"Gotoロジック"を使用して、質問1でCと答えた場合は質問5にジャンプしたりします。このアプローチは、検証が難しいため、大きな制約があります。また、質問を並べ替えるときにロジックが壊れやすくなってしまいます。一方、EMでは、質問が有効かどうかを決めるすべての条件を、ブール値の出現条件式を使用して指定します。質問が出現条件を満たす場合は質問が表示され、それ以外の場合は「適用外」となり、データベースにはNULL値が格納されます。

注意: これは条件エディターで実行できるものと似ていますが、EMではより複雑で強力な条件を簡単に指定でき、さらにSGQA名ではなく変数名を使用できます。




出現条件の概念をよく理解するために、アンケート回答者の体格指数(BMI)を計算する以下のアンケートに焦点を当ててみましょう。本例をダウンロードするには、次のリンクをクリックしてください。体質指数調査の例

出現条件の式は、変数名の後のRelevance列に次のように表示されます。 weight、weight_units、height、およびheight_unitsの出現条件はすべて1(既定値)であり、これらの質問は常に表示されます。一方、BMIの出現条件は{!is_empty(height) and !is_empty(weight)}です。つまり、BMIは、回答者が身長と体重の両方の値を入力した場合にのみ計算されます(ゼロエラーを防止するため)。また、"レポート"という質問は、回答者が4つの主な質問(身長、身長の単位、体重、体重の単位)にすべて答えた場合にのみ表示されます。



注意: 上記の画像はアンケートロジックファイルのもので、アンケートを有効にする前に構文エラーを探すことができます。


出現条件は以下の場合に表示/編集できます。

  • 質問レベルの出現条件を表示/編集したい
  • グループレベルの出現条件を表示/編集したい


質問レベルの関連の閲覧/編集

この式は、体格指数(BMI)を計算します。身長と体重を入力した場合のみ計算されます。



こちらが"BMI"質問の編集画面です。



出現条件式を入力するときは中括弧を使用しないようにしてください。


グループレベルの関連の閲覧/編集

ここでもう一つの例 - 単純な国勢調査に焦点を当てましょう。ダウンロードするには、国勢調査の例をクリックしてください。

最初のページでは、同居人数を 尋ね、"cohabs"変数に保存します。このページは、複数の同居者がいる場合にのみ表示されます(同居している2人目の人向けに表示されます)。また、p2name、p2age、p2sumは、それぞれの前の質問に回答がある場合にのみ表示されます。



ご覧のように、グループには質問レベルの出現条件もあり、こうした質問は、先行する質問に回答したときにのみ表示されます(例:p2ageはp2nameに回答したときだけ表示する)。EMは、グループと質問レベルの出現条件を結合します。グループ内の質問は、グループ全体が出現条件を満たす場合にのみ表示されます。次に、グループ内で出現条件を満たす質問のみが表示されます。

Cohabitant 2のグループレベルの出現条件を編集する画面は次のとおりです。



出現条件式を入力するときは中括弧を使用しないようにしてください。


カスタマイズ/パイプ

EMを使用すると、単純な、または複雑な条件によって文言を変えることができます。例えば、"[製品]を購入したと回答しました。よかった点は何ですか?"のように、単純な「置き換え」が必要な場合があります。また、"[Mr./Mrs.] [LastName]、アンケートを完了してもよろしいですか?"のように、条件付きの置き換えが必要な場合もあります。この場合、回答者の性別に基づいてMr.かMrs.を使用します。また、例えば、数学的計算に基づいてさらに複雑な置き換えが必要になることもあります。EMは、このような文言調整/パイプをサポートしています。


条件式

体格指数BMIの例では、身長と体重の入力単位がメートル法であってもメートル法でなくても(cm/インチ、kg/ポンド)、BMIが計算できることを示しています。



ここで、weightkgは、{if(weightunits == "kg", weight, weight * 0.453592)}となっています。このif()関数では、キログラムで体重が入力されていた場合は入力値をそのまま採用し、それ以外の場合は入力値(単位はポンド)に0.453592をかけてキログラムに変換します。同様に、変数heightmは、身長がセンチメートル単位で入力されていても(センチメートル/100)、インチ単位で入力されていても(1メートル=3.28084インチ)メートル単位の身長を計算するようになっています。

BMIは、{weightkg / (heightm * heightm)}として計算されます。

最後に、回答者に対し、入力した内容を条件付きでカスタマイズして表示します。("身長2メートル、体重70キロと回答しました。")

上の画像では、weightstatusは入れ子の"if()"ステートメントを使用し、その人物がやせているのか肥満なのかを分類します。その式をロジックを確認して見ることができます。



この質問の編集ウィンドウから、次の2つのことがわかります。

  1. 中括弧で表現を囲む必要があります
  2. 式は、例えばこの例のように、ネストされた条件付きロジックを読みやすくするため、複数の行にまたがって記述することができます。



カスタマイズされた質問・解答・レポート

注意: 同じ質問ページの選択ボックスで回答オプションを利用できるようにすると、動的な文言調整が機能しないことがあります。これは、文言調整において、選択オプション内で使えない<span>タグを挿入してしまうことに起因しています。

BMIレポートは次のようになります。



同じ質問の編集ウィンドウです。



中括弧内のものは式として扱われ、構文強調表示(色分け)されます(前出の画像)。タイプミス(変数名または関数の定義が誤っている、または定義されていないなど)があると、EMにエラーが表示されます。例では次のようになっています。

  • heightunit.shownは未定義の変数名(正しくはheightunits.shown)
  • "rnd()"は未定義の関数(適切な関数名は "round()" )

どちらの場合も、発見・修正しやすくするため、エラーは赤いボックス内に配置されます。



また、入力された値の一覧やカスタマイズされたアドバイスなど、複雑なレポートをすばやく作成できます。

質問のどの部分がフリーテキストで、どの部分が式マネージャーで解析する必要があるかをLimeSurveyが判断するため、すべての式を中括弧で囲む必要があります。


検証

EMは、高度な質問オプションがどのように機能するかを制御します。回答の数、個々の入力値や合計の最小値/最大値を制限したり、入力された値が指定された文字列パターンと一致していることを確認したりします。いつものように高度な質問オプションの入力を行いますが、これらのフィールドの値はどれも式と見なされるため、他の質問と複雑な条件で組み合わせ、最小値/最大値基準を設定することができます。

これらのすべてのケースでは、高度な質問オプションは常に式と見なされるため、中括弧を使用することはありません。

サンプルアンケートページには、様々な検証式を使用した実例がたくさんあります。

式マネージャー - プレゼンテーション

式マネージャーの詳細や、様々な式を使用してアンケートを強化する方法については、次のリンクをクリックしてください。