Google Cloudでインフラ構築をguiで支援するサービス「Application Design Center」ファーストインプレッション

# はじめに
https://cloud.google.com/application-design-center/docs/overview

こんにちは、masa-asaです！

Google Cloud（GC）でApplication Design Centerというサービスがプレビューになりました。
このサービスはGCのインフラ作成を補助するサービスで、gui上で各リソースをキャンバス上に配置し、関連図のような形式でインフラを定義できるというものです。
guiで配置されたインフラは裏ではterraformで記述されており、作業者のCloudShell上で実際にコードを確認することができます。

Application Design Centerでインフラを構築するためには次のようなステップで実現することができます。
- テンプレートの作成
- テンプレートからアプリケーションの作成
- サービスアカウントの整備
- アプリケーションからのデプロイ

# Application Design Centerの始め方
検索窓で「Application Design Center」と検索して該当のサービスを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/7f49c5f5-d84c-46cf-bc07-cde9e2fbbe76.png)

「Application Design Center」画面の「テンプレート」から「Create Templete」をクリックします。するとテンプレートの作成画面になるので、名前や各種Ownerの設定を行います。とりあえず試すだけなら、名前だけ決めてしまえば大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/097c4d0e-7113-479e-b507-83363ded0905.png)


![{D671F0A2-B413-4C4E-A3FF-176F70225D37}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/b41e02e3-ecb5-4ad7-a34c-eaa4a460b8a3.png)

# テンプレート画面
テンプレートの画面では中央のキャンバスにリソースを追加していき、リソース間の接続を線で表現していきます。
画面左側にあるリソースが、利用可能なリソース一覧で、左側の一覧から任意のリソースをクリックすると、キャンバス上にそのリソースが追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/b5156ccd-86b4-484d-8882-32a62538666b.png)

あるリソースと別のリソースを関連付ける際には、キャンバスのリソース上にあるプラスボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/fabb1d47-f4b7-4714-b90c-a0ff4afdf60d.png)
すると、対象のサービス（例ではCloud Run）に関連付けできるサービス一覧が表示されるので、目当てのサービスを選択します。画像では「Memorystore for Redis」と「CloudSQL(PostfreSQL)」しか表示されていませんが、スクロールするとほかにもたくさん出てきます。2025年3月13日時点では、Cloud Runから関連付け可能なサービスを列挙すると以下になります。

![{79030A20-0E1A-4061-8DC8-D300CF51A71B}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/2deda4f3-4b25-438d-94fc-0b9080865678.png)

|Cloud Runから関連付け可能なサービス名  |
|---|
|Memorystore for Redis|
|CloudSQL(PostfreSQL)|
|CloudSQL(MySQL)|
|Service account|
|Cloud Run|
|Secret Manager|
|Vertex AI|
|Cloud Storage|

また、それぞれが関連付け可能なサービスであれば丸いポインタどうしをドラッグ&ドロップでつなぐこともできます。

![{FBDBD83A-13C6-4463-86A1-EC9A204AA152}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/3836dc3c-601b-4e9c-ab46-c78eee554423.png)



キャンバス上の任意のサービスをクリックするとそのサービスの詳細設定画面が右側に現れます。リソース名やリージョンの設定のほか、サービス固有の様々な詳細設定を行うことができます。スクリーンショットでは一部しか映っていませんが、Cloud Runの例ではコンテナの設定やVPCアクセスの設定などが行えます。

![{C11D294D-DF0D-4D35-A54E-16C5C08D5AD7}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/902d1f27-daca-4680-9c62-624d3fb2e62c.png)


### Configure an app
テンプレートの作成ができたら、「Configure an App」をクリックします。そして「Create new application」
をクリックします。するとアプリ作成の設定画面が現れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/175b57a4-e916-4642-8374-e47501927eaa.png)

アプリの作成設定では、アプリ名とリージョンがの設定が必須です。なお2025年3月13日時点で利用可能なリージョンは「aisa-east1(台湾)」「europe-west1(ベルギー)」「us-central1(アイオワ)」「us-east1(サウスカロライナ)」「us-west2(ロサンゼルス)」のみです。日本リージョンは未対応であることにご注意ください。

設定が完了したら、「Create Application」をクリックします。するとテンプレートからアプリケーションが作成されます。
![{C0969FBD-B8F2-401E-9549-0FD81DBCE6B8}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/5c12e3bb-81b8-4972-b8ab-ab1ff3208609.png)


