セッションタイトル: Get developer assistance customized to your organization code with Gemini
スピーカー: Mayank Chandra, Marcos Grappeggia, Andrew Hockman

この記事は?

今までの積み上げてきた我々のコードを使って、Gemini君と一緒に効率よく開発しよう。というセッションの記事です。
レッツ、元気にさくさく開発 with Gemini。

セッション本編です

Gemini Code Assistってなんだい?


Gemini Code Assistは、Duet AIの進化した姿です。
Geminiを開発者向けに調整してくれているんだとか。

主にVSCなど、エディタのコード補完など、普段使用している機能を利用できるようなるらしいです。
同じようなことできるのに、何が何がそんなに嬉しいの?となるかもしれません。
それはそう!Gemini君が自然言語の問いかけで、同じようなことができるようになるのが嬉しいですよね。というわけです!やったね。

例えば、一部のコードを選択して、「テスト書いて!」とお願いすると、テストも書いてくれるんだとか。た、頼もしすぎる。

また、2023年12月の開始以来、5000以上の会社がGemini Code Assistを使っているんだとか!

最適なソフトウェアのデプロイを妨げているのはなんなのだろうか?

4カテゴリーの問題が浮かび上がったそうです。

1. 新プロジェクトに参画した開発者が慣れるまで時間がかかる

すご腕の開発者だったとしても、自信を持ってコードレビューなどできるようになるまでに、数日、数週間かかることがあるよね。問題。

2. 開発者の認知不可が高すぎる

ちょっとコードを書こうとするだけで無限のタブを開きがちですよね…。
そう、それだけ少しのコードを書くだけでも必要な情報が山盛り大盛りということ。
しかも、情報があちこち散乱しているため、なおさら整理するのにも時間がかかりますよね。

3. メンテナンスコストが高いかつ、技術負債がある

ただソフトウェアを高速にデプロイすれば良いのではなく、保守しやすいクリーンなコードを書きたいところ。
でも、実際には時間の経過とともにコードが大きく、複雑な迷宮になってしまう。

4. 何度も何度でも同じタスクがあるよ

タスク自体は単純なんですが、何度でも何度でもこんにちはするタスクがありますよね。
たとえば、コードにコメントをつけたり、テストを作ったり、リファクタしたり…無限タスク編。

Gemini Code Assistは、ひろーいエディタに対応してるんだぜ

一家に一台なVSCode、IntelliJ、もちろんCloud Workstationsなどなど。ひろーい心で、ひろーいエディタに対応してますね。
ところで、Fleetへの対応も待ってます!まーつーわ、いつまでもまーつーわ。という気持ち。

Geminiはソフトウェア開発ライフサイクル(SDLC)全体での支援をしますよ

ソフトウェア開発には、いろんなフェーズがありますが…Gemini君は全体に寄り添ってくれるそうです。イケメンですね。
例えば、設計段階ではあーだ、こーだ、Gemini君に投げかけて思考の整理などできる。
確かに、今までの開発でも誰かと会話することで、整理され開発がぐんぐん進みますよね。

また、単体テストや結合テストも生成してくれるんだとか。
インフラについても、IaCにしてくれるので、とっーても管理しやすくなりますね。

と、ここで思い出していただきたいのが、そう!これを丸々Gemini君が全て一緒にやってくれているということ。一人じゃないって素敵なことですね。

Google内部の開発にもGemini Code Assist使われているんだってばよ

Google内部の開発に使用されているため、品質も保証されているよね。っていうわけ。素敵。

GoogleのDNAここにあり

Googleといえば、生産性が高いということで有名ですよね。Google数十年の歴史。
そんなGoogleの知識の結晶をGemini Code Assistを通して共有してくれているだとか。感謝感激雨霰の極みですね。

今週、Gemini Code Assistに追加された機能!

  1. Gemini Pro 1.0が入っているよ
  2. 複数のファイルからのローカルコンテキストが参照されるよ
  3. 既存のコードを自然言語でリファクタできるよ

Gemini Code AssistのCode Customizationをふかぼる

そもそも…私たち固有の開発環境の情報に基づいてあれこれ教えて欲しいですよね。
そんな要望もGemini君がいればまるっと解決。
特定のコーディング規約に基づいて推奨・生成など行ってくれるんだとか。

