見出し画像

GitHub Copilot - あなたのAIペアプログラマー

以下の記事を参考にして書いてます。

GitHub Copilot · Your AI pair programmer

1. あなたのAIペアプログラマー

GitHub Copilot」は、あなたのAIペアプログラマーです。何十億行ものコードで鍛えられた知識による提案を、すぐに受け取ることができるため、時間を節約し、コード実装に集中することができます。

◎ エディタ拡張
「GitHub Copilot」は、「Visual Studio Code」の拡張機能として提供しています。「Visual Studio Code」であればどこでも使えます。しかも、入力中に実行できるほど、高速です。

◎ 全ての言語に対応

「GitHub Copilot」は、さまざまなフレームワークや言語に対応しています。
テクニカルプレビューでは、「Python」「JavaScript」「TypeScript」「Ruby」「Go」で特に優れた機能を発揮していますが、「GitHub Copilot」は何十もの言語を理解しており、全ての言語に対応することができます。

◎ あなたはパイロット
「GitHub Copilot」では、あなたが責任者です。提案されたコードを循環し、受け入れるか否かを選択し、提案されたコードを手動で編集することができます。「GitHub Copilot」は、あなたが行った編集に合わせて、あなたのコーディングスタイルに合わせてくれます。

2. オートコンプリート以上の機能

「GitHub Copilot」は、OpenAIが開発した新しいAIシステムである「OpenAI Codex」を搭載しています。一般的なコードアシスタントよりもはるかに多くのコンテキストを理解します。「GitHub Copilot」 は、あなたが提供したコンテキストを使用し、それに合うコードを生成します。

画像1

◎ コメントをコードに変換
必要なロジックを記述したコメントを書けば、「GitHub Copilot」がコードを生成してくれます。

画像2

◎ 繰り返しの多いコードの自動生成
「GitHub Copilot」は、定型的なコードや反復的なコードパターンをすばやく作成するのに最適です。いくつかの例を与えれば、あとは自動的生成してくれます。

画像3

◎ テストの提案
ユニットテストのパッケージをインポートすれば、「GitHub Copilot」があなたの実装コードに合ったテストを提案してくれます。

画像4

◎ 解決策の提案
いくつかの異なる解決策を評価してみたいと思いませんか?。「GitHub Copilot」では、解決策の一覧を提示することができます。提示されたコードをそのまま使うことも、ニーズに合わせて編集することもできます。

画像5

3. 不慣れな領域でも自信を持ってコーディング

新しい言語やフレームワークを使う時も、コードを学び始めたばかりの時も、「GitHub Copilot」があなたのお手伝いをします。バグに対処したり、新しいフレームワークの使い方を学んだりするのに、ドキュメントを探したりウェブを検索したりして時間を費やす必要はありません。

◎ ツイートを取得

画像7

◎ 散布図の描画

画像8

◎ メモ化

画像9

◎ goodreadsの評価

画像10

4. フライトレポート

何百人ものエンジニアが、「GitHub Copilot」を毎日使用しています。それによって、エンジニアたちの仕事のやり方は大きく変わりました。
彼らの声をご紹介します。

慣れない言語でググってコードを書こうとするのは、フレーズブックだけで外国を旅するようなものです。「GitHub Copilot」を使うことは、通訳を雇うようなものです。
Harri Edwards // OpenAI
私のコメントを正確に理解し、的確な提案をしてくれたことに驚きました。また、10種類の提案から選択できるのも魅力的でした。
Gunnika Batra
初日にして、「GitHub Copilot」はすでにJavascriptのオブジェクト比較のニュアンスを教えてくれたし、私と同じようにデータベーススキーマを使いこなしています。これは、私がこれまでに見たMLアプリケーションの中で、最も心を揺さぶるものです。
Mike Krieger // Co-founder, Instagram
「GitHub Copilot」は、私が次に何を入力したいかを正確に把握しているようで、感心しました。「GitHub Copilot」は、React コンポーネントを使っているときに特に役立ちます。「GitHub Copilot」は、私のプログラマーのツールベルトに欠かせない存在となっています。
Feross Aboukhadijeh
「GitHub Copilot」は、私が作業していたテストファイルに特定のテストが欠けていることを発見し、そのテストを提案して書いてくれました。
Kate Studwell // GitHub

4. 仕組み

画像6

5. FAQ

◎ 一般