# アプリケーション
テンプレートから作成されたアプリケーションは、Application Design Centerの「アプリケーション」画面に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/09ae5216-2256-4949-84eb-a9b6d5ab0dca.png)

任意のアプリケーションをクリックすると、以下のような画面となります。テンプレートで定義したインフラがアプリとしてこちらで管理されています。
この時点では、まだこのインフラはGC上には存在していません。これを実際にクラウド上に構築するには「デプロイ」を行う必要があります。

![{34F15146-8231-46A5-80B5-1C178988B9D6}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/843a9742-a691-45e1-aa71-a8035e1249a9.png)

「デプロイ」を選択するとデプロイ設定の画面が現れます。デプロイのためには適切な権限を持ったサービスアカウントを利用する必要があります。
![{19674909-D6F2-4B59-A634-87792EB4755E}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/63d4b8d0-ce48-4734-98ae-067977b78d83.png)

お試しに「サービスアカウントを新規作成」から作成してみると以下のような権限を持ったサービスアカウントができていました。
![{BB955E43-2AA2-4F66-8BFF-33262D31AB57}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/a38d7377-dce7-4822-b2db-b2a4abfe2283.png)
|権限名  |
|---|
|App Hub 編集者|
|Artifact Registry 管理者|
|Certificate Manager オーナー|
|Cloud Infrastructure Manager エージェント|
|Cloud Run 管理者|
|Compute 管理者|
|Project IAM 管理者|
|Service Usage 閲覧者|
|Service Usage 管理者|
|クラウド KMS 管理者|
|サービス アカウント ユーザー|
|サービス アカウント管理者|
|ストレージ管理者|

※今回のテンプレートで「Cloud Memorystore Redis」のリソースを作成していますが、作成されたサービスアカウントの権限だと不十分だったので「Cloud Memorystore Redis 管理者」を追加しました。

利用したいサービスアカウントを指定し、「デプロイ」を押すとデプロイが開始します。
![{B2C6E32A-3E51-475A-811C-4BBB16B5B432}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/9eb294b9-1119-42c7-84d8-ba0f4c1ad92a.png)


上のアプリケーションとは異なりますが、お試しでクラウドストレージだけを作成するテンプレート・アプリケーションを作成してデプロイしてみました。

![{1E33C19B-75C0-432F-949D-375FB1A86864}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/6c4604a5-e992-4f1a-9528-2a2a79b0dbb6.png)

![{634780D9-E0D0-4592-B822-BADCEBC26815}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/467c90f7-7b75-4128-8ff1-4063893b6302.png)

Cloud Storageを見てみるとApplication Design Centerからデプロイしたバケットができていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/39c73b18-2117-4297-bbaf-19edc2d09356.png)

# インフラの削除
デプロイしたインフラを削除したい場合は、対象のアプリケーション画面から「︙」を選択し、「アプリケーションを削除」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/127da744-f73a-4ebc-b278-105ee8beff5e.png)

「このアプリケーションを削除すると、このアプリケーションのデプロイで作成されたリソースも削除されますよ。」という注意書きが出ますので、アプリ名をフォームに入力し「Delete」をクリックします。
![{7E33C93B-A269-490E-B982-7B2DAA27F870}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/094556d7-8c45-4f12-9d2c-832d1cb071ef.png)

アプリケーションを削除できました。
![{11C0FCA1-76A4-4928-A2D5-C1370DE01B4D}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/4bce86ae-b80f-4443-a9cb-309a598ac228.png)

アプリケーションが削除できたので、Cloud Storageも見てみます。アプリケーションのデプロイで作成されたバケットも削除されていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3942439/be768587-0bda-41de-b55f-56ba0d0d2ec6.png)


# 所感
プレビュー版ということもあり、利用可能なリソースやリージョンなどはまだ多くないです。柔軟性についてもまだそれほどではないという印象ですが、terraformを知らない方、非エンジニアの方でもGCのインフラを構築できる可能性があるサービスだと思います。
そのため、現状IaC(terraform)が不要になる、書かなくてよくなるというものではなく、きちんとサービスを作るならば依然としてIaCのためにコードを各需要はあると感じます
将来的にはGCに完結する限りではterraformを直接記述する必要がなくなるかもしれません。
GAに備えて、このサービスが今後どう変化していくのか気にしておこうと思います。