LoginSignup
38
30

More than 1 year has passed since last update.

Github Copilot と Amazon Codewhisperer どっちが良いの?

Last updated at Posted at 2023-05-16

初めに

Github CopilotAmazon Codewhisperer

自動でコード生成するAIとしてどちらを使った方がより快適な
コーディングライフが送れるのでしょうか?

簡単なTaskCRUDを作成する中で
どちらが良くて、どう使えば効率的にコーディングできるのかを探ってみます。

導入方法

AIの導入方法は以下の記事をご参照ください。
詳細が丁寧に説明されていました m(__)m

Github Copilot
【GitHub Copilot】登録方法の解説と試してみた

Amazon Codewhisperer
無料で始めるAmazon CodeWhisperer on VSCode(Github Copilotと同等の性能?)

試した環境

Ruby 3.1.0
Rails 7.0.4
Visual Studio Code 1.7.7

結論

Github Copilot を使いましょう。

これはあくまで

  • 使用言語が Ruby
  • フレームワークがRails
  • コードの文脈が少ない
  • erb, rb ファイルの記述

というかなり限定的な条件ではありますが

Github Copilotの方が

  • 速度が速い
  • 精度が高い
  • あまり詳細なコメントを要求しない

ように感じました。
他言語やコードの文脈が多いファイルの場合、どうなるかは試してみないと分かりません。

初期設定

アプリ作成

rails new rails-todo-github-copilot

作成したファイルに移動

cd new rails-todo-github-copilot

Taskモデルの作成

rails g model Task title:string description:string

データベースへの反映

rails db:migrate

コントローラーの作成

rails g controller Tasks

ルーティングの設定

routes.rb
Rails.application.routes.draw do
  resources :tasks
end

Github Copilot

tasks_controller.rbの内容をCopilotと一緒に書いてみる↓

画面収録-2023-05-16-15.25.28_out.gif

「こんな感じのコードが欲しいんだろ?」をバリバリ先読みして書いてくれるが、
コードの文脈がない状態では、予測変換の精度が微妙になる

というわけでどんどん書き進めてみる。

フォームの実装を書いてもらう↓

画面収録-2023-05-14-12.05.52_out.gif

★ 爆速ですね O(≧∇≦)O  ★

実はcontrollerを実装する前にもviewの実装を試しましたが
attributesにないnameが書かれていたりなど予測変換が微妙でした。

controllerを実装した後で試すと、controllerの内容にマッチしたformになりました。
表示中のファイルだけではなく、他のファイルも参照しながら、予測変換してくれるようです。

CRUDを一通り実装した後では、書き進めるにつれて予測変換の精度が上がるようにも感じました。

メモ

  • コメントを書いた方が予測変換の精度が上がる
  • 詳細情報を技術用語を使ってコメントに書く方がいい
    例 「# task_paramsを使用して、タスクの編集を実装する」
  • テンプレ的な書き方が得意
  • コードの文脈は多いほど精度が上がる
  • 求めている完璧な解答ではないが修正ベースで記述できるため、脳のリソースを節約できる

Amazon Codewhisperer

こちらも初期設定通りにプロジェクトを作成します。
tasks_controller.rbの内容をCodewhispererと一緒に書いてみる↓
画面収録-2023-05-14-23.48.19_out.gif

変換速度が圧倒的に違うように感じます。
精度も微妙・・・🤔

一応View側も実装してみましょう。

フォームの実装を書いてもらう↓
画面収録-2023-05-15-0.07.42_out.gif

NO 予測変換

うーん、予測変換がなかなか機能しない
コメントも英語で記述したり、詳細な技術ワードを入れても劇的な改善は見られなかったです。
後でCRUDの機能を一通り実装してみたのですが、Codewhispererの方は変換に苦労している印象を受けました。

メモ

 ただ、CodewhispererCopilotと同様に

  • コメントを書いた方が予測変換が働きやすい
  • 詳細情報を技術用語を使ってコメントに書く方がいい
    という点では共通でした。

ただ、Copilotよりも手直しの量が多く、
「実際に運用するのは難しいかもしれない」という不安な印象を受けました。

最後に

ここまで見ていただきありがとうございます。m(__)m

他言語や既存コードがたくさんある環境で使用する場合、どうなるかまではわかりませんが、
導入するならGithub Copilotが良いという感じです。

業務にも実験的に導入して、生産性がどれくらい上がるかの実験もしてみても良いかもしれません。

38
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
30