[Google Cloud]Jump Start Solutions を試す

## 概要
Google Cloud Next '23でJump Start SolutionsがGAとなったので試してみます。

https://cloud.google.com/blog/ja/topics/google-cloud-next/next-2023-wrap-up#:~:text=95.%20%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%97%20%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%20%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%83%81%E3%83%A3%20%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E4%B8%80%E8%88%AC%E6%8F%90%E4%BE%9B%E3%82%92%E9%96%8B%E5%A7%8B%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82

## Jump Start Solutionsとは
コンソールから数回クリックするだけでGoogle Cloud ベストプラクティスに沿ったサンプル アプリケーションとインフラストラクチャをデプロイできる仕組みです。コンソールからのクリックだけでなくTerraform等のコードも用意されています。

###### ドキュメント
https://cloud.google.com/architecture/all-jss-guides?hl=ja

###### ブログ
https://cloud.google.com/blog/ja/products/application-modernization/introducing-google-cloud-jump-start-solutions

## Jump Start Solutionsを使ってみる
1.[ここ](https://cloud.google.com/architecture/all-jss-guides?hl=ja)からデプロイしたいものを選びます。今回は左上の「AI/ML image processing on Cloud Functions」を試してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/29781e25-611f-a307-273f-eaf4f35496be.png)

2.詳細をクリックするとソリューション紹介のページに遷移しアーキテクチャの説明などを確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/297c7552-3eb8-45fa-be0e-41f76c799ec2.png)

3.ページを読み進めていくとデプロイ方法の選択のところでTerraformでデプロイするかコンソールから選べます。今回はコンソールからデプロイしてみようと思うので、ページ中の「Cloud Functions での AI / ML 画像処理ソリューションに移動」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/546475ae-97f8-8810-943e-4094903f071a.png)

4.クリックするとGoogle Cloudコンソールに移動し、アーキテクチャやプロダクト、料金を確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/bbdaebd8-4ca2-1159-db10-e0f5cc5f1c46.png)

5.デプロイを押すとプロジェクトやリージョン等を選択できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/1176ca60-8bd4-deff-8aca-94450740b4b0.png)
デプロイ前には有効化されるAPIを確認することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/b68e5599-0a2e-e7a9-80ae-87e77fbe439d.png)


6.デプロイを押して数分待つとデプロイ完了となります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/4cd31964-4b4c-c300-4b7a-daffaab36ebb.png)
作成状況はリソースタブから確認できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/679e7ec4-d8ca-1afa-dabf-a3c31a8ede06.png)

作成されたGCF
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/5e554717-ae9d-8140-ddf8-11cbb159f391.png)
作成されたGCS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/5ba214d2-0e48-ca89-8103-a13514d71306.png)

## デプロイしたサービスを使ってみる
デプロイされたものではオンラインのAPIリクエストもしくはGCSにファイルを配置したバッチのどちらかで画像にアノテーションを付けることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/57bb215b-23fd-fda2-807b-132dcc05f343.png)

APIの場合、以下のように動作します

※以下の画像利用
<img width="300" alt="image.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/85ac62b6-419d-ae9e-3f5b-1f50504a5797.jpeg">


以下のようにアノテーションの付与ができる
```shell
$ curl -X POST -F image=@image.jpg -F features=OBJECT_LOCALIZATION "https://asia-northeast1-XXXXXXXX.cloudfunctions.net/annotate-http/annotate"
{
  "localizedObjectAnnotations": [
    {
      "mid": "/m/0k4j",
      "name": "Car",
      "score": 0.8716894,
      "boundingPoly": {
        "normalizedVertices": [
          {
            "x": 0.5042977,
            "y": 0.4700892
          },
          {
            "x": 0.87957644,
            "y": 0.4700892
          },
          {
            "x": 0.87957644,
            "y": 0.5699384
          },
          {
            "x": 0.5042977,
            "y": 0.5699384
          }
        ],
        "vertices": []
      },
      "languageCode": ""
    },
    {
      "mid": "/m/0cgh4",
      "name": "Building",
      "score": 0.8094783,
      "boundingPoly": {
        "normalizedVertices": [
          {
            "x": 0.0010392503,
            "y": 0.0
          },
          {
            "x": 0.2614052,
            "y": 0.0
          },
          {
            "x": 0.2614052,
            "y": 0.5553696
          },
          {
            "x": 0.0010392503,
            "y": 0.5553696
          }
        ],
        "vertices": []
      },
      "languageCode": ""
    },
    {
      "mid": "/m/01bjv",
      "name": "Bus",
      "score": 0.5640942,
      "boundingPoly": {
        "normalizedVertices": [
          {
            "x": 0.42706275,
            "y": 0.4339448
          },
          {
            "x": 0.55545807,
            "y": 0.4339448
          },
          {
            "x": 0.55545807,
            "y": 0.5248143
          },
          {
            "x": 0.42706275,
            "y": 0.5248143
          }
        ],
        "vertices": []
      },
      "languageCode": ""
    }
  ],
  "faceAnnotations": [],
  "landmarkAnnotations": [],
  "logoAnnotations": [],
  "labelAnnotations": [],
  "textAnnotations": []
}
```


## おわりに
もともとGoogle Cloudは[アーキテクチャセンタ](https://cloud.google.com/architecture?hl=ja)の情報が豊富かつ使いやすいと感じていましたが、今回Jump Start Solutionsによって短時間で試すということが容易となりより便利になった印象です。
まだ利用できるアーキテクチャはそこまで多くないのでこれから種類が増えたり新しいサービスもすぐに使えるようになっていくと検証のコストが下がっていくと感じています。