oTreeまとめ
~oTreeの基礎からwebへのアップまで~
関西学院大学社会学研究科
水野 景子
ベイズ塾合宿 日目
2021 2
11:10~11:50
注意
 こちらの資料に記載されている情報は、2021年9月13日
時点でのものです。
アップデート等により仕様が変わっている可能性がある
ことをご了承ください。
ベイズ塾合宿 日目
2021 2
11:10~11:50
自己紹介
 水野 景子 (みずの けいこ)
• 関西学院大学社会学研究科D1
• 日本学術振興会特別研究員 (DC1)
• Twitter: @Mizuno_K5
• ウェブサイト: http://keikomizuno.com/
 研究テーマ (専門は社会心理学)
• 社会的ジレンマ状況での意思決定モデルの構築&実証
• サンクション(報酬や罰)の逆効果はなぜ起こるのか
• 社会的価値志向性(SVO)を階層モデルで測定
3
@Mizuno_K5
オンライン実験の需要高まる
ベイズ塾合宿 日目
2021 2
11:10~11:50
元々、学生以外の方を対象にしたい
というモチベーション等から
徐々に注目されていた
そこに、コロナ禍で
ますます注目
oTreeの特徴
 PythonとDjangoをベースに動く実験作成ツール
 対人相互作用実験をwebブラウザ上でできる
 一人で行う課題や質問紙も作れる
 謝礼の計算が簡単にできる
ベイズ塾合宿 日目
2021 2
11:10~11:50
本セッションの内容
 oTreeで作った実験の紹介 & デモ
 oTreeの基礎 (インストール方法、基本構造など)
 実験の作り方と使える知識
 作った実験をWebにアップしてリンクを配る方法
ベイズ塾合宿 日目
2021 2
11:10~11:50
本セッションの内容
 oTreeで作った実験の紹介 & デモ
 oTreeの基礎 (インストール方法、基本構造など)
 実験の作り方と使える知識
 作った実験をWebにアップしてリンクを配る方法
ベイズ塾合宿 日目
2021 2
11:10~11:50
これまでに作った実験課題(1): 質問紙
ベイズ塾合宿 日目
2021 2
11:10~11:50
一般的信頼尺度 山岸 の一部
( , 1986)
これまでに作った実験課題(2):公共財ゲーム
ベイズ塾合宿 日目
2021 2
11:10~11:50
これまで ry(3):極端に単純化したポ○モン
ベイズ塾合宿 日目
2021 2
11:10~11:50
Tokyo.Rのデータをとるために作成
こ ry(4): 産業廃棄物処理ゲーム(Hirose et al., 2004)
ベイズ塾合宿 日目
2021 2
11:10~11:50
~あらすじ~
①あなたは工場の社長です
② 工場では1/4の確率で、処理にお金のかかる
有害ごみが発生します…
③ 不法投棄をすると、自分は得しますが全員が損します
④ 不法投棄者を罰するために、お金を払って監視できます
つらーい
こちらでゲームの詳細および全コードを公開しています
本セッションの内容
 oTreeで作った実験の紹介 & デモ
 oTreeの基礎 (インストール方法、基本構造など)
 実験の作り方と使える知識
 作った実験をWebにアップしてリンクを配る方法
ベイズ塾合宿 日目
2021 2
11:10~11:50
PyCharmがおすすめ(「Pythonの総合開発環境」)
ベイズ塾合宿 日目
2021 2
11:10~11:50
階層構造も
コードも見やすい
oTree devserver
で自分の端末を
サーバーとして起動し、
実験が動くか
こまめにチェックする
https://www.jetbrains.com/help/pychar
m/installation-guide.html#standalone
oTreeのインストールは2STEP!
ベイズ塾合宿 日目
2021 2
11:10~11:50
参考にさせていただいた記事:
https://github.com/akrgt/otree_2019KG/tree/master/0_outline
① Pythonをインストール
https://pythonlinks.python.jp/ja/index.html
忘れずにチェック
oTreeのインストールは2STEP!
ベイズ塾合宿 日目
2021 2
11:10~11:50
参考にさせていただいた記事:
https://github.com/akrgt/otree_2019KG/tree/master/0_outline
② oTreeをインストール
PowerShell/コマンドプロンプト/ターミナルで
pip3 install –U otree
うまくいかないときは多分パス通ってない
「Python パス」等でググる
実験全体 = oTreeプロジェクト
ベイズ塾合宿 日目
2021 2
11:10~11:50
通常、実験は複数の課題でできている
質問紙(1)
実験課題(1)
実験課題(2)
質問紙(2)
実験
oTreeでは
アプリケーション1
プロジェクト
アプリケーション2
アプリケーション3
アプリケーション4
oTreeプロジェクトの構造
ベイズ塾合宿 日目
2021 2
11:10~11:50
この部分について
次ページで詳しく説明
oTreeアプリケーション(個々の実験課題)
 Models
• データと計算
• ここで定義した変数はデータとして記録される
 Templates
• htmlで自由自在にページを作れる(画像も動画も)
 Pages
• ページ表示や計算のタイミング
• データとして保存したくない変数もここで作る
ベイズ塾合宿 日目
2021 2
11:10~11:50
Models(1) 次スライドに続く
ベイズ塾合宿 日目
2021 2
11:10~11:50
Constantsクラス
課題全体の設定
Subsessionクラス
セッション(全グループ共通)
Models(2)
ベイズ塾合宿 日目
2021 2
11:10~11:50
Groupクラス
グループ全体に影響する
(プレイヤー同士の相互作用)
Playerクラス
プレイヤーの選択や計算
Modelsに書いた変数はデータとして記録
ベイズ塾合宿 日目
2021 2
11:10~11:50
勝手に記録される変数がいくつかある
(後述)ので空白列や0が多い
Templates
ベイズ塾合宿 日目
2021 2
11:10~11:50
1ページごとに
ファイルを用意
プレイヤーの選択や結果によって
表示を変えたり、
画像や動画も入れたりできる
Pages
ベイズ塾合宿 日目
2021 2
11:10~11:50
Templatesで作ったページの表示順序や
計算のタイミングなどを指定
oTreeプロジェクトの構造
ベイズ塾合宿 日目
2021 2
11:10~11:50
これはなに?
settings.py
 プロジェクト全体や謝礼の計算を管理する部分
