GitHubでは、2,000人以上の開発者を対象に、GitHub Copilotが生産性の向上とコーディングの改善にどのように役立ったかについて調査を実施しました。その後、この定性的なフィードバックと主観的認識を、客観的な使用状況の測定値と生産性に関する定量的なデータと照合しました。
昨年、GitHub Copilotのテクニカルプレビューを開始しました。GitHub Copilotは、AIペアプログラマーとして、コーディングに関する提案をリアルタイムで提供します。シート数の制限があったにも関わらず、使い始めた開発者は「GitHub Copilotが日々の業務フローにおいて欠かせない存在になった」と話しています。
現在、GitHub Copilotの一般提供(GA)が開始され、すべての開発者が利用できるようになっています。これまでに寄せられた数々のフィードバックや、最近受け取ったフィードバックは、「AIはコーディング中の開発者の生産性と満足度の向上に役立つ」というGitHubの主要なテーマを裏付けるものとなっています。それでもなお、私たちは自社の理論をテストし、GitHub Copilot自体が実際に開発者の生産性向上につながっているかどうか確かめたいたいと考えました。
そのために、GitHubの調査チームとエンジニアリングチームが連携し、米国を拠点とする2,000人以上の開発者から集めた定性的な調査データと匿名化されたデータを組み合わせて、「開発者がGitHub Copilotによって生産性の向上を実感しているかどうか」、さらに「GitHub Copilot使用時の開発者の生産性向上がデータによって実証されているかどうか」を判定しました。
(最終結果は、本年開催されたPLDIのMAPS 2022カンファレンスでGitHubチームが発表した学術論文に掲載されています。)
人、計算機、そしてGitHub Copilot
「友人と一緒にペアプログラミングを行うと、生産性は向上しますか?」と尋ねると、ほとんどの人が「生産性が向上する」と答えます。例えば、友人の提案が完璧なものではなくても、多くの人が、誰かと一緒に作業をすることで、短時間でコーディングし、完成品の質を高めるだけでなく、共同作業を通じて何か新しいことを学ぶことができると考えます。さまざまな学術研究者も、ペアプログラミングによって生産性が向上するという証拠を発見しています[1, 2]。
一方、間違った答えを頻繁に出すような計算機は、数学の問題を解く役に立つでしょうか?全く役に立たないでしょう。ここでの違いは、私たちが計算機に対して最も重視している点は精度だということです。インスピレーションを得るために計算機を利用する人は多くありません。
ある意味、GitHub Copilotは「計算機が付属したペアプログラマー」と言えるでしょう。細かくて面倒な作業が非常に得意で、すべての括弧を正しい順序で閉じる機能などは安心して任せられるため、とても便利です。
最近飛行機に乗っている時に、インターネットが利用できず、GitHub Copilotを使えないことがありました。その状況で私が恋しく感じたのは、私に代わって括弧を正確に閉じてくれる機能ではなく、直感的なの閃きでした。例えば、全体的なパターンの提案や少し変更するだけで完成できるような、あらかじめ用意されたテンプレートなどが挙げられます。また、大胆な式の提案も、そのまま使用できるものではありませんが、たたき台として有益でした。
GitHub Copilotが開発者の生産性に対してもたらす影響の調査
GitHub Copilotの背後にあるGitHubのビジョンは開発者の満足度と生産性を高めることです。、開発者にとって最も重要な目標である「優れたソフトウェアの開発」に注力できる環境を提供したいと考えています。
しかし、「生産性」という言葉は一見シンプルですが、実際にはさまざまな意味が含まれています。開発者は、キーストロークを減らしたり、GoogleやStack Overflowでの検索を避けたいと考えているでしょうか?GitHub Copilotは、計算機のような機械的なタスクに対して高精度なソリューションを提供することで、開発者がフロー状態を維持できるように支援すべきでしょうか?それとも、開発者が行き詰まった時に、その状況の打開に役立つかもしれない推測的なスタブ(代用品)でインスピレーションを提供するべきでしょうか?
GitHub Copilotの開発に際しては、分からないことがたくさんあったので、私たちはまず、調査を通じてユーザーに質問しました。その後、匿名化されたユーザーデータと照らし合わせて回答をチェックし、開発者が感じているGitHub Copilotの生産性レベルへの影響が、実際の使用状況に反映されているかを判断しました。
米国を拠点とする計2,000人以上の開発者を対象に調査を行い、得られた回答を同期間のユーザーデータと比較しました。その際、次の3つの疑問への答えを得ることに注力しました。
- GitHub Copilotによって生産性が向上していると感じているか?
- そうした感覚は、客観的な使用状況の測定値に反映されているか?
- そうした感覚を最もよく反映している使用状況の測定値はどれか?
調査結果:GitHub Copilotを使うことは、開発者の生産性向上と相関関係がある
調査回答者から寄せられた「GitHub Copilotは多くの面で役に立っている」という答えは、GitHub Copilotを開発したチーム メンバーにとって非常に嬉しいものでした。 また、客観的な使用状況データとの強い関連性があることもわかりました。例えば、GitHub Copilotが貢献した文字数、そのまま使用された提案の数、およびGitHub Copilotが提案を行った頻度をカウントしました。これらすべてが、報告された有用性や生産性の向上と相関関係がありました。
今のところ、関連性が最も強いのは、「受け入れられた提案数」を「表示された提案数」で割ったものです。この受け入れ率によって、GitHub Copilotが生成するコード提案のうち、どれくらいのものが受け入れるに値すると判断されたかがわかります。
GitHub Copilotにより非常に生産性が向上したと報告する開発者は、表示されたコード提案を受け入れる数が最も多い
GitHub Copilotの有用性に応じてユーザーを四分位に分類したところ、これらのグループ間には明確な違いがありました。非常に生産性が向上したと回答した開発者は、入力補完の受け入れ率が遥かに高かったのです。
GitHub Copilotが適切な出発点を提示している限り、その提案が多少の手直しが必要であった場合でも、開発者はそれほど気にしないことが分かりました。これは理にかなっています。GitHub Copilotは、それ自体でソフトウェアを開発するように設計されている訳ではありません。開発者のフロー状態を維持しやすくするために有用な提案を提供するように設計されています。つまり、GitHub Copilotは開発者にパーツを提供しますが、それらを組み立ててデザインし、完成品を作り上げるのは開発者自身の仕事なのです。
GitHub Copilotが生産性に与える影響に関する調査と結果の詳細情報
私たちは、これらの調査結果を含む学術研究論文を作成しました。この論文では、GitHub Copilotユーザーに見られるコード提案の受け入れ率に関する一般的な背景についても説明しています。保持、言語による違い、週末のコーディングなどのトピックについて、より深く体系的に記した詳細をご覧いただけます。この論文はPLDIのMAPS 2022で紹介しました。
コードの書き方は開発者によって異なります。私たちの調査結果は皆さんに当てはまるでしょうか?ぜひGitHub Copilotをお試しいただき、皆さんの活用方法をお知らせください。