Cloud CodeとDuet AIでコードの自動生成を実現する

# はじめに

コード生成AIが続々リリースされていくなか、Google CloudのDuet AIも2023年12月13日にGAされました。  
今回は、Duet AIの支援を受けながら、Cloud Code for VS Codeでのコーディング支援について確認します。

# Cloud Codeとは
[Cloud Code](https://cloud.google.com/code/docs/vscode/overview?hl=ja)は、Google Kubernetes EngineやCloud RunなどのGoogleサービスをIDEから直接操作できるVisual Studio Codeの拡張機能で、コンテキストを切り替えること無くアプリケーション開発できるサービスです。  
直近で、Cloud CodeにもDuet AIによる支援が追加され、コードの生成やVisual Studio CodeからDuet AIとのチャットなど、機能が拡張されました。

# Duet AIとは
Duet AIは、以下を提供する常時接続のコラボレーターで、幅広いGoogle Cloudユーザーに対するAIを活用した生成的な支援を行ってくれます。  
Duet AIが主にできることとしては、

- コードの生成
- 単体テストの生成
- Google Cloud プロダクトに関する質問の回答
- ベスト プラクティスと最適化のための提案
- ログエントリを要約
- エラー メッセージのトラブルシューティング

などがありますが、その他にも  

- BigQuery: Duet AI支援によるクエリの作成 (プレビュー)
- Cloud Spanner: Duet AI支援によるSQLの作成 (プレビュー)
- Colab Enterprise: Duet AI支援を使用してColab Enterpriseノートブックにコードを作成 (プレビュー)

などが可能です。

# 料金
Cloud CodeでDuet AIを利用するには、下記の料金が必要です。  
Cloud Code：料金は無料  
[Duet AI](https://cloud.google.com/duet-ai/pricing)：ユーザーあたり月額19ドルですが、2024年2月1日まではプロモーションで無料です。


# 事前準備
Visual Studio CodeでDuet AIによる支援を受けるためには、[事前準備](https://cloud.google.com/code/docs/vscode/write-code-duet-ai?hl=ja#before_you_begin)として下記対応が必要です。

1. 課金が有効なGoogle Cloudプロジェクトを作成していること
2. プロジェクトでCloud AI Companion APIを有効にする
3. Visual Studio CodeでCloud Codeの拡張機能をインストールする
4. Cloud Codeの設定でDuet AIを有効にする

などの対応が必要になります。  
詳細な手順については、Google Cloudのドキュメントに手順がありますので、ご確認ください。  

Visual Studio Codeの右下で、下記のようなDuet AIのアイコンが表示されていれば利用準備OKです。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989477/f7948297-8df2-7788-018a-404819b2a1b5.png)


# Duet AIでできること
本章では、Visual Studio Code上で受けられる[Duet AIの支援](https://cloud.google.com/code/docs/vscode/write-code-duet-ai?hl=ja)について、紹介します。

## Duet AIとチャットする
Duet AIは、選択したコードに基づいてタスクを実行することや、質問に回答することが可能です。
![chat.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989477/03d9dd92-10b4-83d7-a80f-fd3ec3eb5c12.gif)


## コードファイルでコード生成を指示する
コードファイルの新しい行で指示文を入力（#から始める）し、Enter（WindowsおよびLinuxの場合）またはReturn（MacOSの場合）を押します。  
Control+Enter（WindowsおよびLinux）やCtrl+Return（MacOSの場合）を押すと、コードが生成され、ゴーストテキスト形式で表示されます。  
Tabを押すことで、生成されたコードを受けいれることができます。
![codefile.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989477/01b5f309-e827-eaef-cac4-bc8c5b86b9a6.gif)


## 選択したコードを使用して、チャットで指示する
Duet AIは、選択したコードに基づいてタスクを実行することや、質問に回答することが可能です。  
こちらの画像では不完全なコードをもとに、Duet AIに選択したコードの修正候補を提示してもらいました。
![viachat.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989477/618da064-9195-0f86-03ec-32385adac99a.gif)


## コーディング中にインライン候補を表示する
Duet AIは、コードの記述中にインライン コードの候補を作成します。  
コードの続きを予測し、ゴーストテキスト形式で候補を表示してくれます。  
Tabを押せば、提案を受け入れることができ、コードに反映できます。
![sugest.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989477/6ce8d144-d926-e978-047e-78e131cb15f2.gif)


## コードの説明を取得する
コードファイルで、説明対象のコードを選択し、💡を選択肢「Explain this code to me」を選択すると、コードをDuet AIが読み解き説明してくれます。  
画像では英語による回答ですが、質問を日本語で入力すれば、日本語で解説してくれます。
![explain.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989477/2e1d9380-98a6-f2e0-88eb-2c3bca96a60e.gif)


## ユニットテストを生成する
コードファイルで、単体テストを自動生成してくれます。
![unittest.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989477/a97aa39e-9a2c-327a-049e-89398aef080a.gif)



# おわりに
いかがだったでしょうか。
今回は、Cloud Code上でDuet AIによるコーディング支援を受けてみました。  
単純なコード生成だけではなく、コードの要約やユニットテストの作成など、コーディングが捗りそうですね。  
みなさんもDuet AIによるコーディング支援、始めてみませんか？