Actions

ExpressionScript Engine - Quick start guide/ja: Difference between revisions

From LimeSurvey Manual

(Created page with "出現条件の式は、下図の変数名の後の'''出現条件'''欄に示されています。weight、weight_units、height、およびheight_unitsの出現条件の値...")
No edit summary
 
(41 intermediate revisions by 2 users not shown)
Line 33: Line 33:




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


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




<div class="simplebox"> [[File:help.png]] '''Note:''' The above image comes from the [[Show logic file|survey logic file]] which allows you to look for syntax errors before activating the survey.</div>
<div class="simplebox"> [[File:help.png]] '''注意:''' 上記の画像は[[Show logic file/ja|アンケートロジックファイル]]のもので、アンケートを有効にする前に構文エラーを探すことができます。</div>




Relevance is shown and editable when:
出現条件は以下の場合に表示/編集できます。
*you wish to view/edit question-level relevance
*質問レベルの出現条件を表示/編集したい
*you wish to view/edit group-level relevance
*グループレベルの出現条件を表示/編集したい




===Viewing / Editing Question-Level Relevance===
===質問レベルの出現条件の閲覧/編集===




This equation computes the Body Mass Index (BMI). It is only asked if the person enters their height and weight.
この式は、体格指数(BMI)を計算します。身長と体重を入力した場合のみ計算されます。




Line 58: Line 58:




This is the edit screen for the "BMI" question.
こちらが"BMI"質問の編集画面です。




Line 64: Line 64:




Note that you do not use the curly braces when you enter a relevance equation.
出現条件式を入力するときは中括弧を使用しないようにしてください。




===Viewing / Editing Group-Level Relevance===
===グループレベルの出現条件の閲覧/編集===




Let's focus now on another example - a simple census survey. To download it, click on the following link: [[Media:ES survey - Cohabs.zip|Census survey example]].
ここでもう一つの例 - 単純な国勢調査に焦点を当てましょう。ダウンロードするには、[[Media:LS3_group_relevance.zip|国勢調査の例]]をクリックしてください。


The first page asks how many people live with you and stores that in the "cohabs" variable. This page is only shown if you have more than one cohabitant (it is shown for the second person cohabitating with you). Also, p2name, p2age. p2sum are displayed only if the question before each of them contains a response.
最初のページでは、同居人数を尋ね、"cohabs"変数に保存します。このページは、複数の同居者がいる場合にのみ表示されます(同居している2人目の人向けに表示されます)。また、p2name、p2age、p2sumは、それぞれの前の質問に回答がある場合にのみ表示されます。




Line 78: Line 78:




So, the group also has question-level relevance criteria, such that some questions only appear if you answered certain questions before them (e.g., p2age is displayed if p2name was answered). ES combines the Group and Question-level relevance for you. '''Questions in a group are only asked if the group as a whole is relevant. Then, only the subset of questions within the group that are relevant are asked.'''
ご覧のように、グループには質問レベルの出現条件もあり、こうした質問は、先行する質問に回答したときにのみ表示されます(例:p2ageはp2nameに回答したときだけ表示する)。ESは、グループと質問レベルの出現条件を結合します。'''グループ内の質問は、グループ全体が出現条件を満たす場合にのみ表示されます。さらに、グループ内で出現条件を満たす質問のみが表示されます。'''


Here is the screenshot for editing the group-level relevance of ''Cohabitant 2'':
''Cohabitant 2''のグループレベルの出現条件を編集する画面は次のとおりです。




Line 86: Line 86:




Note that you do not use the curly braces when you enter a relevance equation.
出現条件式を入力するときは中括弧を使用しないようにしてください。


==文言調整/パイプ==


==Tailoring/Piping==


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


ES lets you easily do simple and complex conditional tailoring. Sometimes you just need a simple substitution, like saying, "You said you purchased <nowiki>[</nowiki>Product]. What did you like best about it?". Sometimes you need conditional substitution like "<nowiki>[</nowiki>Mr./Mrs.] <nowiki>[</nowiki>LastName], would you be willing to complete our survey?". In this case, you want to use "Mr. or Mrs." based on the person's gender. Other times you need even more complex substitution (such as based upon a mathematical computation). ES supports each of these types of tailoring/piping.


===条件式===


===Conditional Equations===


 
体格指数BMIの例では、身長と体重の入力単位がメートル法であってもメートル法でなくても(cm/インチ、kg/ポンド)、BMIが計算できることを示しています。
The Body Mass Index example shows the ability to compute a person's BMI, even while letting them enter their height and weight in two different units (cms vs inches and kgs vs lbs):




Line 104: Line 103:




In this case, weightkg is {if(weightunits == "kg", weight, weight * 0.453592)}. This "if()" function means that if the subject enters the weight using kilograms, use that value, otherwise multiply the entered value (pounds is the alternative) by 0.453592 to convert it to kilograms. The heightm variable uses a similar approach to compute the person's height in meters (height in cms/100), even if he has entered his height in inches (1 meter=3.28084 inches).
ここで、weightkgは、{if(weightunits == "kg", weight, weight * 0.453592)}となっています。このif()関数では、キログラムで体重が入力されていた場合は入力値をそのまま採用し、それ以外の場合は入力値(単位はポンド)に0.453592をかけてキログラムに変換します。同様に、変数heightmは、身長がセンチメートル単位で入力されていても(センチメートル/100)、インチ単位で入力されていても(1メートル=3.28084インチ)メートル単位の身長を計算するようになっています。


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


