lab.jsのプログラムはブラウザ上で動作します。ローカルにせよ,ウェブにせよ,実験のURL(https://xxxxx/index.html)にアクセスすることで動きます。このようなURLには,クエリパラメータを与えることができます。クエリパラメータはよく検索サイトでついているハテナ(?)の後に値が付与されているものを指しています。クエリパラメータはなんぞやという疑問は以下のページなどを参照してください。なお,JATOSの場合はページ末尾のやり方でないと,クエリパラメータを取得できないので注意しましょう。

URLクエリパラメータ(クエリストリング)の意味とは。使い方は? 除外はすべき?[第4回][第4回] | Googleアナリティクスとは/衣袋教授のGoogleアナリティクス入門講座

lab.jsのプログラムでもこのクエリパラメータを読み込むことができます。様々な活用が考えられますが,例えば,クエリパラメータに番号を与え(例. https://xxxxx/index.html?id=1234),それを実験プログラム側で参加者番号として利用すれば,各参加者ごとに任意のURLを伝えるだけで各参加者とデータを紐付けた形で実験を実施できます。他の例として,クエリパラメータに試行数を与えて(例. https://xxxxx/index.html?tiralNo=100),それを読み込めば試行数を変化できます。条件(例. https://xxxxx/index.html?condition=conditionA)を与えて条件分岐させることも可能でしょう。

lab.jsでは,this.state.url.parametarNameでクエリパラメータを取得できます。例えば, https//xxxxx/index.html?id=1234のようなidというクエリパラメータ取得する場合はthis.state.url.idで可能です。これらのクエリパラメータをScriptsで読み込めばlab.jsで利用できると思います。プログラムの起動後にクエリパラメータは読み込まれると考えられるので,tardyにチェックが必要かもしれません。

デモ

デモプログラムは「https://mklab-japan.github.io/labjsExps/urlQuery/index.html?something=12345」というURLですが,末尾に「?something=12345」というクエリパラメータを与えています。プログラムでは,somethingの値を読み込んで表示しています。URLの末尾の「?something=12345」の「12345」を任意の値に変更すると表示される値が変化するので試してみてください。

Experiment

コード

urlQueryDemo.json

JATOSの場合

JATOSの場合は,JATOSで生成されるURLとlab.jsのそれぞれで対応する必要があります。URLクエリパラメータはJATOSにアップロードして生成したプログラムのURL(https://xxxxx/start?batchId=00&generalMultiple)の末尾に追加します(例. https://xxxxx/start?batchId=00&generalMultiple&something=12345)。「start?」からクエリパラメータが始まっているので,&で繋ぐのを忘れないようにしましょう。lab.js側は,`jatos.urlQueryParameters.something`でJATOSのクエリパラメータを取得できます。最初からJATOS専用で作成すると動作確認しにくいので,以下のコードなどで分岐するとよいと思います。

//JATOSを利用していない場合
if (typeof jatos == 'undefined') {
  this.state.queryData = this.state.url.something;
}
//JATOSを利用している場合
else{
	this.state.queryData = jatos.urlQueryParameters.something;
}

©2021 Masanori Kobayashi