話題の記事

【GitHub Copilotは序章に過ぎない!?】GitHub Next、次世代の開発エクスペリエンスを実現する圧倒的なプロジェクト群

2023.04.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部 Delivery部の若槻です。

今回は、GitHubによる「次世代の開発エクスペリエンスを実現するためのプロジェクト群」であるGitHub Nextについて紹介します。

GitHub Nextとは

現在、ソフトウェア開発者の間では、OpenAIの開発するGPTベースのプログラミング支援ツールであるGitHub Copilotに注目が集まっています。

コードエディター上でリアルタイムに精度の高いコードサジェストを行ってくれるため、開発者の生産性を大幅に向上しうると期待されていますが、実はこのGitHub CopilotはGitHub Nextの推進するプロジェクトのうちの1つに過ぎません。

GitHub Nextでは、GitHubによる次世代の開発エクスペリエンスを実現するために、現在次の16のプロジェクトを提供中または提供予定です。GitHub Copilotはこれらのうちの2番目のプロジェクトとなります。

プロジェクト 投稿日 提供ステータス 説明
Flat Data 2021/5/18 PRODUCT データセットをgitやGitHubで簡単に管理および操作
GitHub Copilot 2021/6/29 PRODUCT AI駆動のコード補完ツール
Visualizing a Codebase 2021/8/4 USABLE PROTOTYPE コードベース可視化
React Webview UI Toolkit for VS Code 2022/2/11 PRODUCT VS Code設計言語に準拠したWeb UIを構築できるReactコンポーネント
GitHub Copilot Labs 2022/3/30 USABLE PROTOTYPE GitHub Copilotの実験的な機能を提供
TestPilot 2022/10/11 USABLE PROTOTYPE ユニットテストの自動生成
Incremental CodeQL 2022/10/11 WIP CodeQLを利用した迅速な脆弱性検出
GitHub Copilot for Your Codebase 2022/10/13 WIP プライベートなCopilot
GitHub Copilot Radar 2022/10/13 WIP Copilotによるコードナビゲーション
Collaborative Workspaces 2022/10/14 NAPKIN SKETCH 統合的なコラボレーション環境
GitHub Blocks 2022/11/9 WAITLIST カスタマイズ可能でインタラクティブなドキュメントブロック
Code Brushes 2023/1/11 USABLE PROTOTYPE コードのブラッシュアップ
Copilot Voice 2023/3/22 WAITLIST GitHub Copilotを音声で操作
Copilot for CLI 2023/3/22 WAITLIST ターミナルでGitHub Copilotを利用
Copilot for Pull Requests 2023/3/22 WAITLIST GitHub Copilotをプルリクエストに組み込む
Copilot for Docs 2023/3/22 WAITLIST ドキュメントの最適な回答のサポート

これらのプロジェクトでは、GPTベースの開発者支援機能をコーディングのみならず開発ワークフローの様々な場面で利用できるようにすることを1つの目的としています。

Projects

上記で示した16プロジェクトについて簡単に紹介をしていきます。

Flat Data

プロジェクト 投稿日 提供ステータス 説明
Flat Data 2021/5/18 PRODUCT データセットをgitやGitHubで簡単に管理および操作

Flat explores how to make it easy to work with data in git and GitHub. It builds on the “git scraping” approach pioneered by Simon Willison to offer a simple pattern for bringing working datasets into your repositories and versioning them, because developing against local datasets is faster and easier than working with data over the wire.

(日本語訳)
Flat は、git と GitHub でデータを簡単に操作する方法を探ります。これは、Simon Willison によって開発された「git スクレイピング」アプローチに基づいて構築されており、作業中のデータセットをリポジトリに取り込み、それらをバージョン管理するためのシンプルなパターンを提供します。ローカル データセットに対する開発は、ネットワーク経由でデータを操作するよりも高速で簡単だからです。

