まずは登録をしよう
このページに全て書いてあるので割愛。
海外の住所入力フォームに戸惑ったので参考ページを貼っておきます。
vscodeのプラグインを入れよう
vscodeを起動して Extensions から GitHub Colilot をインストール。
しばらくすると右下にこのようなポップアップが表示されるので、Sign in to GitHub
ボタンをクリックしてサインイン。
ポップアップが出ない時は左下の人マークからSign in with GitHub ....
をクリックでもサインイン出来ます。
vscode左下にgithub copilotのアイコンが表示されていれば準備完了です。
実際に使ってみよう
コメントして自動でコードを生成してもらう
サンプルとして、k-meansアルゴリズムでクラスタリングしてみた。
k-means.pyファイルを作成し、冒頭にコメントを記載。
その後はtabを押してcopilotの提案を受け入れる。
生成されたコードがこちら。
# 2次元空間上の点をk-meansアルゴリズムでクラスタリングするプログラム
# 結果は色分けして表示する
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 乱数を固定値で初期化
np.random.seed(0)
# 2次元空間上にランダムに点を生成
X = np.random.randn(100, 2)
# k-meansアルゴリズムでクラスタリング
km = KMeans(n_clusters=3, init='random', n_init=10, max_iter=300, tol=1e-04, random_state=0)
y_km = km.fit_predict(X)
# クラスタリング結果を表示
plt.scatter(X[y_km==0, 0], X[y_km==0, 1], s=50, c='lightgreen', marker='s', label='cluster 1')
plt.scatter(X[y_km==1, 0], X[y_km==1, 1], s=50, c='orange', marker='o', label='cluster 2')
plt.scatter(X[y_km==2, 0], X[y_km==2, 1], s=50, c='lightblue', marker='v', label='cluster 3')
plt.scatter(km.cluster_centers_[:, 0], km.cluster_centers_[:, 1], s=250, marker='*', c='red', label='centroids')
plt.legend()
plt.grid()
plt.show()
結果はこちら。
完璧!
補足: copilot君が考え中は右下のcopilotのアイコンがくるくる回る
コードのドキュメントを書いてもらう
このコードの説明を書いてもらう。
def fizzbuzz(num):
if num % 3 == 0 and num % 5 == 0:
return "FizzBuzz"
elif num % 3 == 0:
return "Fizz"
elif num % 5 == 0:
return "Buzz"
else:
return num
ドキュメントを書いてほしい関数を選択して、/doc
を入力すると、いい感じに描いてくれる!
テストを書いてもらう
テストを書いてほしい関数を選択して /test
を入力すると、別ファイルにテストコードを書いてくれる。
# BEGIN: 8f7e6d5c7b3a
import unittest
from fizzbuzz import fizzbuzz
class TestFizzBuzz(unittest.TestCase):
def test_fizz(self):
self.assertEqual(fizzbuzz(3), "Fizz")
self.assertEqual(fizzbuzz(6), "Fizz")
self.assertEqual(fizzbuzz(9), "Fizz")
def test_buzz(self):
self.assertEqual(fizzbuzz(5), "Buzz")
self.assertEqual(fizzbuzz(10), "Buzz")
self.assertEqual(fizzbuzz(20), "Buzz")
def test_fizzbuzz(self):
self.assertEqual(fizzbuzz(15), "FizzBuzz")
self.assertEqual(fizzbuzz(30), "FizzBuzz")
self.assertEqual(fizzbuzz(45), "FizzBuzz")
def test_number(self):
self.assertEqual(fizzbuzz(1), 1)
self.assertEqual(fizzbuzz(7), 7)
self.assertEqual(fizzbuzz(13), 13)
if __name__ == '__main__':
unittest.main()
# END: 8f7e6d5c7b3a
ちゃんとできてる。
まとめ
- コード生成力は高い印象を受けた
- 日本語は弱め?
- ただコードが書ける人は淘汰されて行くのだろう。。。