PsycoPyを使用してオンライン実験を始めるまで

# まえがき
先日、ラボの資産として、[PsychoPy](https://www.psychopy.org/index.html)を使用したオンライン実験についてまとめる必要がありました。調査していると、オンライン実験のイントロダクションについて日本語で解説している記事が見当たらなかったので、簡単にですが記事にしてみます。

# 目次
1. 実行環境
1. 事前準備
1. HTML, JavaScriptファイルの生成
1. Pavlovia上に実験をプッシュ
1. 実験のテスト
1. さいごに

# 1. 実行環境
- macOS Catalina 10.15.7
- PsychoPy 2021.1.4

# 2. 事前準備
1. Pavloviaのアカウントを作成<br>
サーバ、コード管理は[Pavlovia](https://pavlovia.org)を使用します。PavloviaはPsychoPyと連携することで実験に関わるあれこれを管理してくれます。便利。<br>
[ここ](https://gitlab.pavlovia.org/users/sign_in)からアカウントを作成できます。
1. PsychoPy Builderを使用して実験を作成<br>
今回は、PsychoPyのGitHubリポジトリ上に公開されている[Stroop Effectを測定する実験](https://github.com/psychopy/psychopy/tree/release/psychopy/demos/builder/Experiments/stroop)を使用したデモを行います。<br>リポジトリ全体をクローンするのは面倒なので、下記コマンドで必要なファイルをダウンロードします。

```
$ wget https://github.com/psychopy/psychopy/blob/release/psychopy/demos/builder/Experiments/stroop/stroop.psyexp -P [保存先パス]
$ wget https://github.com/psychopy/psychopy/blob/release/psychopy/demos/builder/Experiments/stroop/trialTypes.csv -P [保存先パス]
```

注） 2021年7月現在、PsychoPy Coderのみを使用して作成した実験をオンラインに移植するのは非常に面倒です。具体的には、

- PsychoPyが行ってくれるPython → JavaScriptの変換には様々な成約があり、変換できない部分に関しては手作業になってしまう（[Python to JavaScript Crib Sheet](https://docs.google.com/document/d/183xmwDgSbnJZHMGf3yWpieV9Bx8y7fOCm3QKkMOOXFQ)参照）
- Pavlovia上でのコードの管理が煩雑になる

などの問題があります。そのため、今回はBuilderを使用して実験を作成していることを想定しています（ある程度簡単な実験であれば、Coderのみを使用して実験を完成させていたとしても、Builderを使用して作り直すほうが手っ取り早いです）。

# 3. HTML, JavaScriptファイルの生成
1. PsychoPy上で`stroop.psyexp`ファイルを開く
1. JSのアイコンをクリック<br>
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677748/83349a2a-f504-6895-a607-271d382fd776.png)

以上の手順でフォルダ内にHTML, JavaScriptのファイルが生成されます（Coderが自動的に開きますが、使わないので閉じて構いません）。
JavaScriptのコードがどのように生成されているかについては、[こちら](http://www.s12600.net/psy/python/27-1.html)の記事で詳しく解説されています。今回は触れません。

# 4. Pavlovia上に実験をプッシュ
1. 以下の画像内の矢印で示したアイコンをクリック<br>
![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677748/d95fc77b-e547-0eb1-4a6b-10c5b7412585.png)
1. サインインを行うためのポップアップが出てくるので指示に従う
1. 以下の画像内の矢印で示したアイコンをクリック<br>
![image3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677748/41c3c011-4b2e-2aa2-4f18-9c7dead58e28.png)
1. ポップアップが表示されるので、"Create a project"を選択
1. 以下の画面が表示されるので、プロジェクトの名前を決め、"Create project on Pavlovia"を選択<br>
![image4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677748/3277a86e-7688-8a86-4004-890b2f4b522b.png)

1. コミット画面が表示されるので、"Initial commit"などと記載して実行します（内部的には、ローカルで`git init`が実行され、Pavloviaと連携したGitLab上のリモートリポジトリにソースコードがプッシュされているようです）。

https://pavlovia.org にアクセス、ログインし、ダッシュボードに移動すると先程プッシュした実験がリモートに反映されていることが確認できます。
![image5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677748/f30e4d87-07e3-da38-adc3-b3cc66871f32.png)

# 5. 実験のテスト
1. 先程の画面の赤枠内をクリック
1. 以下の画面が表示されるので、以下の画像内の矢印で示した"PILOTING"の枠をクリック<br>
![image6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677748/67fb667e-f934-6e4b-c186-e7a7dcc78044.png)
1. "View code"の隣の"Pilot"ボタンが有効化されるので、クリック

クリックすると、新しいタブが開き、ブラウザ上で実験のテストを行うことができます。

# さいごに
この記事では、オンライン上で実験を確認するところまでを行いました。実際に実験を行うにあたっては、[Amazon Mechanical Turk](https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMechanicalTurkGettingStartedGuide/SvcIntro.html)等を使用して被験者を集めたりする必要があります。その手続等についても、必要性を感じたら記事にします。
最後まで読んでいただきありがとうございました。誤り等ありましたら教えていただけると非常に助かります。

# 参考
- [Running and sharing studies online](https://www.psychopy.org/online/index.html)
- [Python to JavaScript Crib Sheet](https://docs.google.com/document/d/183xmwDgSbnJZHMGf3yWpieV9Bx8y7fOCm3QKkMOOXFQ/edit)
- [PsychoPy Builderが生成するPsychoJSのコードを読む](http://www.s12600.net/psy/python/27-1.html)