Flat Dataは、主に次の3つの機能で構成されています。

  • Flat Editor:Flat Dataワークフローを作成するためのグラフィカルなインターフェイス。
  • Flat Action:データをフェッチおよび変換できる機能をGitHub Actionsで提供。
  • Flat Viewer:リポジトリ内のフラットファイルからデータを参照、フィルタリング、共有できる機能。

プロジェクトページでは、Flat Dataの使い方が紹介されています。

まずFlat EditorでFlat Dataワークフローを作成します。

GitHub Actionsが実行されて、フェッチされたデータがGitHubリポジトリに同期されます。

フェッチされたデータをリポジトリ上で参照できます。

GitHubリポジトリのURLの先頭にflatを追加すると、データを次のようなGUIで可視化できます。

このようにFlat Dataを使用すればデータセットをgitやGitHubで簡単に管理および操作できるようになります。

GitHub Copilot

プロジェクト 投稿日 提供ステータス 説明
GitHub Copilot 2021/6/29 PRODUCT AI駆動のコード補完ツール

冒頭でも少し触れましたが改めて説明すると、GitHub Copilotは、GitHubOpenAIが共同で開発(OpenAI Codexを利用)したAI駆動のコード補完ツールです。Copilotは、OpenAIのGPT-3.5 Turboという大規模な機械学習モデルを利用しています。このツールは、開発者がコードを書く際に、自動的にコードの推薦や補完を副操縦士(copilot)のように提案することで、コーディングの効率性と速度を向上させることを目的としています。

GitHub Nextで提供されているプロジェクトの中で、最も有名なプロジェクトではないでしょうか。

DevelopersIOでもすでにいくつか記事が投稿されています。

Visualizing a Codebase

プロジェクト 投稿日 提供ステータス 説明
Visualizing a Codebase 2021/8/4 USABLE PROTOTYPE コードベース可視化

How can we “fingerprint” a codebase to see its structure at a glance? Let’s explore ways to automatically visualize a GitHub repo, and how that could be useful.
(日本語訳)
コードベースを「フィンガープリント」して、その構造を一目で確認するにはどうすればよいでしょうか? GitHub リポジトリを自動的に視覚化する方法と、それがどのように役立つかを調べてみましょう。

Visualizing a Codebaseは、コードベースを可視化するためのツールです。GitHubのリポジトリを自動的に可視化することで、コードベースの構造を一目で確認できます。

GitHubで管理されている次のようなコードベースがあるとします。 プロジェクトページより引用

Visualizing a Codebaseを使用すると、上記のリポジトリを次のようにバブル状の図で可視化することができます。 プロジェクトページより引用

これによりコードベースの構造を開発者が一目で確認できるようになります。

React Webview UI Toolkit for VS Code

プロジェクト 投稿日 提供ステータス 説明
React Webview UI Toolkit for VS Code 2022/2/11 PRODUCT VS Code設計言語に準拠したWeb UIを構築できるReactコンポーネント

An ongoing collaboration with Microsoft to bring React to their library, Webview UI Toolkit for Visual Studio Code

(日本語訳)
VS Code 用 React Webview UI ツールキット React を Microsoft のライブラリである Webview UI Toolkit for Visual Studio Code に導入するための Microsoft との継続的なコラボレーション

React Webview UI Toolkit for VS Codeは、VS Codeの拡張機能で、Reactコンポーネントのコレクションを提供します。それらを利用すると、Visual Studio Code設計言語に準拠したWeb UIを簡単に構築できます。

下記のようなWeb UIを持つVS Code拡張機能を作成することができます。 プロジェクトページより引用

GitHub Copilot Labs

プロジェクト 投稿日 提供ステータス 説明
GitHub Copilot Labs 2022/3/30 USABLE PROTOTYPE GitHub Copilotの実験的な機能を提供

