oTreeによる調査・実験サイトの作成とAmazon Mechanical Turkでの実行

Mturkでは、調査用のテンプレートが用意されていますが、より凝った調査を行いたい場合は、自前で調査・実験用WEBアプリを作る必要があります。

　今回は、実験用WEBアプリの実装において、PythonのoTree[1, 2]というフレームワークを使います。
 このoTreeにはoTreeStudio[3]というプログラミングの知識がなくても実験用WEBアプリを作れるツールが用意されています。oTreeHubの有料会員になることで、実験用WEBアプリをHerokuにデプロイすることとmTurkでの調査が簡単になるため、下記ではoTreeStudioを使った場合の解説をします。

# 1 oTreeによる実験アプリケーションの実装
　![oTree Studio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/cbe7cdf7-6af6-c00a-b018-42f3f1a6275b.png)
　oTreeStudioにおけるtitleと書かれた場所に実験のタイトルを記入し、mturk＿templateと書かれた場所に実験参加者への説明を書きます。タイトルに所用時間を記載しておくと閲覧数が増えるそうです[4]。
　また、qualification_requirementsは重要です。oTreehubの初期条件では英語圏の人に限って実験に参加できるようになっています。多くの研究ではHITs承認率が95%以上のワーカーでないと実験に参加できないように設定されています。oTreehubでは、次のコードを追加する必要があります。

      'QualificationTypeId': "000000000000000000L0",
      'Comparator': "GreaterThanOrEqualTo",
      'IntegerValues': [95]

　![oTree Studio (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/6577881d-592c-a225-c18e-1d6b75833176.png)

　mTurkの設定ができているのかも確認します。real_world_currency_per_pointは実験におけるポイントと現実の通貨の交換比率です。国際比較を容易にするために、経済ゲーム実験ではポイントが用いられています。participation_feeは0.5に設定してあるため、50セントとなります。

![oTree Studio (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/214742a7-e42d-ec82-2818-0985de149777.png)

　次に、実験のためのアプリケーションを作成する必要があります。oTreeStudioでは調査や経済ゲーム実験用のテンプレートが用意されているので、それを使ってアプリケーションを作成し、実験条件の割当てなど他に必要な要素は自分でコードを書いて補完するとよいでしょう。

　実験のためのアプリケーションが作成できたら、最後に実験参加者がmTurkに入力するための完了コードを載せたページを作ります。

![oTree Studio (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/20942405-3116-8b3e-95cc-4b0a1f2f0af3.png)

　以上で、実験アプリケーションは完成です。続いてHEROKUのデプロイについて解説します。

# 2 Herokuへのデプロイ

 oTreehubでHerokuの設定をします。Herokuのアカウントと連携して、oTreehubでファイルを選択してアップロードします。
　oTreehubから公開できるのは、Standard会員だと非公開プロジェクトが1つ公開プロジェクトが2つだけで、Herokuサーバー上から削除してしまうとプロジェクトの枠がなくなってしまうので注意が必要です。

![Deploy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/16af7aca-be55-a83a-5d1a-e9bb4b59ebad.png)

　続いて、Amazon Web ServiceでAWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEYを取得する必要があります。

![IAM Management C.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/d9d49b47-6f20-7842-2cb8-ba2fac1373e3.png)



　そして、HerokuにあるアプリケーションのSettingページでconfig varsにAWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEYを設定します。

![dyadic · Settin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/8c49a358-270f-a8d6-ee57-bcc7caeb77ac.png)


　さらにHerokuのアドオンであるPostgresとRedisを設定する必要があります。PostgresはデータベースでRedisはキーバリュー型データストアです。9＄ほど掛かります。

![dyadic _ Heroku.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/9d9be6d7-5c09-8112-c8af-7e96818483f6.png)


　以上で完了です。続いてmTurkの設定について解説します。

# 3 mTurkでの実験

　本番環境で失敗しないために、mTurkで実験する前に、mTurkのsandbox[6]でテストすることが推奨されています。まずは、Sandboxで実験してみましょう。SandboxとAWSのアカウントを紐付ける必要があります。

![dyadic_ session .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/88c4abaa-28f6-572a-f64f-678599adb58a.png)

　sandboxに行くと、mTurkerには次のように表示されていることが分かります。

![A Psychological .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/15e622da-0b70-c9ae-8800-ee3c9db9f334.png)

　自分で解いてみて問題がなければ、チェックを外して本実験を行いましょう。①mTurkでの本実験をするためには、mTurkとAWSのアカウントを紐付ける、②mTurkに事前にお金をチャージする必要があります。
　Mechanical Turk Cost Calculator[5]で予め必要な金額を計算しておくとよいでしょう。

　![Mechanical Turk .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/4524647b-bd92-b38e-68ad-3b2ebf10f7c0.png)

　mTurkで公開するとすぐに参加者が集まります。oTreeでは各参加者がいまどのページを見ているのかを監視することができます。

![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/2d6bced6-bd44-4fb0-0365-39eeacf831e5.gif)

　公開当初はどんどん実験参加者が増えていきますが、時間が立つにつれ実験参加者が増えるペースは減少していきます。気長に待ちましょう。

　最後に、oTreeのPaymentで実験参加者への支払いを忘れないようにしましょう。Completion codeに表示されている文字列がLast Pageに乗せている文字列と一致するか確認する必要があります。

![dyadic_ session  (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/dad4dfda-9af6-4370-4861-1f9a2ad8a355.png)


　

# 参考文献
[1]oTree日本語ドキュメント
https://akrgt.gitbook.io/otree-jp/
[2]oTree公式ドキュメント
https://otree.readthedocs.io/en/latest/
[3]oTreehub
https://www.otreehub.com/
[4]実践 Amazon Mechanical Turk
https://www.slideshare.net/Ayako_Hasegawa/amazon-mechanical-turk-92372451
[5]Mechanical Turk Cost Calculator
https://morninj.github.io/mechanical-turk-cost-calculator/
[6]Sandbox
https://requester.mturk.com/developer/sandbox