GAE+Twilioで色々やる 〜1. 新規プロジェクトの作成からデプロイまで〜

これは[株式会社dott](http://thedott.io)が2016/08に会津大学で行った講義の補足資料です。

#新規プロジェクトの作成
ディベロッパーコンソールにアクセス
https://console.developers.google.com/project
![API ライブラリ.png](https://qiita-image-store.s3.amazonaws.com/0/19695/53e84884-9de5-865a-695f-9b9429718f30.png)

CloudPlatformコンソールにアクセスし、何か出るのに同意して続行
![利用の開始.png](https://qiita-image-store.s3.amazonaws.com/0/19695/9c5fbb9e-4fb5-bddb-7380-d04b30ddf1f0.png)

プロジェクトを作成します。
![利用の開始3.png](https://qiita-image-store.s3.amazonaws.com/0/19695/73734a43-7446-754d-79e3-16f3ed4d44e0.png)

プロジェクト名を設定します。
ここでプロジェクトIDも任意のものに変更しておきます。ただし、プロジェクトIDはユニークなものである必要がありますので注意してください（他の人が使っているIDだと「このプロジェクトIDは使用できません」と言われます）
日本リージョンは2016年8月8日現在、リリースされてないんで今回はUS-centralを選択してください。
![利用の開始4.png](https://qiita-image-store.s3.amazonaws.com/0/19695/edf04d7e-67f9-3a49-c042-6b2c2427b05c.png)

作成ボタンを押したらプロジェクトが作成中になるので、そのまま待機しましょう。
![利用の開始5.png](https://qiita-image-store.s3.amazonaws.com/0/19695/7ffe5599-6946-8283-cf3a-019c7642bf0f.png)

以上で新規プロジェクトの完成です。


#GCPの課金設定
次にGCPの課金設定を行います。クレジットカードが必要になるので準備してください。
なお、クレジットカードの登録はアカウント認証のために使われるのでここで登録したからといって自動的に課金されることはありません。
また、登録してから６０日間は試用期間として$300分のクレジットが与えられます。

左上のメニューから、
![ホーム   auto tel.png](https://qiita-image-store.s3.amazonaws.com/0/19695/e8014981-2359-f33e-22f9-007d9872c14f.png)

お支払いを選択してください。
![請求先アカウント   auto tel.png](https://qiita-image-store.s3.amazonaws.com/0/19695/22150246-a98b-b12f-93a9-d4b753f84615.png)

利用規約に同意して、
![Google Cloud Platform の無料試用   auto tel.png](https://qiita-image-store.s3.amazonaws.com/0/19695/7d55ae6a-1c59-557a-551d-d66e18f89a24.png)

個人情報を入力します。
![Google Cloud Platform の無料試用   auto tel2.png](https://qiita-image-store.s3.amazonaws.com/0/19695/4265fb1e-551a-9856-3f8d-c90a1b2f7a15.png)

画面通りに進んでいけばトライアル申し込み完了のモーダル画面が表示されます。
![請求先アカウント 概要   auto tel.png](https://qiita-image-store.s3.amazonaws.com/0/19695/346f3f14-f6fb-a81b-1c8a-ca0499e6609d.png)

以上でGCPの課金設定が完了です。


#APIをチラ見
GCPにも色々なAPIがあるのでチラ見してみましょう。
また、左上のメニューから今度はAPI Managerを選択してください。

ダッシュボードが開かれるので「+APIを有効にする」のリンクを選択してください。
![ダッシュボード   auto tel.png](https://qiita-image-store.s3.amazonaws.com/0/19695/c8b3e297-7ae5-63d0-9664-376338105f2d.png)

いっぱいあります。
![API ライブラリ   auto tel.png](https://qiita-image-store.s3.amazonaws.com/0/19695/363216ff-de31-b08f-72e8-91445500a5c2.png)

そのうち触りましょう。




#GAE SDKのインストール
さて、新規プロジェクトを作ったり、クレジットカードを登録したりしましたので次はGAEのSDKのインストールを行いましょう。
SDKって言うのは要するにGAE使うために必要なものを全部まとめたセットみたいなものです。
##pythonをインストール
まず、公式サイトからpython2.7.xxをインストール(**3.xxではないので注意**)します。
https://www.python.org/downloads/
![Download Python   Python.org.png](https://qiita-image-store.s3.amazonaws.com/0/19695/10d3abeb-9d90-32a0-e40c-1aa734dd0d45.png)
※python -V　でインストールしているバージョンを確認可能です。

##GAEのSDKをインストール
次にGAEのSDKを以下からDLします。
https://cloud.google.com/appengine/downloads

今回はGoogle App Engine SDK for PHPを選択してください。
![Download the Google App Engine SDK     App Engine Documentation     Google Cloud Platform.png](https://qiita-image-store.s3.amazonaws.com/0/19695/704b3db8-2cad-c5ce-d572-267b0afd3d2e.png)


DLしたファイルを実行しインストールを開始します。
Macの場合はLauncherアイコンをApplicationsフォルダにドラッグ＆ドロップ
![スクリーンショット 2016-08-08 22.11.30.png](https://qiita-image-store.s3.amazonaws.com/0/19695/a01b6eab-b0af-3fdb-883e-ec6a6cd6d696.png)
Windowsの場合はどんどんNext押していって最後にRunLauncherを押せばOKです。


#GAE Launcherでローカル開発環境の起動〜デプロイ
##ローカル開発環境の準備
GAE Launcherを起動したらメニューから、
File > New Application
と進みます。
![スクリーンショット 2016-08-08 22.01.53.png](https://qiita-image-store.s3.amazonaws.com/0/19695/39534501-5e25-a248-a25c-f40ac23fc275.png)

そうすると下のような画面が出てくるので、Application ID:に初めに選択した「プロジェクトID」を入力します。
Application Directoryは自分の作業フォルダを選択してください。
Runtimeは今回はPHPを選択し、Admin PortとPortはデフォルトのままでCreateボタンを押します。

すでに当該のポートを使用している場合は使っていないポートを選択してください。
なお、Macでは「lsof -i:8080」で8080ポートが使われているかどうかを調べられます。
windowsはこちら（ http://qiita.com/7of9/items/1d2e123d592d22fd6c55 ）を参照しましょう。
![スクリーンショット 2016-08-08 22.04.10.png](https://qiita-image-store.s3.amazonaws.com/0/19695/8d85ecc5-099a-6ee3-bff2-593c9a0d6690.png)

設定が終わったら左上のRunボタンを押すとローカルのWebサーバーが起動します。
下のようにNameの横のアイコンがRunボタンと同様になったら起動成功です。
その状態でBrowseボタンをクリックするとブラウザでHello worldが表示されます。
![スクリーンショット 2016-08-08 22.05.39.png](https://qiita-image-store.s3.amazonaws.com/0/19695/ebdbf9a2-8108-d033-b0a6-167e99fe216b.png)

##デプロイ
ローカルでの起動が確認できたらいよいよデプロイを行います。
デプロイというのは「システムをサーバーにアップし誰でも使える状態にする」と考えておけばOK。

最初のデプロイ時はID(メールアドレス)とパスワードを聞かれますが、これは自分のgoogleアカウントを入力してください。
その後、
<img width="784" alt="スクリーンショット 2016-08-09 00.38.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/19695/24cbc85f-ac17-1a1e-8490-68def7c25c58.png">
のような感じで「code 0」や「You can close this window」などと表示されたらデプロイ成功です。

GAEのダッシュボード（https://console.cloud.google.com/appengine ）に行き、
![App Engine ダッシュボード   auto tel4.png](https://qiita-image-store.s3.amazonaws.com/0/19695/65abd7ca-e38f-c4a7-89ec-d0f912065f12.png)
右上のリンク先を確認し、ローカル同様にhello worldが表示されていることを確認してください。

以上でGAEのデプロイが完了です。

##デプロイ時のエラーなどなどについて
###409エラー
>Error 409: --- begin server output ---
Another transaction by user （ユーザー名） is already in progress for app: s~auto-tel, version: 1. That user can undo the transaction with "appcfg rollback".
--- end server output ---
2013-02-07 23:58:41 (Process exited with code 1)
You can close this window now.

のようなエラーが発生した場合、ロールバックするまでデプロイすることはできません。
ロールバックというのは要するに問題発生前にファイルを戻すことです。
ロールバックの方法は以下を参照してください。
http://ameblo.jp/m-yurari/entry-10707944813.html

###403エラー
プロジェクトIDを共有し、適切な権限を付与すれば１つのプロジェクトを複数人で触ることが可能です。
権限が適切に付与されていない場合、
![スクリーンショット 2016-08-08 22.21.44.png](https://qiita-image-store.s3.amazonaws.com/0/19695/b86c7e31-7eab-6fa1-b771-0ad88e984c54.png)
のようなエラーが発生します。

この場合は、プロジェクトに権限を持ったユーザーを追加する必要があります。
CloudPlatformコンソールの左上のメニューから「IAMと管理」を選択します。
![IAM   auto tel3.png](https://qiita-image-store.s3.amazonaws.com/0/19695/a9865f35-0f47-a3f7-d548-c39cd0ea06ea.png)

その後の画面で「＋追加」リンクを押し、
![スクリーンショット 2016-08-09 00.55.02.png](https://qiita-image-store.s3.amazonaws.com/0/19695/bf371b99-8700-08af-de86-6a82a550a112.png)
メンバーに追加したいユーザーのgoogleアカウントを入力、役割をプロジェクトのオーナーor編集者にするとデプロイが可能になります。


GAEの準備編終了。