* はじめに [#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 を利用できます。