Cognitionサービスを使ってjsPsychを動かすときの注意点

オンラインで心理学の実験や調査を行うためのツールに[jsPsych](https://www.jspsych.org/7.2/)があります。このjsPsychを特定のパソコンのみで動かしたいときにはダウンロードするだけで十分ですが、インターネット上の様々な端末からアクセスできるようにするためにはサーバーにアップロードをする必要があります。そのようなサーバーをすぐに準備できる場合にはよいのですが、そうではない場合におすすめなのが、[Cognition](https://www.cognition.run/)というサービスです。

Cognitionはいわゆるホスティングサービスの一種で、利用者はサーバーの設定や管理を行う必要がありません。利用者は、事前に自分のパソコン上で作成したjsPsychのプログラム一式をCognitionに移動させることで、すぐにオンライン実験を始めることができます。なおCognitionにはテキストエディタの機能も備わっており、最初からCognition上でプログラムを作成することもできます。この記事ではCognitionの利用法や注意点をまとめたいと思います。

# アカウントを作る

[Cognition](https://www.cognition.run/)にアクセスして、Create an account のボタンをクリックしアカウントを作成します。この手続きは画面の指示に従うだけです。

# Taskを作る

ここでのTaskは実験（あるいは調査）と同じ意味だと思ってください。Taskの作成方法は大きく2つに分かれます。1つ目は、まっさらな状態から新規に作成するもので New task ボタンから行います。もうひとつの方法は、自分の実験に近いテンプレートを選択してコードの主要部分を自動生成するものです。Clone an example task から希望するテンプレートの Make a copy をクリックします。はじめのうちは、Hello worldのテンプレートがお勧めです。

すでに、自分のパソコン上でjsPsychのプログラムが動いている状況であれば、New taskを選んでください。

![cognition1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/47f52384-9085-e304-2faa-46dfcb49d5a7.png)

いずれの方法で作成する場合も、Advanced configuration を確認しておいたほうがよいでしょう。Inter experiment conditionsは私は使用したことがないのですが、参加者間の実験要因がある場合に便利なようです。実験のURLにアクセスするたびに、CONDITIONという名前の変数に自動的に値が代入されます。説明を読む限り、この自動割り当てが、なるべく均等になるように設計されているようです。プログラム内でCONDITIONを参照して、CONDITIONが1ならば課題1を行う、CONDITIONが2ならば課題2を行う、というような切り分けが可能になります。

実験プログラムで日本語を表示する場合には、Task languageをJapaneseにしておいたほうがよいでしょう。

Store participants IP Addressは基本的には**チェックを入れない**ほうがよいと思います。IPアドレスはおそらく個人情報の一種となるため、慎重に管理を行う必要があるためです。もし取得するならば、実験の開始画面などでその旨断っておいたほうがよいでしょう。デフォルトでチェックが入っているので注意してください。

![cognition2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/7387e8e6-ec2b-933c-8b4c-d7d332498b7b.png)

# Taskの詳細

Linkで表示されている httpsから始まるURLが実験用のURLです。実験を行う際にはこれを参加者に通知します。

Design の Configurationをクリックすると、上で説明した言語やIPアドレスに関する設定を変更できます。

Source codeをクリックすると、プログラム本体のコードを変更できます。詳細は後述します。

Informed consent をクリックすると実験のURLにアクセスしたときに最初に表示されるページを作成することができます。Informed consentに同意すれば実験が始まり、同意しなかった場合には特定のウェブサイトに移動することも可能です。

Collaboratorsでは、共同研究者を設定して、プログラムを共同で編集するようなことが可能です。ただし、フリープランでは利用できないようです。

![cognition3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/31c7318e-6556-ee86-df1b-c095466ec479.png)

# Source code

jsPsychには様々なバージョンがあります。利用したいバージョンを切り替えることができます。

自作のプラグインやCSSファイルを使用したいときには個別にアップロードする必要があります。

刺激となる画像ファイルなどもこの画面からアップロードします。

Task codeには、htmlのヘッダー部分を記述する必要はありません。自分のパソコン上でプログラムを作成している場合には、scriptタグで挟まれた部分のみをコピーして貼り付けます。

Add url parametersでは、URLに含めたいパラメーターを記述することが可能です。例えば参加者を紐づけるための情報や実験条件などをURLに含め、その情報をプログラム内で参照することができます。詳細は、[jsPsych.data.getURLVariable](https://www.jspsych.org/7.2/reference/jspsych-data/#jspsychdatageturlvariable)をご覧ください。[複数サービス間のデータをクエリ文字列で連結可能に](https://zenn.dev/snishiyama/articles/c9ad1b09baae4b)のページも大変勉強になります。

Set conditionでは、上で説明したCONDITION変数を指定することが可能です。

もしCognitionに関する不具合を見つけたときは、Report a bug から報告することが可能です。

![cognition5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/e9b62798-4873-57a2-0b44-d56dc3611d10.png)

# 有料プラン

基本的な利用方法は上に書いた通りで、大部分の実験は問題なく実行できるはずです。ただ、無料プランではいくつかの制限があります。具体的には[公式サイト](https://www.cognition.run/)に書かれていて、私の記事で明記すると内容が変更される恐れがありますので控えますが、例えば保存できるTaskの数、実験参加者の数、刺激ファイルの数、共同研究者の有無などに制約がありますのでご注意ください。