oTreeをGoogle Cloud PlatformのCompute Engineで動かして、外部からのアクセス(実験)が可能に

oTreeをGoogle Cloud PlatformのCompute Engineで動かして、外部からのアクセス(実験)が可能に

Amazon EC2のWindows Serverを使ってoTreeを動かすのは、実際にすでに紹介されている方がいたので、今回はGoogle Cloud Platformを使ってoTreeを動かす方法を紹介します。実際に実験環境でのテストを行っていないので、スケール(マシンのスペック)に関してはご自身の用途に合わせて変更してください。

これから下の話に関してはGoogle Cloud Platformのアカウントの作成が済んでいる前提で話を進めます。

“本質情報”

  • インスタンス(マシン)を作成
  • インスタンスのポートを開放(外部からのアクセスを許可)
  • PythonとoTreeのインストール
  • 実験プログラムをインスタンスへ転送
  • 実験実行(devserverなりrunprodserverで)

今回は主にoTreeを使って、大学外の一般人を対象に実験を行うのであれば、外部サーバーを用意した上で行う必要があります。上の設定の流れにおける”本質情報”を抑えておけば、Amazon EC2でもHerokuでも多分なんでもできます。

otree devserver (あなたの管理用PCのIPアドレス):8000

ちなみに、ローカルネットワーク内のみで使う前提、例えば大学の授業内で使う、クローズドな環境で大学生を集めて実験するといった用途であれば、管理用のパソコンと実験用のパソコンを数台用意して、ルーター(スマホのテザリングでも可)で接続するほうが圧倒的に楽です。

上記のコマンドで行えます。

GCPのメリット

  • GCPとは:Googleのサーバーを使って、時間のかかる分析をしたり、アプリを公開したりできる
  • 無料枠が200ドルある(かなり試せる)
  • 日本中の人に実験を行ってもらえる

GCPでRStudio Serverを立ち上げたことのある人なら簡単です。

GCPの設定

ファイアウォールルールの設定

gCP
左のメニューから、「VPCネットワーク」→「ファイアーウォールルール」を選択。

GCP
新たに、ファイアーウォールルールを設定します。
名前とターゲットタグに「allow-otree」と入力、ソースIPの範囲は「0.0.0.0/0」、プロトコルとポートの指定したプロトコルはTCPを選択し「8000」と入力します。

マシンの設定

GCP
次にCompute EngineからVMインスタンスを選択します。表示された先で「インスタンスを作成」を選択。

GCP
設定する項目は主に3つ。名前は自由に決めてください。今回は「otree-test」としています。マシンスペックに関しては、今回はCPUが2コアでメモリが7.5GB。これだと大体月間24時間回し続けたとして予測が51.95ドル(約5,659円)。 1時間あたりは0.071ドル(約7.73円)。ダウンロードなどに通信費がかかりますが、しばらくは全然無料枠で利用できるでしょう。

そのあたりの設定が終わったら、ブートディスクを変更します。

GCP
今回に関してはUbuntuでやりたかったため、上記のような設定にしていますが、Pythonが動けばなんでも大丈夫です(多分)。「SSD永続ディスク」でないとHDDになることがあるので、これがおすすめ。

GCP
あとはHTTPとHTTPSのトラフィックを許可して、「作成」をクリック。

GCP
マシンの作成が完了したが、VMインスタンスのページにマシンが表示されます。起動する前に最後の準備があるので、「otree-test」をクリックし、編集をします。

GCP
ネットワークタグに「allow-otree」と入力し、一番下の保存をクリックすれば前準備は完了です。

GCP
マシンを選択し、開始をおします。起動したら、SSHの「ブラウザ ウィンドウで開く」をクリック。

GCP
画像はぼかしてはいますが、ターミナルが起動し、あとはここで作業を行っていきます。

ターミナルで設定を行う

Pythonのインストール

プログラミングやLinux、IT全般にまつわることをメモしていきます。
www.virment.com

ターミナルが起動したら上記のサイトを参考にAnacondaをインストールして行きます。pipができれば良いので

https://pcl.solima.net/pyblog/archives/57

上のサイトを参考に、pipだけインストールしても構いません。

oTreeをインストール

# oTreeをインストールします
pip install -U otree

# startprojectでプロジェクト作成(サンプルはなくても良いので"n"で構いません。)
otree startproject oTree 

これはmacOSやWindowsにoTreeをインストールするのと同じ手順になります。

oTreeのデータの準備とアップロード

Mac
自分のパソコン上で作成したoTreeフォルダーの中身を圧縮します。

DropBox
作成したzipファイルを適当にotreetest.zipの様に名前を変更した上で、Dropboxにアップロード。共有リンクを取得します。

ダウンロードと解凍

$cd oTree
$ wget (DropBoxのリンク。例:http://hogehohe.....)

今度はまたGCP上のターミナルの画面に戻り、cdコマンドでoTreedフォルダーへ移動した上で、先程コピーしたリンクを”wget”以下のに貼り付けファイルをダウンロードします。

$ mv (ダウンロードしたファイル名) otree.zip
$ unzip otree.zip

wget後に、ダウンロードしたファイル名が表示されるので、まずはファイル名の変更を行います。その後、圧縮の方法にもよりますが、特にフォルダーにもいれていなかった場合、解凍するとoTreeフォルダーに展開されるはずです。(ターミナル上で質問が表示されたらすべて上書き保存してください)

サーバーの起動

otree runprodserver 8000

あとは、上記のコマンドを実行し、表示されるリンクを実験を行いたいパソコンで入力すれば、外部からのアクセスが可能になります。

Session wideリンクでも、Room wideリンクなどをクラウドワークスなどに共有すれば一般人を対象にした実験も行えるはず。です。