目的
先日、GitHub Copilotに関するオンラインセミナーを受けていたところ
「GitHub Copilotは、エディタ上で開かれているソースの内容も考慮してソースを推論する」という特徴を聞きました。
ふと、
「テストコードさえ書いたらその要件を満たすコードを勝手に生成してくれるのでは、、、?
なんて興味が湧いたので検証してみようと思います。
もし、期待通りになったらTDDが今後さらに熱を帯びるのではないでしょうか。
使用言語: python
テストフレームワーク: pytest
まずは簡単なコードで試す
関数名から推論されないように無機質な名前にしています。
class Functions:
def function(a ,b):
return a + b
class TestClass:
def test_function1(self):
assert Functions.function(4,5) == 9
def test_function2(self):
assert Functions.function(100,150) == 250
def test_function3(self):
assert Functions.function(-5, -10) == -15
上記の関数部分を消して、GitHub Copilotに推論させてみると、、
問題の難易度を上げてみる
引数a,b,cに対してa*b-c
の値を返すような関数を期待したテストケースを作成します。
う~ん、、、、(テストはもちろん全部誤っていた)
ちなみにChatGPT4に同じ質問したところ
それぞれのテストに通すための分岐が生成されているため、こちらの方が未来を感じますね。
※ミスり方がプログラミング初心者レベルなのが愛着が持てる
最後に
TDDを促進するような使い方はまだできなさそうな感じを受けました。
こういった使い方はまだまだ実用レベルには及ばないですね。
GitHub CopilotはChatGPT3.5ベースとのことなので、今後、Chat4ベース、もしくはそれ以上になってくるともっと有用性が増すと思うので、期待したいと思います。