GitHub Copilot Labsは、GitHub Copilotの実験的な機能や新規追加予定の機能をGitHub Copilotのコンパニオン拡張としていち早く試すことができるVS Codeの拡張機能です。現在、次の4つの機能が提供されています。

  • コードの説明の生成
  • コードの別言語への翻訳
  • コードのブラッシュアップ(詳細は後述のCode Brushesを参考)
  • コードのテストの生成(詳細は後述のTestPilot

GitHub Copilot Labsを利用している様子です。GitHub Copilotと同様に既に活用している開発者も多いのではないでしょうか。

DevelopersIOに投稿された次の記事ではGitHub Copilot Labs導入時の注意点について紹介していますので良ければご参考ください。

TestPilot

プロジェクト 投稿日 提供ステータス 説明
TestPilot 2022/10/11 USABLE PROTOTYPE ユニットテストの自動生成

TestPilot takes the pain out of writing unit tests. It uses GitHub Copilot's AI technology to suggest tests based on your existing code and documentation. Unlike many other tools, TestPilot generates readable tests with meaningful assertions, and it can iteratively improve its suggestions based on your feedback.

(日本語訳)
TestPilot は、単体テストを作成する手間を省きます。 GitHub Copilot の AI テクノロジを使用して、既存のコードとドキュメントに基づいてテストを提案します。他の多くのツールとは異なり、TestPilot は意味のあるアサーションを含む読みやすいテストを生成し、フィードバックに基づいて提案を繰り返し改善できます。

TestPilotは、指定したコードのユニットテストを自動で生成することができ、VS Codeの拡張機能であるGitHub Copilot Labsの一機能として提供されています。

下記はGitHub Copilot Labsを利用して、ソースコードからテストを生成する様子です。 プロジェクトページより引用

Incremental CodeQL

プロジェクト 投稿日 提供ステータス 説明
Incremental CodeQL 2022/10/11 WIP CodeQLを利用した迅速な脆弱性検出

The goal of the Incremental CodeQL project is to investigate techniques for improving the performance of the existing CodeQL query evaluator. Instead of having to re-analyze the whole code base from scratch, Incremental CodeQL reuses the previously computed analysis results and only re-analyzes the parts of the code base that are affected by a program change. This approach can lead to significant performance speed-ups without the need to make any changes to the analysis implementation.

(日本語訳)
Incremental CodeQL プロジェクトの目標は、既存の CodeQL クエリ エバリュエーターのパフォーマンスを向上させる手法を調査することです。インクリメンタル CodeQL は、コード ベース全体を最初から再分析する代わりに、以前に計算された分析結果を再利用し、プログラムの変更によって影響を受けるコード ベースの部分のみを再分析します。このアプローチは、分析の実装に変更を加える必要なく、大幅なパフォーマンスの高速化につながる可能性があります。

Incremental CodeQLは、セマンティック コード分析エンジンであるCodeQLを利用して、Pull Requestでコード変更の増分のみを分析することにより、開発者は脆弱性検出の通知を素早く受け取ることができます。

GitHub Copilot for Your Codebase

プロジェクト 投稿日 提供ステータス 説明
GitHub Copilot for Your Codebase 2022/10/13 WIP プライベートなCopilot

When editing, GitHub Copilot only knows about the contents of your current file and possibly a few other open tabs, rendering it blind to important type definitions, patterns and greater connections in your codebase. We want to let GitHub Copilot see your entire repo when it comes up with its suggestions.

(日本語訳)
編集中、GitHub Copilot は現在のファイルの内容と、場合によっては開いている他のいくつかのタブしか認識しないため、コードベース内の重要な型定義、パターン、およびより大きな接続が見えなくなります。 GitHub Copilot が提案を思いついたときに、リポジトリ全体を表示できるようにしたいと考えています。

GitHub Copilot for Your Codebaseは、GitHub Copilotが開発者の(Your)コードベースを学習することにより、達成しようとしているタスクに関連するプライベートなスニペットを提案することができます。

GitHub Copilot Radar

プロジェクト 投稿日 提供ステータス 説明
GitHub Copilot Radar 2022/10/13 WIP Copilotによるコードナビゲーション

GitHub Copilot Radar supports code navigation with a constantly updated view of other code locations most relevant to the one you’re currently viewing or editing. As a jump-to-definition on steroids, it leverages both static analysis and GitHub Copilot’s neural reasoning to make sure developers get the background they need about the code they touch.
(日本語訳)
GitHub Copilot Radar はコード ナビゲーションをサポートし、現在表示または編集しているコードの場所に最も関連性の高い他のコードの場所を常に更新して表示します。ステロイドの定義へのジャンプとして、静的分析と GitHub Copilot のニューラル推論の両方を活用して、開発者が触れるコードについて必要な背景を確実に取得できるようにします。

GitHub Copilot Radarは、コード内の各位置で、そのコードが最も関連性の高いとみなす他のコードの場所の状態を持ち、開発者にナビゲーションとして提供します。

次のように現在のカーソル位置をもとに関連するコードスニペットがサイドパネルに強調表示されます。 プロジェクトページより引用

Collaborative Workspaces

プロジェクト 投稿日 提供ステータス 説明
Collaborative Workspaces 2022/10/14 NAPKIN SKETCH 統合的なコラボレーション環境

As we increasingly work together remotely, how might we unify our workflows to enable remote collaboration for developers? GitHub Next explores what "working together" means, beyond multiple cursors and a shared code editor.

(日本語訳)
リモートでの共同作業が増える中、ワークフローを統合して開発者のリモート コラボレーションを可能にするにはどうすればよいでしょうか? GitHub Next は、複数のカーソルと共有コード エディターを超えて、「連携」が何を意味するかを探ります。

Collaborative Workspacesは、GitHub Copilotを使ったリモートでのコラボレーションを実現するためのツールです。

Collaborative Workspacesでは、すでに提供されているVisual Studio Code の Live Share 拡張機能によるコードの共同編集のみならず、次のような統合的なワークスペース環境からデザイン、ドキュメンテーション、タスク管理などを行うことができ、チームーのコラボレーションを強化することができます。 プロジェクトページより引用

GitHub Blocks

プロジェクト 投稿日 提供ステータス 説明
GitHub Blocks 2022/11/9 WAITLIST カスタマイズ可能でインタラクティブなドキュメントブロック

Extend your codebase with custom, interactive blocks.Build rich documentation, enhance your workflows, and bring your repository to life.

(日本語訳)
カスタムのインタラクティブなブロックでコードベースを拡張します。豊富なドキュメントを構築し、ワークフローを強化し、リポジトリを活性化します。

GitHub Blocksでは、リッチでインタラクティブなドキュメントブロックにより、GitHubのドキュメントをカスタマイズすることができます。

次のようなLIVE DEMOを埋め込むことができます。 プロジェクトページより引用。

また次のような編集可能なインタラクティブなドキュメントを作成することもできます。 プロジェクトページより引用。

Code Brushes

プロジェクト 投稿日 提供ステータス 説明
Code Brushes 2023/1/11 USABLE PROTOTYPE コードのブラッシュアップ

Can editing code feel more tactile, like painting with Photoshop brushes? We added a toolbox of brushes to our Visual Studio Code extension that can modify your code.

(日本語訳)
Photoshop ブラシでペイントするように、コードの編集をより触覚的に感じることはできますか?コードを変更できるブラシのツールボックスを Visual Studio Code 拡張機能に追加しました。

Code Brushesは、VS Codeの拡張機能であるGitHub Copilot Labsの一機能として利用できます。

可読性の向上、型の追加、バグの修正、デバッグコードの追加などを、コードを選択してボタンをクリックするだけで行えます。

Copilot Voice

プロジェクト 投稿日 提供ステータス 説明
Copilot Voice 2023/3/22 WAITLIST GitHub Copilotを音声で操作

Write code without the keyboard. Difficulty typing? Use your voice to code without spelling things out by talking with GitHub Copilot.

(日本語訳) キーボードなしでコードを記述します。タイピングが難しい? GitHub Copilot と話すことで、言葉を使わずに自分の声でコーディングできます。

Copilot Voiceは、GitHub Copilotを音声で操作できる機能です。指定したコード行やメソッドへの移動、IDEの操作、コードの要約などを音声による指示だけで行うことができます。 プロジェクトページより引用。

Copilot for CLI

プロジェクト 投稿日 提供ステータス 説明
Copilot for CLI 2023/3/22 WAITLIST ターミナルでGitHub Copilotを利用

Ever having trouble remembering that shell command or this obscure flag? Don't worry: we're building GitHub Copilot assistance right into your terminal

(日本語訳)
あれやこれやのシェルコマンドやフラグを覚えるのに苦労したことはありませんか?シェルに何をさせたいかをただ言えたらいいのにと思ったことはありませんか?心配しないでください: GitHub Copilot アシスタンスをターミナルに組み込みます。

Copilot for CLIは、ターミナルでGitHub Copilotを使える機能です。

例えば、?? make get request with curlのように指示すれば、Copilotがコマンドを提案シてくれます。 プロジェクトページより引用。

Copilot for Pull Requests

プロジェクト 投稿日 提供ステータス 説明
Copilot for Pull Requests 2023/3/22 WAITLIST GitHub Copilotをプルリクエストに組み込む

Pull requests are a central part of the GitHub user experience. Copilot for PRs brings the power of Copilot to the PR experience, to help you write better PR descriptions, and to help your team review and merge PRs faster.

(日本語訳)
プル リクエストは、GitHub ユーザー エクスペリエンスの中心的な部分です。 PR 用の Copilot は、Copilot の機能を PR エクスペリエンスにもたらし、より良い PR の説明を作成し、チームが PR をより迅速に確認してマージできるようにします。

Copilot for Pull Requestsは、GitHub Copilotをプルリクエストに組み込む機能です。次のような機能が提供されています。

  • Template Expansion:開発者がPull Requestの説明欄に挿入するMarkerを参考に、OpenAIのGPT-4モデルを利用したCopilotがPull Requestの変更差分より提案した記述を説明欄に展開してくれる機能。
  • Gentest:CopilotがPull Requestの変更差分より、テストの記述が不足している箇所について忠告し、テストコードを提案してくれる機能。
  • Ghost Text:開発者がPull Requestの説明欄に記述をする際にサジェスト(Ghost Text)を表示してくれる機能

DevelopersIOに投稿された次の記事ではWaitlistに登録してみた際の手順を紹介していますので良ければご参考ください。

Copilot for Docs

プロジェクト 投稿日 提供ステータス 説明
Copilot for Docs 2023/3/22 WAITLIST ドキュメントの最適な回答のサポート

Whether you’re learning a new library or API or you’ve been using it for years, it can feel like the documentation gets in your way more than it helps. Maybe the tutorials are too basic, or the reference manual is too sketchy, or the relevant information is split across multiple pages full of irrelevant details.

We’re exploring a way to get you the information you need, faster. By surfacing the most relevant content for questions with tailored summaries that help connect the dots, Copilot for docs saves developers from scouring reams of documentation.

(日本語訳)
新しいライブラリや API を学習している場合でも、何年も使用している場合でも、ドキュメントは役に立たないというよりも邪魔になるように感じることがあります。チュートリアルが基本的すぎるか、リファレンス マニュアルが大雑把すぎるか、関連情報が無関係な詳細でいっぱいの複数のページに分割されている可能性があります。

必要な情報をより迅速に取得する方法を検討しています。 Copilot for docs は、点と点を結び付けるのに役立つ調整された要約を使用して、質問に最も関連性の高いコンテンツを表示することにより、開発者が一連のドキュメントを精査するのを防ぎます。

Copilot for Docsは、ドキュメントの最適な回答のサポートを提供する機能です。

次のように、ドキュメント検索者の技術レベルや製品への習熟度、欲しい回答のレベルに応じて最適な回答を行います。 プロジェクトページより引用。

おわりに

GitHub Nextについての紹介でした。

単体でも十分に強力なGitHub Copilotのみならず、さらに多くのAIベースのプロジェクトを追加予定とのことで、今後の開発体験が現在とは全く違うものになる予感がして、気が遠くなってきますね。このAIによるすさまじい進化スピードに振り落とされないようにしっかり着いていきたいものです。

以上