見出し画像

ChatGPT vs Github CopilotどちらをITエンジニアは使うべきなのか

ChatGPTなどの生成AIに関する本を執筆して、インプレス社か出版しました。(GitHub Copilotについても書いています

詳細は、以下のページをご覧ください。

今回もLLMについて書きたいと思います。
というのも、今後エンジニアにとって避けて通れない話題ですし、時代に取り残されないためにはいち早く情報に接する必要があるからです。

ChatGPTBardなどのChatBot型のAIとGithub Copilotと呼ばれるコードを提案する型のAIがあります。

これのどちらを使うべきなのかという話ですが、結論から言うと両方使うべきだと思います。

ただ、GPT-4は月額2000円ほど、Github Copilotは個人利用で月額1000円ほどです。
そのため、両方利用するのは難しいかもしれませんね。
個人的には、Copilotを押します。
なぜなら、プログラミングにおいてはより高度な出力をすると考えられますし、他の機能も含めてGithubなしには開発は進められなくなっているからです。

今後も、Githubの重要性は変わらないと思いますので、Copilotに慣れておくことは大事だと考えています。

今回は、それぞれの強みについて書いていきます。
今後は、ChatGPTだけでなく、Github Copilotについても説明していきます。


ざっくりとした広い範囲の質問をする場合はChatGPT

ChatGPTは非常に汎用性が高く、個人的な悩みから宇宙の起源までなんでも自身満々に答えてくれます。

プログラミングに関してもそうで、何を聞いても大体答えは返してくれます。

例えば、

・Djangoのアプリケーションを作成しているが、インストールからプロジェクトの立ち上げまでの手順を教えて欲しい
・こんなバグが発生した。原因を解析して欲しい
・Bluetooth接続する方法を実装したい。どうすればいい

など、ざっくりと何かを知りたい場合だとChatGPTです。

他にも、サンプルコードを生成して欲しい場合なんかに非常に便利です。
一方で、Github Copilotは個別具体的なことについての質問は得意です。

個別の詳細な質問はGithub Copilot

Githubは、様々な開発者が自身の作成したコードをアップロードしているネット上のサービスです。
その中には、個人開発のサービスもあれば、OSSの大規模でハイレベルなコードもあります。

これらのコードを読み込んで、CodexというLLMをベースとしたモデルが学習して、コメントからコードを生成することができるようになっています。

使用する際には、#でコメントをつけます。
すると、自動で「このコードがいいんじゃないか」という提案をしてくれます。
あるいは、control + Enterを実行すると、複数ある提案を全て見せてくれます。

例えば、以下のようにコメントしてcontrol + Enterを押すと、CNNのクラスを作成してくれます。

# Pytorchライブラリで、CNNを実装するクラスを作って欲しい

class CNN(nn.Module):
    def __init__(self):
        super().__init__()
        # nn.Conv2d(入力チャネル数, 出力チャネル数, カーネルサイズ)
        self.conv1 = nn.Conv2d(1, 16, 3, padding=1)
        self.conv2 = nn.Conv2d(16, 16, 3, padding=1)

        self.pool = nn.MaxPool2d(2, 2)

        self.fc1 = nn.Linear(16 * 7 * 7, 50)
        self.fc2 = nn.Linear(50, 10)

    def forward(self, x):
        # 1層目
        x = self.conv1(x)
        x = F.relu(x)
        x = self.pool(x)

        # 2層目
        x = self.conv2(x)
        x = F.relu(x)
        x = self.pool(x)

        # 3層目
        x = x.view(-1, 16 * 7 * 7)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)

        return x

また、実際に触ってみるとわかると思いますが、Copilotは使えば使うほど、精度の良い提案を自動でしてくれます。
これは、過去に書いたコードを参考にしているからでしょう。

例えば、直前に何か変数を宣言したら、コメントを書かなくても次にはどういった処理が必要なのか自動的に類推して、処理を書いてくれます。

作成した関数の名前から、処理内容を類推して処理を埋めてくれることもあります。

以下の記事では、Copilotは40%の新規コードを記述していて、5年後には80%になるそうです。
今のうちにCopilotでの記述に慣れ方がいいかもしれないですね。


リファクタリングをするならばChatGPT

Copilotの欠点として、大量のデータを読み込めないということです。

一方で、GPT-4は大量の文字を入力することができます。

そのため、何十行にも及ぶコードを渡して、このコードをリファクタリングして欲しいと言うこともできます。

ChatGPTもCopilotも過去の質問や内容を記憶していないという問題があります。

そのため、断片的に聞くことはできても、プロジェクトフォルダ全体を見て、どのファイルにどの処理を記述して、どこに新しいファイルを作ってみたいな、俯瞰した見方はできないです。

ユーザーごとの過去の質問内容をどのように記憶するのかが、今後のAIの課題にはなりそうです。

まとめ

以上、今回は簡単にChatGPTとCopilotについて説明しました。
ざっくりまとめると

アイデア出し, ざっくりとした質問: ChatGPT
個別のチューニング: Github Copilot
リファクタリング: ChatGPT

となるかと思います。
全体の流れとしては、プロジェクト開始時や設計時はChatGPT、開発・テストでは、CopilotメインのChatGPTをサブというような使い方がいいんじゃないかと思います。

Github Copilotについても、今後、様々な記事を書いていきたいと思います。

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