Lastly, the report conditionally tailors the message for the subject, telling her what he entered. (e.g., "You said you are 2 meters tall and weight 70 kg.")
最後に、回答者に対し、入力した内容を条件付きでカスタマイズして表示します。("身長2メートル、体重70キロと回答しました。"


In the below image, weightstatus uses nested "if()" statements to categorize the person as underweight to severely obese. You can see its equation by checking its logic:
上の画像では、weightstatusは入れ子の"if()"ステートメントを使用し、その人物がやせているのか肥満なのかを分類します。その式をロジックを確認して見ることができます。




Line 116: Line 115:




From the edit window for this question, you can see two things:
この質問の編集ウィンドウから、次の2つのことがわかります。
#Tailoring must surround expressions with curly braces
#文言調整の式は中括弧で囲む必要があります
#Expressions can span multiple lines if, as in this case, you want to make it easier to read the nested conditional logic.
#式は、例えばこの例のように、ネストされた条件付きロジックを読みやすくするため、複数の行にまたがって記述することができます。




Line 124: Line 123:




===Tailored Questions, Answers, and Reports===
===文言調整された質問・解答・レポート===




<div class="simplebox">[[File:help.png]] '''Note:''' Dynamic tailoring may not work if answer options are made available in select boxes on the same question page. This results from the fact that tailoring inserts a <nowiki><span></nowiki> tag which is not valid inside select options.</div>
<div class="simplebox">[[File:help.png]] '''注意:''' 同じ質問ページの選択ボックスで回答オプションを利用できるようにすると、動的な文言調整が機能しないことがあります。これは、文言調整において、選択オプション内で使えない<nowiki><span></nowiki>タグを挿入してしまうことに起因しています。</div>


The BMI report looks like this:
BMIレポートは次のようになります。




Line 135: Line 134:




Here is the edit window for the same question.
同じ質問の編集ウィンドウです。




Line 141: Line 140:




Anything within curly braces is treated as an expression, being syntax-highlighted (color coded) in the prior image. If you have any typos (such as misspelled or undefined variable names or functions), ES would show an error. In our below example:
前出の画像のように、中括弧内のものは式として扱われ、構文強調表示(色分け)されます。タイプミス(変数名または関数の定義が誤っている、または定義されていないなど)があると、ESでエラーが表示されます。例では次のようになっています。
* heightunit.shown is an undefined variable name (it is actually heightunits.shown) and
* heightunit.shownは未定義の変数名(正しくはheightunits.shown)
* "rnd()" is an undefined function (the proper function name is "round()").
* "rnd()"は未定義の関数(適切な関数名は "round()"


In both cases, the errors are located within a red box to make it easier to spot and fix them.
どちらの場合も、発見・修正しやすくするため、エラーは赤いボックス内に配置されます。




Line 151: Line 150:




You can also see that you can quickly create complex reports, such as a table of entered values or tailored advice.
また、入力された値の一覧や文言調整されたアドバイスなど、複雑なレポートをすばやく作成できます。


Please remember that all tailoring must surround expressions with curly braces so that LimeSurvey knows which parts of the question are free text and which should be parsed by the ExpressionScript engine.
LimeSurveyが、質問のどの部分がフリーテキストで、どの部分がExpressionScriptエンジンで解析する必要があるかを判断するため、すべての文言調整式を中括弧で囲む必要があります。




==Validation==
==検証==




ES controls how most of the advanced question options work. These control aspects like min/max numbers of answers, min/max individual values, min/max sum values, and checking that entered values match specified string patterns. Any value in one of those fields is considered an expression, so you can have min/max criteria with complex conditional relationships to other questions.
ESは、高度な質問オプションがどのように機能するかを制御します。回答の数、個々の入力値や合計の最小値/最大値を制限したり、入力された値が指定された文字列パターンと一致していることを確認したりします。これらのフィールドの値はどれも式と見なされるため、他の質問と複雑な条件で組み合わせ、最小値/最大値の基準を設定することができます。


In all of these cases, since the advanced question attribute is always considered an expression, you do not use curly braces when specifying it.
こうしたケースでは、高度な質問オプションは常に式と見なされるため、中括弧を使用する必要はありません。


The [[ExpressionScript sample surveys|sample surveys]] page shows many working examples containing a variety of validation expressions.
[[ExpressionScript sample surveys/ja|サンプルアンケート]]ページには、様々な検証式を使用した実例がたくさんあります。


=Expression Manager - presentation=
=ExpressionScript - プレゼンテーション=




To find out more about the Expression Manager and how you can use different expressions to enhance your survey, please click on the following [https://manual.limesurvey.org/Expression_Manager_-_presentation link].
ExpressionScriptの詳細や、様々な式を使用してアンケートを強化する方法については、次の[https://manual.limesurvey.org/ExpressionScript_-_Presentation リンク]をクリックしてください。

Latest revision as of 01:28, 16 September 2020


クイックスタートガイド

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