このページは、Cloud Optimization APIを扱うことになった(自分用)メモです。
リンク先など、情報が共有が、誰かの参考になったらラッキーだったね。ぐらいな感じです。
https://cloud.google.com/optimization/docs/introduction/setup
https://cloud.google.com/optimization/docs
APIはインターフェースで、リクエストを受けて最適化とか検索とかしてるのがサービス
コンソールで、ボタンをぽちっとしたらできた。
Google Cloud CLI
例えば、Go langで作ったサーバからの問い合わせ処理が簡潔に記述できる
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)) }
以下を開く
https://pkg.go.dev/googlemaps.github.io/maps
あたらしいAPIに対応したものは以下が最新のものがあるので、RouteAPIとかはこっちをみる。今回は、こっちだ。
https://github.com/googleapis/google-cloud-go/tree/main/maps
CLI ではなく、Go プログラムに組み込んで使うためのライブラリです
https://github.com/googleapis/google-cloud-go/tree/main/maps/routeoptimization/apiv1
まず、Go のプロジェクトにこのライブラリを追加する必要があります。
go get cloud.google.com/go/maps/routeoptimization/apiv1
Google Cloud Platform プロジェクトで API キーを作成し、環境変数 `GOOGLE_APPLICATION_CREDENTIALS` に設定します。
ライブラリを使ってルート最適化をリクエストする 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) } ```
このライブラリを使うことで、REST API を直接扱うよりも簡単に、安全に、そして効率的に Google Maps Route Optimization API を利用できます。