はじめに

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

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

ドキュメント

Set up the Cloud Optimization API

https://cloud.google.com/optimization/docs/introduction/setup

Cloud Optimization API

https://cloud.google.com/optimization/docs

学んだこと

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

APIを有効化する

コンソールで、ボタンをぽちっとしたらできた。

気になっていること

Google Cloud CLI

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

Google Cloud CLIを使ったgolandの例

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をインストール

以下を開く

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 用クライアントライブラリ

CLI ではなく、Go プログラムに組み込んで使うためのライブラリです

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

使い方の概要

* 1. インストール

まず、Go のプロジェクトにこのライブラリを追加する必要があります。

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

* 2. 認証設定

Google Cloud Platform プロジェクトで API キーを作成し、環境変数 `GOOGLE_APPLICATION_CREDENTIALS` に設定します。

* 3. コード例

ライブラリを使ってルート最適化をリクエストする 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 を利用できます。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-07-17 (水) 10:59:24 (216d)