Amazon EC2上でoTreeを動かしてみる

# はじめに
**経済ゲーム実験をオンライン上で行う環境を整える**ための記事です．経済ゲームの実験は**oTreeと呼ばれる経済ゲーム実験用のソフトウェア**を使います．AWS（Amazon Web Services）の1つであるAmazon EC2上にWebサーバを構築してoTreeを動かすことで，ブラウザを通じて複数の実験参加者（被験者）に経済ゲーム（公共財ゲーム，囚人のジレンマゲーム，最後通牒ゲーム，独裁者ゲーム等）をプレイしてもらうことができます．以下の順で，この**oTreeとAmazon EC2を用いたオンライン実験システム**の構築手順を説明していきます．この記事は@igenkiと@fuku_が共同で書きました．

1. AWSでのAmazon EC2の設定
1. EC2インスタンスの作成（起動）
1. EC2インスタンスへの接続
1. EC2インスタンス（OS）の日本語の設定
1. 各種ソフトのインストール
    1. VSCode
    1. Python
    1. oTreeとpsycopg2
    1. PostgreSQL
1. oTreeの起動と動作チェック
1. Webサーバとしての設定
    1. FireWallの設定
    1. 80番ポートの開放
    1. 外部からのoTreeサーバへの接続
    1. Elastic IPの設定（IPアドレスの固定）


