管理者

oTreeの管理画面を使用すると、セッションからデータを作成、監視、およびエクスポートができます。

ブラウザを開いて、``localhost:8000``またはあなたのサーバーのURLを入力します。

パスワード保護

oTreeを最初にインストールしたときは、パスワードなしで管理画面全体にアクセスできます。しかし、実験を実施する準備ができたら、管理者をパスワードで保護する必要があります。

実験を行う際、訪問者にスタートリンクを提供した場合にのみアプリをプレイできるようにしたい場合は、環境変数 OTREE_AUTH_LEVELSTUDY に設定してください。

誰でもゲームのデモ版をプレイできる公開デモモードにしたい場合は、 OTREE_AUTH_LEVELDEMO に設定してください。

通常の管理者ユーザー名は「admin」です。パスワードは環境変数 OTREE_ADMIN_PASSWORD に設定してください(Herokuでは、Herokuのダッシュボードにログインして、config varとして定義してください)。

もし管理者のユーザ名やパスワードを変更したい場合には、データベースをリセットする必要があります。

参加者ラベル

room の使用にかかわらず、 participant_label を識別子として各参加者の開始URLに加えることができます。例えば、名前や、ID、コンピュータ名等です。例:

http://localhost:8000/room/my_room_name/?participant_label=John

oTreeはこの参加者ラベルを記録し、oTreeの管理画面や支払いページ等で参加者を識別できるようにします。また、コード上で participant_label としてアクセスすることができます。

また、参加者ラベルを利用することで、セッションワイドリンクを同じ参加者が2回開いてしまっても、重複して参加することを防ぐことができます。

到着順序

oTreeは、単体リンクを利用している場合を除き、最初にページを開いた人からP1、P2と参加者にIDを割り当てていきます。

管理画面のカスタマイズ(管理レポート)

セッションの管理画面で、必要なコンテンツを含むページを追加できます。例:

  • ゲームの結果を示すチャート/グラフ
  • 独自にカスタマイズした支払いページ

スクリーンショット

_images/admin-report.png

ここで、特定のラウンドの利得のソート済みのリストを表示する管理レポートを追加する簡単な例を示します。

まず、関数 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>

注意

  • subsessionsessionC は自動的にテンプレートに渡されます。
  • 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_URLREACT_APP_URL を参照してください。サイトにログインし、papercups.htmlという名前のテンプレートにHTML埋め込みコードをコピーします。また、このページ に"実験者とチャット" を行うことができるアプリの例があります。