対面実験では,同じ実験プログラムを使うけれども,参加者ごとに特定の条件に分けたいという場合があります。対面実験なので実験者が最初のプログラムに条件を割り当てるとよいでしょう。例えば,HTML Pageコンポーネントに「グループ」とか「条件」という入力欄を作って,「1」とか「2」とかを実験者が入力し,「1」なら統制条件,「2」なら実験条件を実施するようにします。可能なら,参加者番号をデータのすべての行に入れたい のように条件もすべての行に入れたいと思います。

1つ前のコンポーネントで入力された変数はthis.state.variableで取得できます。なので,以下のような構成がよいでしょう。ポイントは条件を入力するコンポーネントのすぐ後にLoopコンポーネントを配置することです。そして,条件を入力するコンポーネントはSequenceコンポーネントなどにいれないでください。Sequenceコンポーネントに入れると,Loopコンポーネントの直前が条件を入力するコンポーネントではなく,Sequenceコンポーネントになってしまうので,this.state.variable で取得される値がSequenceコンポーネントのものになってしまいます。

  1. 条件を入力するコンポーネント
  2. Loopコンポーネント

「条件を入力するコンポーネント」としてHTML PageコンポーネントでSingle LineとしてNumberを追加します。仮にこのSingle LineのNameを「group」としておくとthis.state.groupで次に配置するLoopコンポーネントでgroupの値を取得できます。

後は,以下のScriptsをLoopコンポーネントに書いておけばよいでしょう。groupという変数名で群名(control or delay)を入れる場合の例です。Tardyへのチェックを忘れないようにしましょう。

//check Tardy
//set before:prepare

const group = this.state.group
let group_name

if(group == 1){
	group_name = "control"
}
else if(group == 2){
	group_name = "delay"
}

this.options.templateParameters.push(
	{
		group: group_name
	}
)

これ以降のLoopコンポーネントの下に配置したメインの実験プログラムでthis.parameters.groupを参照してSkipなどの設定(例. ${this.parameters.group != “control"})をすれば,条件ごとに別の教示などを呈示することができます。

©2022 Masanori Kobayashi