# AWSでのAmazon EC2の設定
今回クラウドを用いてオンライン実験を行うため，AWSを使用します[^1]．AWSを使うためにはAWSアカウントが必要です．このアカウントは事前に作成しているものとします．アカウントを作成したら，ブラウザから[AWSマネジメントコンソール](https://console.aws.amazon.com/)にアクセスして，ご自身のログイン情報を入力します（以下の図）．
![mc_login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/53e633b0-949d-29a6-f5af-4afb87076297.png)


ログインすると以下のような**AWSマネジメントコンソールの操作画面**（ホーム画面）が出てくると思います．
※私は既にAWSのサービスのいくつかを利用していますので「最近アクセスしたサービス」にEC2などが出ていますが，初めてアクセスする場合は何もでないかと思います．

![ログイン後の画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/ad49691c-09bc-1fa8-5e6b-ecec7392d2b6.png)

### リージョンの設定
EC2のインスタンスを作成する前に，リージョン（地域）を選択します．画面右上に現在選んでいるリージョンが出てきています．私の画面では「東京」になっていますが，最初にログインした段階では「東京」になっていないかと思います．その場合，ドロップダウンリストから「アジアパシフィック（東京）」を選んでリージョンを東京に設定します．
※リージョンが東京になっていなくてもEC2インスタンスは作成できますが，物理的なサーバがおいてある場所が近いほうがレスポンスがはやくなるので，特に理由がなければ「東京」に設定しましょう．

![リージョン選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/d97b591c-a63c-8964-56b6-c0fc2ee353ac.png)


# EC2インスタンスの作成
いよいよEC2インスタンス（物理的な意味でいうと，サーバ）を作成します．画面左上の「サービス」の隣の検索窓に「EC2」と入れて，検索して出てきた**EC2**を選びます．（以下の図）

![EC2検索2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/6eb3af8b-3ce4-1fa2-d04a-9982b6188c16.png)

すると次のような画面になります．この中からオレンジ色の「インスタンスを起動」をクリックして，インスタンスを作成します（ここでは，「起動」と「作成」は同じ意味です）．
![EC2クリック後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/dde23d32-1351-86be-19e7-11aed8cd3c07.png)

クリックすると次のような「インスタンスを起動」の画面になります．名前のところにここでは「otree」と入力します．サーバのOSとしては今回は「Windows Server 2022 Base」を選択します[^2]．

![インスタンスを起動1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/d667c2bd-6d0b-f610-198a-c51a02e06c8a.png)

次に画面下にスクロールすると以下のような「インスタンスタイプ」を選択する画面になります．**無料枠で使えるのは「t2.micro」なのですが，t2.microだとメモリが1G程度しかなく動作がとても遅いので，ここではt2.smallを選ぶことにします**．

![インスタンスを起動2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/41e5922b-bce4-cc4b-9be1-8a4b26dc2ca8.png)

インスタンスにRDP（リモートデスクトップ）で安全に接続するために，その下の「キーペア」の設定をします．「新しいキーペアの作成」をクリックし，出てきた画面のキーペア名にここではotree_keyという名前を入力して「キーペアを作成」をクリックします．otree_key.pemというキーペアがダウンロードされますので，それを適切な場所に保存しておきます（後ほど，RDPで接続する時に使います）．

![キーペアを作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/8aa41ed2-8a47-47a2-abeb-26400127fc0a.png)

以上でインスタンスの作成は完了ですので，元の画面右の「インスタンスを起動」をクリックして作成を終了します．数秒待つとインスタンスが作成されます．その後，自動的にインスタンスが開始され，インスタンスの状態も「実行中」となります．以下の図で示しているインスタンスの状態は，左のサイドバーの「インスタンス」をクリックすることで確認できます．

![インスタンス一覧.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/5c59a442-2798-3180-3893-0dfe07f4c07e.png)

# EC2インスタンスへの接続
次に，いま作ったoTreeというインスタンスに**リモートデスクトップを用いて外部から接続**します．まずは上の画像でotreeというインスタンスの「インスタンスID」のところをクリックします．すると下のようなインスタンスの詳細が見れる画面になります．画面右上の「接続」（赤色の四角で囲んだ箇所）をクリックします．

![インスタンスに接続.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/ca68cabc-9e6e-cb50-286e-0172ea76a460.png)

すると下の画面が出てきますので，「RDPクライアント」のタブをクリックします．赤い四角で囲んだ「リモートデスクトップファイルのダウンロード」をクリックします．

![RDPクライアント選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/a0cb815a-6baf-9154-73ea-678e2249cedc.png)

するとotree.rdpという名前のクライアントファイルがダウンロードされますので，それをダブルクリックします．すると以下の画面が出ますので「接続」をクリックします．

![RDPファイル起動.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/177f12a2-f491-0215-10f9-374c6f5a0c5e.png)

接続のためのパスワードを聞かれます．

![RDPファイルパスワード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/09880b02-4754-35fd-34c4-b759b9c1a5e7.png)

このパスワードは元の「インスタンスに接続」の画面に戻って，赤い四角で囲んだ「パスワードを取得」を押して入手します．

![パスワードを取得.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/8fe044c5-3bfb-cb72-d0ba-f9256c941171.png)

すると下の画面が出てくるので，赤い四角で囲った「Browse」をクリックして，「キーペアを作成」のところで作った「otree_key.pem」を選んで「開く」を押します．最後に「パスワードを復号化」をクリックします．

![Windowsパスワードを取得.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/a91ab937-4705-3ad7-1226-736f0c713a5d.png)

すると元の画面に戻り，パスワードが入力された状態（画面では黒塗りにして隠しています）になりますので，その内容をコピーして，さきほど求められたパスワードのところに貼り付けてOKを押します．

![パスワードの複合化に成功.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/dc717e27-edf2-1609-1e60-3e22768a7509.png)

以下の「証明書」に関する画面が出ますので，「はい」を押します．

![RDP警告.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/0d91c60d-50df-86f7-c8e0-760a10dfc47a.png)

すると以下の画面のようにEC2インスタンスにリモートデスクトップで接続できます．あとはローカルのPCを操作する感覚でリモートからEC2インスタンス（Windows 2022 Server）を操作できます．

![リモートデスクトップ初期画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/196febce-3177-0ef6-fc90-fdfe93eef07e.png)

# EC2インスタンス（OS）の日本語の設定
ここまででEC2インスタンスにリモートで接続して操作できるようになりました．初期状態では，OSで使用されているデフォルトの言語が英語なので，これを日本語に変更します．画面左下のWindowsロゴキーをクリックして歯車の「Settings」をクリックします．出てきた下の画面から赤い四角で囲んだ「Time & Language」を押します．

![Settings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/9020a847-3e97-ad1e-a377-28962a35a50c.png)

押して出てきた画面から「Language」を選択して，赤い四角で囲んだ「Add a language」を押します．

![language.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/13b86f19-5e81-ac09-518e-609231979f1d.png)

「日本語」を検索して選んで「Next」を押します．

![japanese選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/6f0d13e9-f331-362f-f744-e1885707ecb5.png)

出てきた画面で「Install」を押します．インストールが始まります．インストールには5分から10分ほどかかると思います．

![japaneseInstall.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/3841943f-362c-05dd-d01b-1fe9b6e7b77b.png)

インストールが終わったら，以下の画面の「Windows display language」で日本語が選べるようになっているので「日本語」を選択します．

![WindowsDisplayLanguage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/c522e395-a6b7-d372-4aee-3a3850ca79b5.png)

日本語が表示されるようになるには，一旦サインアウトする必要があるので，Windowsロゴキーをクリックして「Administrator」を選び，サインアウトします．ここでリモート接続が切れるので，数分待ってから，otree.rdpを再びダブルクリックして，同様の手順でリモート接続します．これでOSで表示される言語が日本語になりました．

# 各種ソフトのインストール
これでOSの設定は終わったので，oTreeを使うための各種ソフトをインストールしていきます．これらのソフトのインストールは明治大学の後藤晶先生の[玉川大学脳科学トレーニングコース2022](https://akiragoto.notion.site/akiragoto/49e4eea57edb4287a2670fd655fae37d?v=0869bfcbae7a42e4adc614fd6016dbdf)の[5.サーバにアップしよう](https://akiragoto.notion.site/akiragoto/49e4eea57edb4287a2670fd655fae37d?v=0869bfcbae7a42e4adc614fd6016dbdf&p=576b3afb3c9d4ff59e10cdd6a6d10d05&pm=s)の資料を参考にしていますので，そちらも合わせてご覧ください．

## VSCode
プログラムを編集するエディタは何でも良いのですが，ここでは便利で高機能なVSCodeをインストールします．ブラウザのEdgeを開いてVSCodeを検索し，以下のページから「Download for Windows」をクリックします．ダウンロードされたファイルを開いて，あとは指示された手順通りにVSCodeをインストールします．

![installVSCode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/ef18b195-1b88-dccc-dade-b1c89005c059.png)

## Python
oTreeはPythonのWebフレームワークであるDjangoがベースとなっているのでPythonをインストールしておく必要があります．Edgeのアドレスバーにhttps://python.org/downloads を入力すると以下の画面が出ます．「Download Python 3.10.7」（バージョンは2022/9/9現在）をクリックしてファイルをダウンロードします．

![installPython.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/670d87bb-0dff-f716-de42-729a55ac58ab.png)

ファイルを開いてインストールを始めます．**インストールの最初の画面で「Add Python 3.10 to PATH」（画面の赤い四角のところ）にチェックを入れてから，**「Install Now」を押します．後は指示に従ってインストールします．

![addPythonPath.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/3cfbcd7e-09cc-7f59-03c6-3da00c9e45b2.png)

Pythonが正常にインストールされたか確認します．Windows PowerShellを開き，「python --version」というコマンドを打ってEnterを押します．以下の画面のようにPythonのバージョンが表示されれば，Pythonが正常にインストールされています．

![pythonVersion.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/be9a2d0e-cac8-168b-25f1-a1e925e4cbff.png)

## oTreeとpsycopg2
いよいよoTreeをインストールします．引き続きPowerShell上で「pip install -U otree」というコマンドを打って，Enterを押します．oTreeのインストールが自動で始まります．特にエラーも出なければインストールは終了です．

![installotree.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/06385f2c-0bed-7a10-e54f-d58130535fc8.png)

次に，PythonからPostgreSQLに接続するためのアダプタであるpsycopg2をインストールします．引き続きPowerShell上で「pip install -U psycopg2」というコマンドを打って，Enterを押します．インストールが自動で始まります．特にエラーが出なければインストールは終了です．

![installpsycopg2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/aa313096-d749-1ba9-272f-7769e4b4bd26.png)

## PostgreSQL
実験データをデータベースに貯めるため，データベースアプリが必要です．ここではデータベースアプリとしてPostgreSQLをインストールします．Edgeのアドレスバーにhttps://www.enterprisedb.com/downloads/postgres-postgresql-downloads を入力してEnterを押します．以下の画面が出ますので，「Windows x86-64」の「14.5」（2022/9/9現在）のバージョンをダウンロードします．

![installpostgreSQL.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/bdc91b31-55d3-1712-2869-5d064d4f3d5b.png)

ファイルをクリックするとインストールが始まります．指示通りにクリックしていきますが，途中で「Password」という画面がありますのでパスワードを設定してください（※ここではotreeというパスワードにします）．

![postgreSQLpassword.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/b2083daa-b47e-3435-31c9-28aea0e3ec36.png)

次にいくつか進むとLocaleを設定する画面になりますので，「Japanese, Japan」を選択してください．

![postgreSQLlocale.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/3f551247-f6ea-fb42-a988-b6e95d3f1132.png)

あとは指示通りに進めるとインストールが終了します．次にPostgreSQLのGUI管理ツールであるpgAdminを使って少し設定をします．Windowsロゴキーをクリックすると「P」のところにPostgreSQLが見つかりますので，そのフォルダの中からpgAdmin 4をクリックして起動します．

![pgAdmin4を開く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/2a4225fb-2ca6-9e98-c2bc-7dbcdf547583.png)

パスワードを聞かれますので，先ほど設定した「otree」を入力します．

![pgAdminPassword.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/57141c5a-3420-e4e7-bb4a-07986ba5af0d.png)

左のサイドバーの「Servers」をクリックして，「Databases」を右クリックし，「Create」→「Database」をクリックします．

![createDatabase.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/6d837d1d-f3a1-e91b-34c7-8f1cea3eb8b1.png)

すると下の画面が出てくるので，Databaseのところに「otree_db」と入力し，「Save」を押します．

![otree_db.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/ae0d33c1-3e52-e014-08c6-263cae1496f2.png)

次にクライアントの認証ファイルであるpg_hba.confファイルを少し変更する必要があります．`C:\Program Files\PostgreSQL\14\data`にpg_hba.confがありますので，これをVSCodeで開いて編集します（メモ帳等で開いても良いです）．**85-94行目にある「scram-sha-256」という文字列をすべて「trust」に変更**してください．全部で6個あります．変更が済んだらファイルを上書き保存してください．

![pg_hbaconf_trust.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/d76b0d03-20cd-f7d2-1be3-a32f3a3ee3bd.png)

# oTreeの起動と動作チェック
以上でoTreeを動かすために必要な準備は整いましたので，oTreeの起動と動作チェックを行います．
この項目も後藤晶先生の[玉川大学脳科学トレーニングコース2022](https://akiragoto.notion.site/akiragoto/49e4eea57edb4287a2670fd655fae37d?v=0869bfcbae7a42e4adc614fd6016dbdf)の[1.オンラインアンケートを作ってみよう](https://akiragoto.notion.site/akiragoto/49e4eea57edb4287a2670fd655fae37d?v=0869bfcbae7a42e4adc614fd6016dbdf&p=acc6e3b98f5e431ab74ccf55ea1bd373&pm=s)の資料を参考にしていますので，そちらも合わせてご覧ください．

まずPowerShellを起動してDesktopに`cd Desktop`で移動し，`mkdir otreetest`で，otreetestという名前のフォルダを作ります．

![mkdir_otreetest.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/2f44c23d-b942-a49e-5809-d31fc620e2a0.png)

次にotreetestフォルダに`cd otreetest`で移動し，`otree startproject otree`というコマンドを打ちます．すると「otree」フォルダ以下に各種ファイルが自動で生成されます．

![startproject_otree.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/43efaed0-16ce-0049-a011-5d79c627d228.png)

次にcdコマンドでotreeフォルダに移動し，そこで`otree devserver`というコマンドを打って，otreeサーバを起動します．

![otreedevserver.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/9d56836c-b59a-6d86-7ea5-8beab25295a8.png)

oTreeが正常に動作しているか確かめてみます．Edgeのアドレスバーにhttp://localhost:8000/ を入力してEnterを押します．以下のような画面が出てきたら成功です．

![otreeDemo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/39848dd3-ecf7-6b32-97cb-ea535beeeef5.png)

「survey」をクリックしてみてください．「P1」を選ぶと「アンケート調査」が始まると思います．これは，oTreeに最初から用意されているデモのプログラムです．自分でoTreeのプログラムを作ってみたい場合は，[1.オンラインアンケートを作ってみよう](https://akiragoto.notion.site/akiragoto/49e4eea57edb4287a2670fd655fae37d?v=0869bfcbae7a42e4adc614fd6016dbdf&p=acc6e3b98f5e431ab74ccf55ea1bd373&pm=s)で「オンラインアンケート」のアプリを作ってoTreeに登録してみてください．単なるアンケートではなく，経済ゲームのプログラムを作りたい場合は[玉川大学脳科学トレーニングコース2022](https://akiragoto.notion.site/akiragoto/49e4eea57edb4287a2670fd655fae37d?v=0869bfcbae7a42e4adc614fd6016dbdf)の2，3，4の項目を辿ることでできます．

これで，**EC2インスタンス上でローカルにoTreeを動かす**ことができました．

# Webサーバとしての設定
ここまででは，**ローカルの環境でしかoTreeが動いていません**．本来の目的である**オンラインで経済ゲーム実験**を行うためには，**外部からoTreeに接続できるようにする**必要があります．ここではその設定をします．

## Firewallの設定
まずは外部からの接続を許すためにEC2上のFireWallの設定をします．デスクトップ画面下の検索窓に「ファイア」などと打つと「ファイアウォールの状態の確認」が出てくるので，それをクリックします．

![ファイアウォールの状態の確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/f7076fda-af89-2cab-5508-b84779bbf76b.png)

出てきた画面から左のサイドバーの「詳細設定」をクリックします．

![ファイアウォール詳細設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/399624f7-d282-a9d7-56f8-ed03ae9b4e3f.png)

出てきた画面から「受信の規則」を押すと右側のサイドバーに「新しい規則」が出るのでそれをクリックします．

![受信の規則.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/1b1c2ae9-d9b6-38f4-779c-31a929076c58.png)

すると以下の画面がでるので，「ポート」を選び，

![ポート.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/f367e26f-5328-b9ea-5120-a46f6fb435aa.png)

「特定のローカルポート」に80を入力して「次へ」を押していきます．

![特定のポート80.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/57ab04b7-9354-5f59-a32c-196f6d80228b.png)

最後の「名前」の箇所にoTreeを入力して完了です．これでFireWallの設定は完了です．

![名前oTree.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/d19806ca-c64e-78bc-6f83-4a7dd6eb3f39.png)

## 80番ポートの開放
EC2上でも80番ポートを開放して外部からの接続を許可する必要があります．AWSマネジメントコンソールの画面に戻り，左のサイドバーから「セキュリティグループ」を選びます．この中から上記で作成したインスタンスに対応する「セキュリティグループID」を選んでクリックします（インスタンスの情報からセキュリティグループのIDは調べられます）．今回の場合は一番下のものです．

![セキュリティグループ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/cc0cfe06-621b-f24c-15f2-eaac68458b0a.png)

出てきた画面の「インバウンドのルールを編集」（赤い四角）をクリックします．

![セキュリティグループ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/e561e5a7-8d33-5c75-da63-dfe6f3baf5d8.png)

「ルールの追加」を押して，タイプで「HTTP」を選び，ソースのアドレス欄からCIDRブロックで一番上の「0.0.0.0/0」を選択し，「ルールを保存」を押します．

![インバウンドルールの編集.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/be7d3922-5db2-240f-c3e8-1336c5f835a6.png)

これでEC2も80番ポートでの接続を許可するようになりました．

## 外部からのoTreeサーバへの接続
外部から接続する準備が整いましたので，EC2インスタンスのリモート接続画面に戻り，PowerShellで一旦Ctrl+Cを押して起動していたotreeを停止します．その後，`otree prodserver 80`というコマンドを打ちます．これで，**oTreeサーバを80番ポートで起動した**ことになります．

![otree_prodserver80.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/ed62bd5d-c468-505f-d5cc-c949218f3dcf.png)

外部からブラウザ（HTTP）で接続できるか確認してみましょう．AWSのインスタンスの画面のパブリックIPv4アドレスの欄を見ると，このEC2インスタンスのパブリックなIPアドレスが13.112.244.59であることが分かります．

![パブリックアドレス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/33fe717a-34f5-b92b-d288-83c59ce07230.png)

外部の端末（パソコン，タブレット，スマホ等）から，ブラウザのアドレスバーにhttp://13.112.244.59 と入れて接続してみます．以下のようにoTreeに接続できている画面が出てきたら成功です（現在は接続できません）．

![外部接続.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/4268d3bb-0635-ee9e-90c7-332975d56508.png)

## Elastic IPの設定（IPアドレスの固定）
EC2インスタンスのパブリックのIPアドレスは，**インスタンスを停止して，開始するたびに変更になります**．**毎回固定したIPアドレスを使うためには，EC2上でのElastic IPの設定が必要**です．ここではその設定を行います．サイドバーから「Elastic IP」（赤い四角で囲んだところ）をクリックすると以下の画面になります．画面右上の「Elastic IPアドレスを割り当てる」をクリックします．

![elasticIP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/fd124963-ec0b-71c5-4fdd-6d9db72331f7.png)

以下の画面が出ますので「割り当て」をクリックします．

![IP割当.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/5b8518f5-7731-92f2-92fa-3bdbe07a0204.png)

すると，ここでは，54.248.63.164というIPアドレスが新たに割り当てられたことが分かります．「割り当てられたIPv4アドレス」欄のこのIPアドレスをクリックします．

![ElasticIP2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/f3eb6564-1ddd-d349-dc71-75a3d7aa20c5.png)

以下の画面が出てきます．まだこのIPアドレスは**EC2インスタンスと関連付けができていない**ので，画面右上の「Elastic IPアドレスの関連付け」をクリックします．

![IP割当2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/459589d5-bfc7-0287-4163-49c81a6316e5.png)

以下の画面が出てきますので，インスタンスの欄（赤い四角のところ）に上記で作ったインスタンスを指定して，画面右下の「関連付ける」をクリックします．

![IP関連付け.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/7012c94b-ff9d-e3f9-8d34-822c581e4964.png)

これで，毎回この固定したIPアドレスでoTreeサーバにアクセスできるようになりました．**1つ注意ですが，IPアドレスが13.112.244.59から54.248.63.164に変わりましたので，接続情報が変わります．リモートデスクトップでサーバに接続する時は，もう一度リモートデスクトップのクライアントファイルをダウンロードしてから，そのファイルで接続する必要があります**．接続のパスワードは変わりません．

最後に再びoTreeサーバをPowerShellで起動して，固定したIPアドレスで接続できるか確認してみましょう．外部の端末のブラウザのアドレスバーにhttp://54.248.63.164/ を入力してアクセスします．以下の画面が出て，無事にアクセスできることが分かりました（現在はインスタンスを停止しているのでアクセスできません）．

![ElasticIP_demo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663791/adfbbc46-c2b2-76d3-aa27-2254a0492d47.png)

以上で，Amazon EC2上でのoTreeの動かし方の解説を終わります．これから，クラウド環境で経済ゲーム実験を行おうと考えている方のお役に立てば幸いです．

[^1]: AWSではなくHerokuを用いてもoTreeのオンライン実験システムは構築できます．
[^2]: もちろんLinuxでoTree用のサーバを作る場合は，UbuntuやRedHatなどを選んで構いません．