* はじめに [#b0145e7a]
このページは、Cloud Optimization APIを扱うことになった(自分用)メモです。

リンク先など、情報が共有が、誰かの参考になったらラッキーだったね。ぐらいな感じです。

* ドキュメント [#v09467af]
** Set up the Cloud Optimization API [#u176be24]
https://cloud.google.com/optimization/docs/introduction/setup

** Cloud Optimization API [#n520ae71]
https://cloud.google.com/optimization/docs



* 学んだこと [#pa66ad5a]

APIはインターフェースで、リクエストを受けて最適化とか検索とかしてるのがサービス

** APIを有効化する [#gdd80644]
コンソールで、ボタンをぽちっとしたらできた。


** 気になっていること [#g41d6a02]
Google Cloud CLI

例えば、Go langで作ったサーバからの問い合わせ処理が簡潔に記述できる

** Google Cloud CLIを使ったgolandの例 [#x026e180]

 package main
 
 import (
 	"context"
 	"encoding/json"
 	"fmt"
 	"os"
 
 	"googlemaps.github.io/maps"
 )
 
 func main() {
 	// APIキーを設定します
 	apiKey := "YOUR_API_KEY" 
 
 	// Google Maps APIクライアントを作成することができるようになります。
 	c, err := maps.NewClient(maps.WithAPIKey(apiKey))
 	if err != nil {
 		fmt.Println("Could not create client:", err)
 		os.Exit(1)
 	}
 
 	// 通過地点の座標を定義します
 	waypoints := []maps.LatLng{
 		{Lat: 37.7749, Lng: -122.4194}, // サンフランシスコ
 		{Lat: 34.0522, Lng: -118.2437}, // ロサンゼルス
 		{Lat: 37.3382, Lng: -121.8863}, // サンノゼ
 	}
 
 	// ルート最適化のリクエストを作成します
 	r := &maps.RouteOptimizationRequest{
 		Origin:      &waypoints[0],       // 出発地点
 		Destination: &waypoints[len(waypoints)-1], // 到着地点
 		Intermediates: waypoints[1:len(waypoints)-1], // 通過地点
 	}
 
 	// APIリクエストを送信します
 	resp, err := c.RouteOptimization(context.Background(), r)
 	if err != nil {
 		fmt.Println("Could not request route optimization:", err)
 		os.Exit(1)
 	}
 
 	// 結果をJSON形式で出力します
 	prettyJSON, _ := json.MarshalIndent(resp, "", "  ")
 	fmt.Println(string(prettyJSON))
 }

* Go言語で開発するため、Google Maps Platform の Go SDKをインストール [#z882def9]
以下を開く

https://pkg.go.dev/googlemaps.github.io/maps

あたらしいAPIに対応したものは以下が最新のものがあるので、RouteAPIとかはこっちをみる。今回は、こっちだ。

https://github.com/googleapis/google-cloud-go/tree/main/maps

** Google Maps Route Optimization API の Go 用クライアントライブラリ [#o93df399]
CLI ではなく、Go プログラムに組み込んで使うためのライブラリです

https://github.com/googleapis/google-cloud-go/tree/main/maps/routeoptimization/apiv1



*** 使い方の概要 [#k8a35f28]

**** 1. インストール [#j243860e]
まず、Go のプロジェクトにこのライブラリを追加する必要があります。

 go get cloud.google.com/go/maps/routeoptimization/apiv1

**** 2. 認証設定 [#qeab0884]
Google Cloud Platform プロジェクトで API キーを作成し、環境変数 `GOOGLE_APPLICATION_CREDENTIALS` に設定します。 

-  API キーの取得と設定方法
[https://cloud.google.com/docs/authentication/api-keys?hl=ja](https://cloud.google.com/docs/authentication/api-keys?hl=ja) を参照してください。

**** 3. コード例 [#a77721d1]
 ライブラリを使ってルート最適化をリクエストする Go プログラムの例を以下に示します。
ライブラリを使ってルート最適化をリクエストする Go プログラムの例を以下に示します。

 package main
 
 import (
 	"context"
 	"fmt"
 	"log"
 
 	routeoptimization "cloud.google.com/go/maps/routeoptimization/apiv1"
 	routeoptimizationpb "google.golang.org/genproto/googleapis/maps/routeoptimization/v1"
 )
 
 func main() {
 	ctx := context.Background()
 
 	// クライアントを作成します。
 	c, err := routeoptimization.NewClient(ctx)
 	if err != nil {
 		log.Fatalf("クライアントの作成に失敗しました: %v", err)
 	}
 	defer c.Close()
 
 	// リクエストを構築します。
 	req := &routeoptimizationpb.OptimizeToursRequest{
 		Parent: "projects/YOUR_PROJECT_ID", // プロジェクトIDを設定
 		// その他必要なパラメータを設定
 		// ...
 	}
 
 	// API を呼び出します。
 	resp, err := c.OptimizeTours(ctx, req)
 	if err != nil {
 		log.Fatalf("API 呼び出しに失敗しました: %v", err)
 	}
 
 	// レスポンスを処理します。
 	fmt.Printf("最適化されたルート: %v\n", resp)
 }// クライアントを作成します。
   	c, err := routeoptimization.NewClient(ctx)
   	if err != nil {
   		log.Fatalf("クライアントの作成に失敗しました: %v", err)
   	}
   	defer c.Close()

   	// リクエストを構築します。
   	req := &routeoptimizationpb.OptimizeToursRequest{
   		Parent: "projects/YOUR_PROJECT_ID", // プロジェクトIDを設定
   		// その他必要なパラメータを設定
   		// ...
   	}

   	// API を呼び出します。
   	resp, err := c.OptimizeTours(ctx, req)
   	if err != nil {
   		log.Fatalf("API 呼び出しに失敗しました: %v", err)
   	}

   	// レスポンスを処理します。
   	fmt.Printf("最適化されたルート: %v\n", resp)
   }
   ```

**** ポイント [#i751c4e4]

- `YOUR_PROJECT_ID` は実際の Google Cloud Platform プロジェクト ID に置き換えてください。
- 上記は基本的な例です。 詳細なパラメータ設定やエラー処理は、公式ドキュメント ([https://pkg.go.dev/cloud.google.com/go/maps/routeoptimization/apiv1](https://pkg.go.dev/cloud.google.com/go/maps/routeoptimization/apiv1)) を参照してください。

このライブラリを使うことで、REST API を直接扱うよりも簡単に、安全に、そして効率的に Google Maps Route Optimization API を利用できます。
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS