APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

GitLab Duo Code Suggestionsの紹介

こんにちは、クラウド事業部CI/CDサービスメニューチームです。

今回はGitLabが2023年にリリースしたGitLab Duo Code Suggestionsの紹介になります。 なお、本記事の検証時はベータ版を操作したものになりますが、昨年の12月21日にGitLab 16.7がリリースされ、本機能はGAとなりました。

GitLab Duo Code Suggestionsとは

docs.gitlab.com

GitLab Duo Code Suggestionsは、GitLab DuoというAIを使用した一連のサービス群の一つであり、開発者がコードを開発するのをサポートする機能です。

本機能を有効にすると、開発者やインフラエンジニアが何かしらコードを書くときに、次に書くであろうコードを提案してくれます。Code Suggestionsからの提案が良ければTabキーを押してそのまま採用し、コード作成時の効率を高める効果が期待できます。

具体的には以下の2種類のサポートを受けられます。

  • Code Completion: 作成中のコードに対し、次に入力する候補のコードを提案します。通常時は提案する際のレイテンシは低くなります。
  • Code Generation: コメントアウトした自然言語の内容に従い、コードを自動的に生成します。生成には数秒程度かかることがあります。

GitLabでは、Visual Studio Code (以降VSCodeと表記) などのサードパーティ製品、GitLab Web IDE上で本機能を利用することができます。

Code Suggestionsのデータの扱い

GitLabは生成AIを利用したサービスをいくつか提供していますが、用途によって使用するモデルを変えています。Code SuggestionsではGoogle Vertex AI Code Models / Anthropic Claude を利用しています。これらのプロバイダーはGitLabとデータ保護契約を結んでおり、プロバイダーが独自の目的で利用者のコンテンツを使用することを禁止しています。

なおデータの保持期間は各モデルによって異なります。

  • Google: 出力データを提供した時点で入力・出力データを破棄します。
  • Anthropic: 入力・出力データを30日間保持します。

またGitLab、およびGitLabが提携するベンダーは、プライベートなデータを使用して生成AIモデルのトレーニングは行いません。

Code Suggestionsを利用する上での注意点

Code Suggestionsを利用するうえで、事前に押さえておくべき注意点を記載します。

Code Suggestionsを扱えるTierは制限がある

Code Suggestionsは、SaaS版ではすべてのプランで利用可能ですが、オンプレミス版ではPremiumプラン以上で利用可能です。

※プランの違いについては以下の記事もご覧ください。

techblog.ap-com.co.jp

また、Code Suggestionsは2024年2月15日までは、 GitLab Testing Agreementのもと無料で利用できますが、以降は有料のアドオンとなります。Code Suggestionsを試しに使ってみたい方は、それまでに触ってみることをお勧めいたします。

対象はプロジェクト内のファイルのみ

Code Suggestionsは、GitLab プロジェクト上のファイルに対してのみ有効となります。そのため、別のリポジトリサービスやローカルでのみ扱っているファイルにはCode Suggestionsは利用できません。

対応言語に一部制限がある

Code Suggestionsは、使用するIDEによってサポートされる言語が一部異なるので、念のためご確認ください。

docs.gitlab.com

提案されたコードは利用者が判断する必要がある

Code Suggestionsの提案するコードには、品質が良くないものや不完全なもの、あるいは古い情報がベースとなっているものを含む可能性もあります。そのため、利用者は提案された情報をすべて鵜呑みにすることなく、適切なものを利用するよう判断することが求められます。

検証

ここからCode Suggestionsを利用します。

Code Suggestionsを利用するには事前にいくつか設定する必要があります。今回はSaaS版での例を紹介しますが、オンプレミス版では別の手順が必要となるのでご注意ください。

なお、ベータ版とGA版との手順を比べてみましたが、ベータ版で必要だった手順が一部不要になった以外、特に違いはないように見えました。おそらくGA版でも本記事の手順が利用できるのではないかと思いますので、ぜひご覧ください。