GitHub Copilotとは?
「GitHub Copilot」は、コードをより速く、より少ない労力で書くことを支援するAIペアプログラマーです。「GitHub Copilot」は、コメントやコードからコンテキストを引き出し、個々の行や関数全体を即座に提案します。「GitHub Copilot」は、OpenAIが開発した新しいAIシステムである「OpenAI Codex」を搭載しています。「GitHub Copilot」のテクニカルプレビューは、Visual Studio Codeのエクステンションとして提供しています。
GitHub Copilotの仕組みは?
「OpenAI Codex」は、一般に公開されているソースコードと自然言語で学習されたため、プログラミング言語と人間の言語の両方を理解します。「GitHub Copilot」エディタ拡張は、あなたのコメントとコードを「GitHub Copilot」サービスに送り、「OpenAI Codex」が個々の行や機能全体を合成して提案します。
GitHub Copilotの実力は?
私たちは最近、オープンソースのリポジトリにあるテストカバレッジの高い Python関数のセットをベンチマークしました。私たちは、関数の本体を空白にして、「GitHub Copilot」にそれを埋めてもらいました。このモデルは、1回目の試行では43%、10回の試行では57%の確率で正解しました。そして、このモデルは常に賢くなっています。
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」はライブラリや言語の古い使い方や非推奨の使い方を提案することもあります。コードはどこでも使用できますが、自分自身のリスクで使用してください。
貢献するには?
貢献するには、テクニカルプレビューに登録するのが一番です。「GitHub Copilot」を使用し、フィードバックを共有することで、「GitHub Copilot」を動かすモデルの改善につながります。
GitHub Copilotで提案されたコードを、Twitterなどのソーシャルメディアに投稿できますか?
もちろんです。投稿の際には #GitHubCopilot を使ってください。

◎ 学習セット

GitHub Copilotはどのようなデータで学習したのですか?
「GitHub Copilot」は、OpenAIが開発した新しいAIシステムである「OpenAI Codex」を搭載しています。このシステムは、GitHubの公開レポジトリにあるコードを含む、一般に公開されているソースからの英語とソースコードを選択して学習しています。
なぜGitHub Copilotは一般に公開されているデータを使って学習したのですか?
一般に公開されているデータを使って機械学習モデルを学習することは、機械学習のコミュニティではフェアユースと考えられています。モデルは、公共の集合知から洞察力と精度を得ることができます。しかし、これは新しい分野であり、私たちはこれらのトピックについて開発者と議論し、AIモデルを学習するための適切な基準を設定して業界をリードしていきたいと考えています。
GitHub Copilotは、新しいプラットフォームのコードを書くのに役立ちますか?
新しいプラットフォームやAPI が初めて登場したとき、開発者はそのプラットフォームに最も詳しくありません。また、その API を使った公開コードもほとんどありませんし、機械学習モデルが微調整なしでコードを生成することもないでしょう。将来的には、新しいAPIやサンプルをハイライトする方法を提供し、「GitHub Copilot」の提案の中でその関連性を高めていきます。

◎ オリジナリティ

GitHub Copilotは学習セットのコードを暗唱するのですか?
「GitHub Copilot」はコードシンセサイザーであり、検索エンジンではありません。そのため、提案されるコードの大半は独自に生成されたものであり、これまでに見たことのないものです。しかし、0.1%程度の確率で、学習セットからそのままのコードが提案される場合があります。ここでは、モデルの動作について詳しく調べてみました。このようなケースの多くは、十分なコンテキストを提供していない場合(特に、空のファイルを編集する場合)や、問題に対する共通で普遍的な解決策がある場合に起こります。私たちは、「GitHub Copilot」の提案に対してリアルタイムで適切な判断ができるように、学習セットから繰り返されるコードの稀なケースを検出するためのオリジン・トラッカーを構築しています。
GitHub Copilotで書いたコードは誰のもの?
「GitHub Copilot」は、コンパイラやペンのようなツールです。「GitHub Copilot」が生成する提案や、その助けを借りてあなたが書いたコードは、あなたに帰属し、あなたが責任を負うことになります。自分で書いたコードと同じように、慎重にテストやレビューを行うことをおすすめします。
コードを書くのを手伝ってくれたGitHub Copilotのクレジットを記載する必要がありますか?
いいえ。「GitHub Copilot」の助けを借りて作成したコードはあなたのものです。友好的なロボットは時折感謝の言葉を述べたがりますが、「GitHub Copilot」の功績を称える義務は一切ありません。コンパイラと同じように、「GitHub Copilot」を使った出力はあなたのものです。
GitHub Copilotが個人情報を出力することはありますか?
「GitHub Copilot」は公開されているコードで学習しているため、学習セットにはそのコードに含まれる公開された個人データが含まれています。社内でテストしたところ、「GitHub Copilot」の提案に学習セットの個人データがそのまま含まれていることは極めて稀でした。ただし、メールアドレスや電話番号、アクセスキーなどの個人情報と思われる情報が提案されることもあります。学習データのパターンから合成された架空の情報である場合もあります。技術的なプレビューとして、標準的なフォーマットで表示されたメールをブロックする初歩的なフィルタを実装していますが、努力次第でこのようなコンテンツをモデルに提案させることは可能です。

