最近の数日間で共有されたものはすべてGoogle製品です。今日はもう一つのGoogleの製品を紹介します——Smart Pasteです。これは、コードを貼り付ける際にコンテキストに応じて調整を行うツールであり、Google内部で使用されているツールです。
背景
多くの開発者は日常業務の中でコードをコピーして貼り付けることで、不要な入力の繰り返しを避けようとします。これによりコード開発プロセスが加速しますが、単純なコピー&ペースト以上のことが必要です。Google monorepo(Googleのコードリポジトリで、変更だけでなく完全な作業履歴が保存されています)の分析は、ユーザー行動における興味深いパターンを明らかにしました。これらのパターンは効率向上の潜在的な目標となっています。例えば、編集履歴によると、約25%の貼り付け操作がすぐに修正されます。その範囲は小さな構文修正(例:欠けているセミコロンの追加)から、周辺コード環境へのより複雑な調整(例:変数名の変更や型の変更)まで多岐にわたります。これらの変更を行うことは、コード作成の流れを妨げ、開発プロセスを遅らせることにつながります。
現在、Google内では広くSmart Pasteが使用されており、コード環境の次の状態を予測し、生成型AIを使用して貼り付けたコードをコンテキストに応じて調整します。大規模シーケンスモデル(例:DIDACT)の進展により、これらはコードレビュー、ビルド修正などのツールを可能にし、Smart Pasteはコード修正中のコピー&ペーストプロセスを簡素化します。約4万名のエンジニアを対象とした使用調査では、IDE内のすべての貼り付け操作の6.9%がSmart Pasteを使用しており、受容率は42.5%に達し、ユーザーのワークフローを大幅に簡素化しています。
論理を検出し、関数名と演算子の変更を提案します。
データ準備、モデル訓練および校正
モデル訓練に関しては、Google monorepoおよび関連する包括的なログから、貼り付け後の編集データを取得しました。データ品質が非常に重要であるため、シンプルなヒューリスティック手法を設計し、貼り付け後の調整概念を元の貼り付け位置に近い範囲に限定しました。これらのヒューリスティック手法を用いて、過去数か月分のデータからトレーニングデータセットを抽出し、生成されたサンプルを手動で評価し、抽出ヒューリスティック手法が最適になるまで反復しました。この過程でチームは、28%の貼り付け操作には後続の編集がないことを確認しました(プログラミング言語間の差異は23%から41%)。これらのサンプルはトレーニングデータセットに保持され、モデルが「編集不要」と出力することも学習します。
チームは、プログラミング関連タスクで事前学習されたDIDACTモデルを使用し、ラベル付きデータセットで微調整を行いました。
インタラクション
Auto-applyで挿入/変更されたflagfileを表示する際、太字と下線が付きます。
インライン差分ハイライトは、削除されたtryfromenv(打ち消し線)と挿入されたflagfile(イタリック体と低い透明度)を表示します。
ユーザーが修正済みの文字列を切り取って貼り付けることで、戻り値の文字列に対する貼り付け提案がトリガーされます。
結果
約4万名のエンジニアのユーザービヘイビアを検証したところ、IDE内の全貼り付け操作の6.9%がスマート貼り付けを使用しており、受容率は42.5%で、これは開発者の負担を大幅に軽減しました。