事前の設定: Code Suggestionsの有効化

ベータ版ではCode Suggestionsを利用するには、「グループレベルでの有効化」と「個人レベルでの有効化」の2つが必要でした。GA以降は「グループレベルでの有効化」のみで利用できます。

docs.gitlab.com

グループレベルの有効化を行うため、初めにグループを作成します。その後、設定が有効であることを確認するため、「設定」から「一般」を選択します。

次の画面で「権限とグループ機能」をクリックし、Code Suggestionsが利用できることを確認します。

いちおう個人レベルの有効化の手順も紹介すると、個人アカウントのアイコンをクリックして「設定」を選択し、遷移先で「環境設定」から有効化します。

ベータ版では以下のような項目がありましたが、現在は確認できません。

IDEへの拡張機能のインストール・設定

今回はVSCode上で動かした例を紹介します。VSCodeで利用するには、GitLab Workflow という拡張機能をインストールします。

marketplace.visualstudio.com

GitLabとVSCodeの通信を許可するため、 Connect to GitLab.com with OAuth を選択します。

以下のようなポップアップが出るので Open を選択します。

GitLabの画面が表示され、VSCodeとの通信を許可するか確認されます。 Authorizeを選択して許可します。なおここではログイン済みのアカウントで許可されるので、複数アカウントがある場合はCode Suggestionsを利用するアカウントでログインしてください。

VSCodeに以下のようなポップアップが表示されるので Open を選択します。

VSCode中に以下のようなメッセージが表示されれば、利用可能です。

一応補足すると、私は当初ここまで設定変更をしてもCode Suggestionsが利用できず、端末を再起動すると利用できるようになりました。

またGitLabドキュメントにもトラブルシューティングの案内があるので、何かうまくいかない場合はこちらもご覧ください。

docs.gitlab.com

VSCodeの例

ここからはVSCode上でCode Suggestionsを利用した例を紹介します。今回はテスト用に code-suggestion-test というプロジェクトを作成しました。

以下は実際にVSCode上でコードを書いた時の動画になります。画質が荒いので見にくいかもしれませんが、利用時の感覚はつかめるのではないかと思います。

なお、何度か触ってみての感想ですが、コードが生成されるまでの時間はおおむね2~3秒程度、Code Completionはもっと早く表示されることもあり、ほぼドキュメントの記載通りの結果でした。ベータ版の時点でこれだったので、GA以降は速度や推論の改善が見られるかもしれません。この辺りは実際に触ってみてご確認ください。

Go言語

Python

Terraform

Code SuggestionsをTerraformのコードに対して利用する場合、Hashicorpの提供する HashiCorp Terraform という別の拡張機能が必要になります。

marketplace.visualstudio.com

こちらをインストール後、Terraformのファイルに対して操作した例が以下の動画になります。

GitLab Web IDEの例

Code SuggestionsはGitLab Web IDEでも利用できます。GitLab Web IDEとは、Web上でVSCodeのようなエディタ画面を利用できる機能のことです。利用方法は簡単で、GitLabの該当のプロジェクト画面上で . を押すと、以下のように画面が表示されます。

ここでCode Suggestionを利用した例が以下です。IDE上でも問題なく動作している様子が確認できるかと思います。

さいごに

今回はGitLabのCode Suggestionsを紹介しました。動画ではごく簡単なものしか載せていませんが、GitLab上でコード開発をするアプリ・インフラ開発者ともに役立つ機能だと感じました。繰り返しになりますが、Code Suggestionsは2024年2月15日までは無料で利用できますので、まずは実際に触ってみて導入を判断するのがよいでしょう。

弊社はGitLabオープンパートナー認定を受けております。 また以下のようにCI/CDの導入を支援するサービスも行っているので、何かご相談したいことがあればお気軽にご連絡ください。

www.ap-com.co.jp