◎ 責任あるAI

GitHub Copilotは安全でないコードを出力しますか?
世の中には、安全ではないコーディングパターンやバグ、古い API やイディオムへの参照などを含む公開コードがたくさんあります。「GitHub Copilot」 がこのデータに基づいてコードの提案を合成すると、これらの望ましくないパターンを含むコードも合成されてしまいます。これは GitHub で非常に気にしていることで、近年私たちはActionsやDependabot、CodeQLといったツールをオープンソースプロジェクトに提供してコードの品質向上を支援してきました。同様に、「GitHub Copilot」の改善に伴い、安全でないコードや品質の低いコードを学習セットから除外するように努めます。もちろん、「GitHub Copilot」を使用する際には、テスト方法やセキュリティツール、そしてあなた自身の判断を常に考慮する必要があります。
GitHub Copilotは攻撃的な出力をしますか?
テクニカルプレビューには、攻撃的な言葉をブロックしたり、微妙な文脈での提案の合成を避けるためのフィルタが含まれています。基本的な技術がプレリリースであるため、「GitHub Copilot」は、偏った、差別的な、虐待的な、あるいは攻撃的な出力を含む、望ましくない出力を生成することがあります。不快な出力を目にした場合は、copilot-safety@github.com に直接ご報告いただければ、私たちの安全対策を改善することができます。GitHub はこの問題を非常に深刻に受け止めており、「GitHub Copilot」で対処することを約束します。
GitHub Copilotのような高度なコード生成ツールは、開発者の仕事にどのような影響を与えるのでしょうか。
よりインテリジェントなシステムを導入することで、開発者の経験に大きな変化をもたらす可能性があります。この技術によって、既存のエンジニアの生産性が向上し、手作業が減り、面白い仕事に集中できるようになると期待しています。また、「GitHub Copilot」は、ソフトウェア開発への参入障壁を下げ、より多くの人がソフトウェア開発に興味を持ち、次世代の開発者の仲間入りをする可能性があると考えています。

◎ テレメトリー

GitHub Copilotが収集したデータはどのように使われるのですか?
提案を生成するために、「GitHub Copilot」はあなたが編集しているファイルの一部をサービスに送信します。このコンテキストは、あなたへの提案を生成するために使用されます。また、「GitHub Copilot」は、提案が受け入れられたか否かを記録します。このテレメトリーは、AIシステムの将来のバージョンを改善するために使用され、「GitHub Copilot」が将来的にすべてのユーザーに対してより良い提案を行えるようにします。将来的には、ユーザーがテレメトリーの使用方法を制御できるようにする予定です。テレメトリーの使用についての詳細はこちらを参照してください。
送信データは安全ですか?
すべてのデータは安全に送信、保存されます。テレメトリーへのアクセスは、必要に応じて個人に厳しく制限されています。収集されたソースコードの検査は主に自動で行われ、人間がそれを読む場合は、特にモデルの改良や不正使用の検出を目的としています。
私のプライベートコードは、他のユーザーと共有されるのですか?
モデルの改良のために、ユーザーがどの提案を受け入れたか、あるいは拒否したかなどの情報を含むテレメトリーデータを使用しています。他のユーザーのためにコードを生成する際に、あなたのプライベートコードを参照することはありません。

◎ 可用性

なぜテクニカルプレビューは制限されていて、誰でも利用できるわけではないのですか?
「GitHub Copilot」には、最先端のAIハードウェアが必要です。テクニカルプレビューでは、限られた数のテスターに「GitHub Copilot」を無料で提供しています。商用製品を発売する際には、可能な限り広く提供する予定です。
有料版はありますか?
テクニカルプレビューが成功した場合、将来的には「GitHub Copilot」の商用バージョンを構築する予定です。 プレビューを使用して、人々が「GitHub Copilot」をどのように使用し、大規模に操作するために何が必要かを学びたいと思います。
Visual Studio Code以外のIDEで使用できますか?
いいえ。 今のところ、私たちはVisual StudioCodeでのみ最高のエクスペリエンスを提供することに重点を置いています。



この記事が気に入ったらサポートをしてみませんか?