見出し画像

Duet AI in Google Cloud を試してみた

1. TL;DR

過日、米サンフランシスコで開催された「Google Cloud Next '23」で発表された開発時のコード補完やプロンプトによるコード生成などのコーディング支援をしてくれる「Duet AI in Google Cloud 」を早速試してみた。

公式サイトによると「Duet AI in Google Cloud 」は Cloud Code IDE 拡張機能を介してさまざまな IDE で利用することができるらしいが、ふだん使ってる VSCode で試してみることにします。

余談になりますが、この記事の見出し画像も AI(Microsoft Bing Image Creator) に生成してもらいました 🤣

2. 環境準備

VSCode で利用するにはまず拡張機能をインストールします。(すでに入っていたけど…)

ここからが一番重要なのですが、「Duet AI in Google Cloud 」はプレビュー版のため Trusted Tester プログラムに登録する必要があるので以下のフォームから申し込みをします。

数日すると Google から次のようなメールが届きます。「Get Started」から「Duet AI in Google Cloud 」を利用するための GCP プロジェクト番号を登録します。

Duet AI in Google Cloud Preview - You’re Invited

翌日ぐらいに Google から「お前のプロジェクトで AI 使えるようにしたよ♫」ってメールが来るのでこれで事前準備 OK となります。

次に VSCode の設定画面から「Duet AI」でサーチして関連する項目を有効にしたり GCP プロジェクト名や開発言語(Python, Go, Java, etc…)などを入力します。

VSCode 設定

3. 試したこと 〜その1〜

まずは AI にテストコードを書いてもらうことにします。
VSCode で適当なコードを選択し、右クリックメニューから「Generate unit tests」を選びます。

右クリックメニュー

左ペインの「AI Chat」が表示され、テストコードが生成されることが確認できました。

Generate unit tests

私見

Go 関数はテストコードが生成されましたが Go メソッドのテストコード生成を依頼すると、「Sorry, I can't help you with this.」でお手上げ。まだまだ改良の余地があるなと感じました。以前に試した Chat GPT ではメソッドでもテストコードが生成されたので…

DUET AI: CHAT

4. 試したこと 〜その2〜

次にコードの自動生成を AI に頼んでみました。
今回は Cloud Storage からファイルを読み込んでその中身を返すコードを生成してもらうことにします。

コメント行で生成してほしいコードの説明(これが一番難しい!)を書いて、右クリックメニューから「Generate Code」を選びます。

そうすると、一部のコードが生成されてポップアップで承諾するかどうか聞いてきます。
生成してほしいコードの説明が悪いと「No suggestions generated. Please try providing more context.」と言われ、依頼を断ってきます 😭

今回いろいろ試した結果、最終的な説明文はこちら…

// Cloud Storage からバケット名とファイル名を指定して、ファイルの中身を返す関数

生成されたコードに不満がなければ「承諾する」を選択すると、続きのコードが生成されるようです。

Generate Code

という作業を繰り返して、出来上がったコードが以下になります。

// Cloud Storage からバケット名とファイル名を指定して、ファイルの中身を返す関数
func GetFile(bucketName, fileName string) ([]byte, error) {
	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return nil, err
	}
	defer client.Close()

	rc, err := client.Bucket(bucketName).Object(fileName).NewReader(ctx)
	if err != nil {
		return nil, err
	}
	defer rc.Close()

	data, err := ioutil.ReadAll(rc)
	if err != nil {
		return nil, err
	}
	return data, nil
}

私見

Go ランタイムがいつのバージョンで生成しているのか、サービスアカウントの Credential File の指定はどうするのか、などツッコミどころはあるのですが、それは依頼(説明)の仕方が悪いからでしょうww

VSCode 上でコード生成しなくとも Bard や ChatGPT など Chat ベース(プロンプト)でやったほうが楽な感じがしますが、それも将来的には改善されていくと思います。

あとがき

試したことが少ないので、まだ総評を述べることはできませんが GitHub Copilot の競合として Duet AI in Google Cloud には進化していってほしいと思います。
そう遠くない将来、エンジニアは AI とペアプロ、コードレビューってのが当たり前の世界になってくるでしょう。

#AI #Google #GenerativeAI #GenAI #VSCode


この記事が気に入ったらサポートをしてみませんか?