ベイズ塾合宿 日目
2021 2
11:10~11:50
アプリケーションの表示順序
(ここに書いてないアプリケーションは表示されない)
言語
通貨
CurrencyField(後述)で定義した変数についての部分
Trueにすると「ポイント」がつく、Falseにすると「円」がつく
「ポイント」のかわりにオリジナルのポイント名をつけられる
1ポイント何円で計算するか
本セッションの内容
 oTreeで作った実験の紹介 & デモ
 oTreeの基礎 (インストール方法、基本構造など)
 実験の作り方と使える知識
 作った実験をWebにアップしてリンクを配る方法
ベイズ塾合宿 日目
2021 2
11:10~11:50
実験を作る手順
① プロジェクトを作る
② アプリケーションを作る
③ アプリケーションの中身を作る
- Modelsから作ると作りやすい
- きちんと動くかこまめにチェック!
④ settings.py に全てのアプリケーションを登録
ベイズ塾合宿 日目
2021 2
11:10~11:50
otree devserver
プロジェクトとアプリケーションの作り方
ベイズ塾合宿 日目
2021 2
11:10~11:50
otree startproject experiment つけたい名前
Include sample games? (y or n): ときかれる。
cd experiment
otree startapp task1 つけたい名前
プロジェクトの場所へ移動
プロジェクトの作成
アプリケーションの作成
まずはModelsのプレイヤークラスから作る
ベイズ塾合宿 日目
2021 2
11:10~11:50
プレイヤーは課題内で
どんな選択をする?
Field
ベイズ塾合宿 日目
2021 2
11:10~11:50
お金
整数
True/False
実数
文字列(長)
文字列(短)
https://qiita.com/okoppe8/items/a1149b2be54441951de1 めちゃくちゃわかりやすい
ランダム要素を入れたいとき
 randomモジュールをインポートする必要がある
 例えば、1/4の確率で各プレイヤーに有害ごみ
ベイズ塾合宿 日目
2021 2
11:10~11:50
ランダム割り当て、
成功確率の割り当てなど
def ○○ は関数
 ModelsとPagesで使う
ベイズ塾合宿 日目
2021 2
11:10~11:50
Modelsで定義した関数を
Pagesで呼び出せる
Pagesで使える関数を使いこなせると強い(1)
 プレイヤーが全員そろってから実行 after_all_players()
 特定の条件のときだけ表示 is_displayed()
Page1は有害ごみが当たったときだけ表示、
Page2は普通ごみが当たったときだけ表示
Pagesで使える関数を使いこなせると強い(2)
 次のページに行く前に計算したり変数を入れたりしたい
before_next_page()
ベイズ塾合宿 日目
2021 2
11:10~11:50
Pagesで使える関数を使いこなせると強い(3)
 色々な変数をページに表示させたい vars_for_template()
ベイズ塾合宿 日目
2021 2
11:10~11:50
例 他の人の利得も表示させたい
Pages
自分のそのラウンドの利得なら
{{ player.payoff }}だけど..
Templates
直接表示させたり
If文につかったり
本セッションの内容
 oTreeで作った実験の紹介 & デモ
 oTreeの基礎 (インストール方法、基本構造など)
 実験の作り方と使える知識
 作った実験をWebにアップしてリンクを配る方法
ベイズ塾合宿 日目
2021 2
11:10~11:50
方法は二つある
ベイズ塾合宿 日目
2021 2
11:10~11:50
oTree Hubを使う GitHub を使う
どちらも、Herokuへの登録とインストールが必要
登録: https://dashboard.heroku.com/apps
インストール: https://devcenter.heroku.com/ja/articles/heroku-cli
注意: oTree3 (非oTree Lite)の場合
ベイズ塾合宿 日目
2021 2
11:10~11:50
ファイル(なければ作成)に
と書いておく必要がある。絶対。
次スライド以降の作業をする前に
方法1: Otree Hub
 まずは登録する
 ログインして、Heroku server deploymentをクリック
 otree zipファイルをアップ
ベイズ塾合宿 日目
2021 2
11:10~11:50
https://www.otreehub.com/home/
方法2: GitHubを使う
 GitHubに登録 & インストール
 ログインしてアプリケーションを作る
ベイズ塾合宿 日目
2021 2
11:10~11:50
登録: https://github.co.jp/
インストール: https://git-for-windows.github.io/
Deployタブに書いてあるコードをそのまま実行
ベイズ塾合宿 日目
2021 2
11:10~11:50
これ以降に書いてあるコードを
PowerShell/コマンドプロンプト
/ターミナルで実行
最後に: oTreeの注意点
 めちゃくちゃバージョンアップで変わる
• oTree5.0以上はDjangoを使わない(oTree Liteという)
• 自分はサポート終了するまで3のままでいるつもり
• が、oTree Liteもぼちぼち勉強しようと思います..
 こまめにバージョン情報をチェックしよう!
ベイズ塾合宿 日目
2021 2
11:10~11:50
https://otree.readthedocs.io/en/latest/misc/version_history.html

oTreeまとめ 基礎からwebへのアップまで