どうやってGemini君は理解してるの?ファイン・チューニングなの?


否。ファイン・チューニングではありません。
確かにファイン・チューニングは、学習させるだけで基礎モデルのみで回答することができます。
でも…、高額な費用もかかる、MLエンジニアが必要、高額なGPUでトレーニングする必要がある。
なおかつ、私たちのコードは、毎日、毎分、進化していきますよね。素晴らしき成長の日々!

そんな我々の成長とともに、モデル学習もしなければなりませんよね…。
しかも、プロジェクトごとにも少しずつコーディング規約が違ったり、言語が違ったり…。
少なくとも、モデルのトレーニングは6ヶ月に1回はやらないといけないんだとか。

悲しい課題が山積みです。何か方法はないものか…。

そこですごいぞ!ローカルコンテキスト!

そこで、登場するのがローカルコンテキストという方法。
具体的には、現在IDEで開いているファイル、ディレクトリや、カーソルの周辺の情報から理解しているんだとか。
すでに利用可能です。今すぐインストール!

エンタープライズには、リモートコンテキストがおすすめ

プライベートリポジトリからコードを取得し、ローカルのコードと融合することができるんだとか。


また、複数のプライベートリポジトリからも参照できるため、
新規プロジェクトの開発の開始段階でも、今までのナレッジをもとに、高速に開発ができますね!
また、リアルタイムで最新の状態を参照してくれるため、日々の進化にも問題なく対応できます。every day日進月歩。

他にも、新しい基礎モデルが登場した時にも簡単に対応できる。

そして、安全にGeminiをカスタマイズできる。リポジトリを特定のグループなどに制限したりすることももちろん可能。
また、Googleがコードを見ることはないそうです。この辺りは、エンタープライズでは特にピリつくところなので、助かりますね。

こんな言語をサポートしてるよ

サポートしてるよ:

  • Python
  • Golang
  • Java
  • JavaScript
  • TypeScript
  • Rust
  • Kotlin

まもなくだよ:

  • C++
  • PHP
  • Scala

…などなど

プライベートリポジトリに接続するためにはどうすればいいのさ?

解。Developer Connectを使う!ただし、現在プライベートプレビューです。とてもかなしい。
これで、GitHubやGitLabなどに接続できるようですね。

また、Google Cloudの中に複数のプロジェクトを作成できるため、それぞれの権限ごとや、規約ごとなどに使い分けることも可能です。

アーキテクチャはこうなってます!

インデックス作成時の流れはこう

具体的には、インデックス作成時なにしているのかというと。
コード取得 -> チャンクに解析 -> チャンクをトークンに解析 -> エンベッディングを作成
それらをAlloyDBに保存しているようですね。

ソースコード全体のインデックスを作成しない。というオプションも用意されています。

セマンティックエンベッディングがとても重要

セマンティックエンベッディングを使用することで、C1とC2にのように意味的に似たコードを理解・生成することが可能になります。
C2とC3は見た目上は似ていますが、意味的に異なっているので、必要でないコードがマッチしていまいます。

Gemini Code Assistでは、セマンティックエンベッディングを使用しているため、開発者の意図するコードが検索できたり、生成できたりする。ってわけですね。偉大テクノロジーですね。

Gemini Code Customizationができること

Code Customizationは、現在Future Previewです。人生は楽しいことがたくさん待ち受けてますね。

できることは以下。

  • 複数のソースコードを接続できるよ
  • 特定の権限アクセスなどのために、複数のプロジェクトを作成できるよ
  • 主要言語について、すぐさまサポートするよ
  • ファイルやサブツリーによってインデックスされたコードをフィルタリングするよ
  • インデックスはプロジェクトのローカルにあるよ

まとめよう

濃密な内容で、開発において妨げになっているポイントから、コードに関するAIがどのような仕組みで動いているのかまで、お話しいただけました。

そもそも、Gemini Code Assistは、Google内部で使用して検証した皆さんのやさしさと知見がつまっている。そんな素敵なサービスだと知れたことが、個人的はグッときました。むねあつでした。
私たちも、少しでも皆が良くなるようなサービスを提供していきたいですね!ファイト・オー!