lab.jsを実行しているデバイスやOSを判定して,それぞれで条件分岐させます。lab.jsではパソコンだけでなくスマートフォンやタブレットでも実行できるため,オンライン実験などでデバイスを指定してい場合に利用できます。

サンプルとして,パソコンかどうかを判定して表示するという試行とデバイスを判定して表示するという試行を2つが含まれるプログラムを用意しました。両方とも「before: prepare」の段階で,metadataプラグインからの情報を取得することで判定を行っています。詳しくはOSやデバイス情報の取得 を参考にしてください。なお,デバイスは,もっと細かい分類(Linuxかゲーム機かなど)もできるのですが,「その他」にまとめています。

これらを用いて必要な情報を取得した上で,skip設定を利用すれば,デバイスごとの条件分岐が可能です。例えば,以下のようにパソコン用の実験すべてを1つのSequenceにネストします。そして,パソコン以外の場合のコンポーネントも用意し,それぞれにデバイス情報を元にした変数でskip設定を行えば,パソコンかパソコン以外で実施される内容を分岐できます。そして,パソコン以外の場合はお断りメッセージ(パソコン以外では実施できません)を表示し,試行を終了するようにすれば,パソコンだけで実験を実施してもらえます。

コード

パソコンかどうかの判定

//metadataプラグインから情報取得
const userAgentInfo = this.state.meta.userAgent
const platformInfo = this.state.meta.platform

let resultText;

//OSで分岐
//OSを表示
if(platformInfo =='iPhone' || platformInfo =='iPad' || userAgentInfo.indexOf('android') > 0){
  resultText = 'パソコン以外'
}
else{
  resultText = 'パソコン'
}

//結果を変数に入れる
this.state.pcOrNotText = resultText

デバイスの判定

//metadataプラグインから情報取得
const userAgentInfo = this.state.meta.userAgent
const platformInfo = this.state.meta.platform

let platformText;

//OSを表示
if(platformInfo =='iPhone' || platformInfo =='iPad'){
  platformText = platformInfo;
}
else if(userAgentInfo.indexOf('android') > 0 )
{
  platformText = 'Android';
} 
else if(userAgentInfo.indexOf('Mac') > 0 )
{
  platformText = 'Mac';
}
else if(userAgentInfo.indexOf('Windows') > 0 ){
  platformText = 'Windows';
}
else{
  platformText = 'その他(linuxなど)'
}

//結果を変数に入れる
this.state.platformInfo = platformText

配布(右クリックで保存)

showPlatform.json

デモ

Experiment

<aside> ⚠️ 配布カテゴリのプログラムの利用について 配布に掲載しているプログラムはlab.jsに習熟した方向けに参考資料としてご利用いただく目的で掲載しています。もちろん,改変してデータ収集にご利用頂いてもかまいません(引用はお願いします)。これらのプログラムは比較的複雑なプログラムになっており,Scriptsを利用しているものが大半です。説明が複雑になるため,配布だけとさせていただいております。ご了承ください。 *配布プログラムを用いたデータ収集は自己責任でお願いします

</aside>

©2020 Masanori Kobayashi