🔨

VSCodeでGitHub Copilotを使ってみた

2022/05/28に公開

先に感想

神がちで神
1回使うともう離れられない。

追記

GitHub Copilotの正規リリースが開始されました。
この記事はベータ版の際に書かれた物なので、修正を随所に入れております。

使い方

下記ページでGitHub Copilotの登録をしてください(無料)

https://copilot.github.com/

VSCode用のGitHub Copilot拡張機能も入れておきます。

https://marketplace.visualstudio.com/items?itemName=GitHub.copilot

似た名前のGitHub Copilot Nightlyがありますが、
こちらはプレリリース版です。

登録してからめちゃくちゃ待たされます。
私の場合は3~4ヶ月待ちました。
最初の60日は無料で、以後有料です。
(月10ドル、年払い100ドル)
高いと思うかもしれませんがこの記事を読むと、
「本当に10ドルでいいんですか?」となります。
また、学生かOSSに貢献していると無料です。

良かった点と凄いところ

コメントから予測してくれる

下記コードは # This def asks for name and age. しか書いていません。

# This def asks for name and age.
def ask_name_and_age():
    name = input("What is your name? ")
    age = input("How old are you? ")
    return name, age

コメントなしでも意外と効く

下記のコードは def averagefunc average だけで勝手に生成してくれたコード。
(averageは平均という意味)

def average(data):
    return sum(data) / len(data)
func average(data []float64) float64 {
    return sum(data) / float64(len(data))
}

変数名からでも予測してくれる

下記の例は input_age しか入力していない。

input_age = input("年齢を入力してください: ")

見やすい

薄い文字で出力されるので見やすい。

答えが複数ある

下記画像のように複数答えがある場合は選択できます。

コードの意味を本当に理解している

下記のコードで入力したのは def averageprint("平均は だけ、
残りは全て自動。

def average(data):
    return sum(data) / len(data)

print("平均は", average([1, 2, 3, 4, 5]))

連続で入力すると続きを推測してくれる

最初の文章以外は言語名しか書いてないです。

Proguraming Language Comment List

Python: #
Go: //
TypeScript: //
JavaScript: //
Java: //
C: //
C++: //
C#: //
PHP: //
Ruby: #
Haskell: //

他にも

pythonは def prime_number だけ。
goとtypeScriptはそれぞれ funcconst だけ。

def prime_number(n):
    for i in range(2, n):
        if n % i == 0:
            return False
    return True
func prime_number(n int) bool {
    for i := 2; i < n; i++ {
        if n % i == 0 {
            return false
        }
    }
    return true
}
const prime_number = (n: number) => {
    for (let i = 2; i < n; i++) {
        if (n % i === 0) {
            return false
        }
    }
    return true
}

きっとCopilotは、

こいつMarkdownで色んな言語で素数判定のプログラム書きたいんだろうなぁ。

と思っているに違いないです。

不安なところ、不満なところ

  • ライセンス問題 設定から変更できる
  • 正しいコードなのか
  • コード補完と競合することがある
  • Zigみたいな新しい言語は推測できない
  • etc...

よくライセンス問題とかコメントが面倒臭いと騒ぐ人達がSNSにはいますが、
ライセンス問題は設定から対処できます。
またコメントが無くても上記に示した通り関数名やコードの流れからCopilotは推測してくれます。

まとめ

使うのは自己責任だがエスパーみたいな相棒が手に入る。
体感90%ぐらいの確率で欲しいコードを提案してくれます。
開発速度が上がる(かも)
何度も言いますがしっかりコードはチェックしましょうね。

宣伝

GitHub Copilotがさらに便利になるプラグインの解説はこちら

https://zenn.dev/riya_amemiya/articles/ed4e71fd4108d7

感謝

皆さんのおかげで2022年6月24日現在検索ランキング2位です!
本当にありがとうございます。

🙇

GitHubで編集を提案

Discussion