App Maker + Google Cloud SQL の組み合わせで使ってみる(事前設定)

App Maker + Google Cloud SQL についてあまり情報がなかったので、試行錯誤しつつまとめてみることにしました。間違いなどあればご指摘頂けると助かります。

本当はGoogle Drive Tables(Google Drive上にDBデータを保存できるステキ機能)を使いたかったんですが、現在この機能は使用不可と。。。(泣
代わりにGoogle Cloud SQLの使用が推奨ということなので、ちょっと手を出してみようかと。

#とりあえず、モデル作成時にGoogle Cloud SQLが選択できない
当然と言えば当然ですが、何も設定していない状態でAppMakerからモデル作成と進んでも、選択肢にGoogle Cloud SQLが表示されるものの選択はできません。
![Create Model](https://qiita-image-store.s3.amazonaws.com/0/272546/0cd9be92-3ede-ca9b-8cf7-75554998c058.png)

では、以降でGoogle Cloud SQLを選択できるようにするまでの流れを説明していきます。

#GCPにGoogle Cloud SQLのインスタンスを作成する
まずは、接続対象となるDB(Google Cloud SQL)インスタンスを用意しないと始まらないので、その作成からです。
AppMakerのモデルで使用する為にはいくつかの制約[^制約]があるので、そこも説明します。

[GCP](https://console.cloud.google.com/)にアクセスして、メニューからSQLを選択します。
プロジェクトが存在しない場合は先に作成してください。
![SQLメニュー](https://qiita-image-store.s3.amazonaws.com/0/272546/2eb5bf6c-0017-516c-afcb-e7b2fa504d7d.png)

そして、インスタンスを作成と進みます。
![インスタンスを作成](https://qiita-image-store.s3.amazonaws.com/0/272546/58071ebf-dbc2-64c2-3f94-5aba5b422f5c.png)

次にデータベースエンジンの選択ですが、ここでは**MySQL**[^制約]を選択します。
![データベースエンジンの選択](https://qiita-image-store.s3.amazonaws.com/0/272546/44d27ca1-f7d9-a66a-7c65-742e38d2db1e.png)

インスタンスタイプはどちらでも構いませんが、第2世代がお勧めです。
![インスタンスタイプ](https://qiita-image-store.s3.amazonaws.com/0/272546/c296e45a-6e5a-d8fd-bd53-78678b46168b.png)

そして、少々注意が必要な各種設定関連ですが、

- インスタンスID  
お好きなIDを設定してください。
- リージョン  
**us-central1**[^制約]を選択してください。  
⇒日本人なら東京リージョン(asia-northeast1)を選択したくなりますが、us-central1が一番パフォーマンスが出るらしいです。  
参考) [公式ドキュメント](https://developers.google.com/appmaker/models/cloudsql#Terms)  

> Note: For best performance, choose us-central1 as the region for your new instance, regardless of your geographic location.

- 設定オプションを表示  
こちらも表示して設定したほうが良いです。(設定内容は後述

![インスタンスの詳細](https://qiita-image-store.s3.amazonaws.com/0/272546/8b9a6e7e-9bc5-b410-e6e3-370678a26f96.png)

設定オプションを表示して、

- マシンタイプとストレージの設定  
デフォルトだと**db-n1-standard-1**($49.31/月)になっていますので、用途によって変更します。  
テスト目的であれば最小構成の**db-f1-micro**($7.67/月)でも良いかと。  
ストレージタイプはSSDとHDDで選べます。テスト目的なら低コストのHDDもありですね。
- 自動バックアップと高可用性の有効化  
バックアップにもストレージサイズで料金が発生します。不要なら切っておきましょう。

![設定オプション](https://qiita-image-store.s3.amazonaws.com/0/272546/abb041c0-463e-531f-ea48-333af261a910.png)

設定が終わったら作成ボタンを押してしばし待ちます。作成には数分の時間がかかります。
下記のようにチェックマークになれば完了です。
![インスタンス作成完了](https://qiita-image-store.s3.amazonaws.com/0/272546/aabd82b6-067d-99fe-d6a2-1465338ead86.png)

これでGoogle Cloud SQLインスタンスの作成は完了です。
次はAppMakerからのアクセス権を設定します。

#Google Cloud SQLにApp Makerからのアクセス権を設定する
Google Cloud SQLのインスタンスを作成したプロジェクトのメニューからIAMと管理を選択します。
![IAM](https://qiita-image-store.s3.amazonaws.com/0/272546/f20e384b-ad06-f247-bc38-cb4bc41a3597.png)

IAMの追加で下記メンバーを追加します。

- メンバー  
appmaker-maestro@appspot.gserviceaccount.com
- 役割  
Cloud SQL 管理者

![権限追加](https://qiita-image-store.s3.amazonaws.com/0/272546/567e4122-aeb4-d43e-fbcd-a12535b04c8f.png)

下記のように追加されればOKです。
![IAM追加後.png](https://qiita-image-store.s3.amazonaws.com/0/272546/43176cc0-55de-89ca-2491-2a0f230ffaf4.png)

ここまででGoogle Cloud SQL(GCP側)の設定は完了です。
引き続きG Suit側の設定を行います。

#App Makerで使用できるGoogle Cloud SQLインスタンスを設定する
今度はG Suite側の設定となります。
管理者メニューからApp Makerの設定を開きます。
![AppMaker設定.png](https://qiita-image-store.s3.amazonaws.com/0/272546/eaa50dd4-84e9-2c06-ac87-3ac6251b1690.png)

そこのデータベース設定に作成したGoogle Cloud SQLインスタンスの接続名を入力します。
![データベース設定.png](https://qiita-image-store.s3.amazonaws.com/0/272546/e12cba91-9e1b-bbde-7a3b-21e83d72474f.png)

ここまでで事前の設定は完了です。
この状態で改めてAppMakerからモデル作成と進むと、下記のようにGoogle Cloud SQLが選択可能になっているはずです。
![Create Model有効.png](https://qiita-image-store.s3.amazonaws.com/0/272546/09d2b3ee-93a2-e665-224b-a97b8abdd46b.png)

<BR>

NEXT.
次回は実際にGoogle Cloud SQL(DB)へのアクセスを試してみます。
[App Maker + Google Cloud SQL の組み合わせで使ってみる(モデル作成)](https://qiita.com/kamina/items/0c26446a173e18966f8e)

---
[^制約]: AppMakerのモデルで使用する為の制約