管理者¶
oTreeの管理画面を使用すると、セッションからデータを作成、監視、およびエクスポートができます。
ブラウザを開いて、``localhost:8000``またはあなたのサーバーのURLを入力します。
パスワード保護¶
oTreeを最初にインストールしたときは、パスワードなしで管理画面全体にアクセスできます。しかし、実験を実施する準備ができたら、管理者をパスワードで保護する必要があります。
実験を行う際、訪問者にスタートリンクを提供した場合にのみアプリをプレイできるようにしたい場合は、環境変数 OTREE_AUTH_LEVEL
を STUDY
に設定してください。
誰でもゲームのデモ版をプレイできる公開デモモードにしたい場合は、 OTREE_AUTH_LEVEL
を DEMO
に設定してください。
通常の管理者ユーザー名は「admin」です。パスワードは環境変数 OTREE_ADMIN_PASSWORD
に設定してください(Herokuでは、Herokuのダッシュボードにログインして、config varとして定義してください)。
もし管理者のユーザ名やパスワードを変更したい場合には、データベースをリセットする必要があります。
スタートリンク¶
スタートリンク(実験に参加するためのリンク)には複数の種類があります。
単体リンク¶
roomによる実験があなたの希望に合わない場合は、oTreeの単発リンクを利用することができます。ただし、セッションを作成するたびに、各参加者にURLを再配布する必要があります。
セッションワイドリンク¶
セッションワイドリンクでは、セッションに参加しているすべての人に同じスタートリンクを提供することができます。注意: この場合、URLに participant_label
パラメータを使用しないと、同じ参加者が2回プレイすることになるかもしれません( 参加者ラベル 参照)。
セッション全体のリンクを使用する前に、 room の使用を検討してください。参加者ラベルファイルのないルームを使用して、全員が同じURLでプレイできるようにすることもできます。ルームを使用する利点は、URLの入力が簡単で(ランダムに生成されるコードが含まれていない)、セッション間で再利用できることです。
参加者ラベル¶
room の使用にかかわらず、 participant_label
を識別子として各参加者の開始URLに加えることができます。例えば、名前や、ID、コンピュータ名等です。例:
http://localhost:8000/room/my_room_name/?participant_label=John
oTreeはこの参加者ラベルを記録し、oTreeの管理画面や支払いページ等で参加者を識別できるようにします。また、コード上で participant_label
としてアクセスすることができます。
また、参加者ラベルを利用することで、セッションワイドリンクを同じ参加者が2回開いてしまっても、重複して参加することを防ぐことができます。
到着順序¶
oTreeは、単体リンクを利用している場合を除き、最初にページを開いた人からP1、P2と参加者にIDを割り当てていきます。
管理画面のカスタマイズ(管理レポート)¶
セッションの管理画面で、必要なコンテンツを含むページを追加できます。例:
- ゲームの結果を示すチャート/グラフ
- 独自にカスタマイズした支払いページ
スクリーンショット

ここで、特定のラウンドの利得のソート済みのリストを表示する管理レポートを追加する簡単な例を示します。
まず、関数 vars_for_template() と同様の働きをする関数 vars_for_admin_report
を定義します。例:
def vars_for_admin_report(subsession):
payoffs = sorted([p.payoff for p in subsession.get_players()])
return dict(payoffs=payoffs)
次に、アプリ内に組み込み可能なテンプレート admin_report.html
を作成します。そして、 vars_for_admin_report
で渡された変数を表示します。例:
<p>Here is the sorted list of payoffs in round {{ subsession.round_number }}</p>
<ul>
{{ for payoff in payoffs }}
<li>{{ payoff }}</li>
{{ endfor }}
</ul>
注意
subsession
、session
、C
は自動的にテンプレートに渡されます。admin_report.html
において、{{ block }}
を使用する必要はありません。上記の例は、admin_report.html
の完全な内容として有効です。
セッション内の1つ以上のアプリが admin_report.html
を持つ場合、管理画面に "レポート" タブが表示されます。メニューからアプリとラウンドを指定し、サブセッションのレポートを表示してください。
データのエクスポート¶
管理画面で、 "Data" をクリックすることで、CSVまたはExcelデータとしてダウンロードできます。
これは、ユーザーがすべてのページを完了した正確な時間である "page timesもエクスポートできます。このPythonスクリプト
は各ページに費やされた時間を表にすることができます。このスクリプトを変更して、各参加者が待機ページに費やした合計時間などを計算することもできます。
カスタムデータのエクスポート¶
アプリ用に独自にカスタムしたデータのエクスポートを作成できます。oTree Studioで、 "Player" モデルに移動し、下部にある "custom_export" をクリックします。(テキストエディタを使用する場合は、以下の関数を定義します。)引数 players
は、データベース内のすべてのプレイヤーのクエリセットです。データの各行について、yield
を使用していください。
def custom_export(players):
# header row
yield ['session', 'participant_code', 'round_number', 'id_in_group', 'payoff']
for p in players:
participant = p.participant
session = p.session
yield [session.code, participant.code, p.round_number, p.id_in_group, p.payoff]
Or, you can ignore the players
argument and export some other data instead, e.g.:
def custom_export(players):
# Export an ExtraModel called "Trial"
yield ['session', 'participant', 'round_number', 'response', 'response_msec']
# 'filter' without any args returns everything
trials = Trial.filter()
for trial in trials:
player = trial.player
participant = player.participant
session = player.session
yield [session.code, participant.code, player.round_number, trial.response, trial.response_msec]
この関数を定義すると、カスタムデータのエクスポートが、通常のデータエクスポートページで利用できるようになります。
デバッグ情報¶
oTreeが DEBUG
モードで実行されている場合(環境変数 OTREE_PRODUCTION
が設定されていない場合 )、デバッグ情報がすべての画面の下部に表示されます。
支払い¶
もし、あなたが finished という 参加者フィールド を定義するのであれば、参加者がセッションを終えるときに、 participant.finished = True
に設定することでできます。そして、これは支払いページのようなさまざまな場所に表示されます。
参加者と実験者間のチャット¶
参加者がチャットメッセージを送信できるようにするには、 Papercups のようなソフトウェアの使用を検討してください。Papercupsサーバーをワンクリックでセットアップするには、 "[Deploy toHeroku]" ボタンをクリックし、必要な構成変数のみを入力してください。そして、oTreeサイトではなく、Papercupsのサイトである、 BACKEND_URL
や REACT_APP_URL
を参照してください。サイトにログインし、papercups.htmlという名前のテンプレートにHTML埋め込みコードをコピーします。また、このページ に"実験者とチャット" を行うことができるアプリの例があります。