Actions

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

From LimeSurvey Manual

Revision as of 00:28, 16 September 2020 by Bravehorse (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


クイックスタートガイド

LimeSurvey内で、ExpressionScript(略称: ES)を使用して、さらにアンケートをカスタマイズできます。 注: "ExpressionScriptは、以前のバージョンでは式マネージャー(EM)という名前でした。式マネージャーという表記があった場合は、ESの旧称であるとご理解ください。"

ESを使用して、下記の指定ができます。

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

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

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

以下のセクションで、ESを使う主な場面を紹介します。


出現条件(ナビゲーション制御/分岐)

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

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




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

出現条件の式は、下図の変数名の後の出現条件欄に示されています。weight、weight_units、height、およびheight_unitsの出現条件の値はすべて1(既定値)であり、これらの質問は常に表示されます。ただし、BMIの出現条件は{!is_empty(height) and !is_empty(weight)}となっていて、回答者が身長と体重の両方の値を入力した場合にのみBMIが計算されることを意味します(これにより、ゼロエラーが発生するリスクを回避します)。また、質問"Report"は、回答者が4つの質問(身長、身長単位、体重、体重単位)のすべてに回答した場合にのみ表示されます。



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


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

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


質問レベルの出現条件の閲覧/編集

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



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



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


グループレベルの出現条件の閲覧/編集

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

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



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

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



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

文言調整/パイプ

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


条件式

体格指数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レポートは次のようになります。



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



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

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

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



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

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


検証

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

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

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

ExpressionScript - プレゼンテーション

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