初めに
Github Copilot
や Amazon Codewhisperer
自動でコード生成するAIとしてどちらを使った方がより快適な
コーディングライフが送れるのでしょうか?
簡単なTask
のCRUD
を作成する中で
どちらが良くて、どう使えば効率的にコーディングできるのかを探ってみます。
導入方法
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
ルーティングの設定
Rails.application.routes.draw do
resources :tasks
end
Github Copilot
tasks_controller.rb
の内容をCopilot
と一緒に書いてみる↓
「こんな感じのコードが欲しいんだろ?」をバリバリ先読みして書いてくれるが、
コードの文脈がない状態では、予測変換の精度が微妙になる
というわけでどんどん書き進めてみる。
フォームの実装を書いてもらう↓
★ 爆速ですね O(≧∇≦)O ★
実はcontroller
を実装する前にもview
の実装を試しましたが
attributes
にないname
が書かれていたりなど予測変換が微妙でした。
controller
を実装した後で試すと、controller
の内容にマッチしたform
になりました。
表示中のファイルだけではなく、他のファイルも参照しながら、予測変換してくれるようです。
CRUD
を一通り実装した後では、書き進めるにつれて予測変換の精度が上がるようにも感じました。
メモ
- コメントを書いた方が予測変換の精度が上がる
-
詳細情報を技術用語を使ってコメントに書く方がいい
例 「# task_paramsを使用して、タスクの編集を実装する」 - テンプレ的な書き方が得意
- コードの文脈は多いほど精度が上がる
- 求めている完璧な解答ではないが修正ベースで記述できるため、脳のリソースを節約できる
Amazon Codewhisperer
こちらも初期設定通りにプロジェクトを作成します。
tasks_controller.rb
の内容をCodewhisperer
と一緒に書いてみる↓
変換速度が圧倒的に違うように感じます。
精度も微妙・・・🤔
一応View側も実装してみましょう。
NO 予測変換
うーん、予測変換がなかなか機能しない
コメントも英語で記述したり、詳細な技術ワードを入れても劇的な改善は見られなかったです。
後でCRUD
の機能を一通り実装してみたのですが、Codewhisperer
の方は変換に苦労している印象を受けました。
メモ
ただ、Codewhisperer
もCopilot
と同様に
- コメントを書いた方が予測変換が働きやすい
- 詳細情報を技術用語を使ってコメントに書く方がいい
という点では共通でした。
ただ、Copilot
よりも手直しの量が多く、
「実際に運用するのは難しいかもしれない」という不安な印象を受けました。
最後に
ここまで見ていただきありがとうございます。m(__)m
他言語や既存コードがたくさんある環境で使用する場合、どうなるかまではわかりませんが、
導入するならGithub Copilot
が良いという感じです。
業務にも実験的に導入して、生産性がどれくらい上がるかの実験もしてみても良いかもしれません。