メインコンテンツへスキップ
GitHub CopilotとAmazon CodeWhispererを比較してみた😎
  1. blog/

GitHub CopilotとAmazon CodeWhispererを比較してみた😎

目次

こんにちは!オズビジョン開発ユニットの天野です。

昨今話題になっているAIによるコーディング支援ツール「GitHub Copilot」と「Amazon CodeWhisperer」について、実際に動かしながら比較を行い、実務においても利用価値があるのか調査していきます。

概要

GitHub Copilotとは?

GitHub Copilotは、OpenAIが開発した人工知能モデル「OpenAI Codex」を使用し、コードや機能をサジェストしてくれる “あなたのAIペアプログラマー” です。(2022年6月21日一般リリース)

Your AI pair programmer GitHub Copilot uses the OpenAI Codex to suggest code and entire functions in real-time, right from your editor.

引用: https://github.com/features/copilot

Amazon CodeWhispererとは?

Amazon CodeWhispererは、何十億行ものAmazonのコードや公開されているコードでトレーニングされており、自然言語(英語)で記述されたコメントを理解し、複数のコードの提案をリアルタイムで生成して、開発者の生産性を向上させることができます。(2023年4月13日正式リリース)

引用元: https://aws.amazon.com/jp/codewhisperer/features/

導入事例

2023/07/01 時点

GitHub Copilot🚀

導入事例複数

Amazon CodeWhisperer🤫

特に該当記事見当たらず

一般公開されてから1年以上経つGitHub Copilotは複数の導入事例があるのに対して、公開されて間もないAmazon CodeWhispererは、実務で導入している旨の記事は見当たりませんでした。

料金

月額(個人プラン)月額(企業プラン)
GitHub Copilot$10$19(1ユーザにつき)
Amazon CodeWhisperer無料$19(1ユーザにつき)

※ 執筆時点の情報です。更新される可能性もあるため、ご利用の際は下記情報もあわせてご参照ください。

Github Copilot

Amazon CodeWhisperer

対応IDE

Visual Studio CodeNeovimAWS Cloud9JetBrains
GitHub Copilot
Amazon CodeWhisperer

セキュリティの考慮

GitHub Copilot🚀

企業プラン(for Business)ではプロンプト、サジェスチョンともにリアルタイムにのみ送信され、保持されません。テレメトリー(Copilot自体の改善への情報提供 = 学習に使われるデータ)をOFFにできます。

またGitHubのパブリックコードと一致するコード候補を検出するフィルターが含まれているため、フィルターを有効または無効の選択ができます。

参考

Amazon CodeWhisperer🤫

コードスキャン機能を使用してPython、Java、およびJavaScriptコードをスキャンし、Open Web Application Security Project (OWASP) のトップ 10 に含まれる見つけにくい脆弱性や、暗号ライブラリのベストプラクティスを満たさない脆弱性などを検出できます。CodeWhispererは、セキュリティの脆弱性を特定すると、それらの修正方法に関する提案も提供します。

参考

Amazon CodeWhisperer のよくある質問

実際に使ってみた

JS/TS

コメントに書いた処理を関数として表示

GitHub Copilot🚀

2m_copilot.gif

Amazon CodeWhisperer🤫

2m_whisperer.gif

こちらも提案してくれるコードはほとんど同じですが、GitHub Copilotはreturnまでの候補を一度に提案してくれました。

テストコードの作成

Jestのテストコードを記述するため、あらかじめテストケースをコメントで残して確認しました。

const matchTest = (str: string): boolean => {
	const r = new RegExp(
		/^((https?:)?\/\/([\.\w\-]+\.)?hapitas\.jp)?(\/|\/[^\/].*)?$/
	);
	return r.test(str);
};

// matchTest関数をテストするサンプル
describe("matchTest", () => {
	// trueが返されることを確認する
	// falseが返されることを確認する
	// パスのみのURLでtrueを返すことを確認する
	// httpスキームから始まるドメインでfalseが返されることを確認する
	// http以外のスキームから始まるドメインでfalseが返されることを確認する
});

GitHub Copilot🚀

jest copilot

Amazon CodeWhisperer🤫

jest copilot

両ツールともに差異なくコメントに沿ったテスト用コードを提案してくれました。

文字列の加工・抽出

文字列をカンマ区切りに変換

GitHub Copilot🚀Amazon CodeWhisperer🤫 どちらも変わらず

文字列をカンマ区切りに変換
スネークケースへの変換

GitHub Copilot🚀Amazon CodeWhisperer🤫 どちらも変わらず

スネークケースへの変換

両ツールともに差異なくコメントに沿った整形後のコードを提案してくれました。

React

プロパティ名から型の予測

GitHub Copilot🚀Amazon CodeWhisperer🤫 どちらも変わらず

プロパティ名から型の予測

stateの予測

GitHub Copilot🚀Amazon CodeWhisperer🤫 どちらも変わらず

stateの予測

両ツールともに差異なく期待するコードを提案してくれました。

APIからデータを取得するhookの作成

GitHub Copilot🚀

react_copilot.gif

Amazon CodeWhisperer🤫

react_whisperer.gif

提案してくれるコードはほとんど同じですが、GitHub Copilotの方が候補の表示スピードが若干速く感じました。

Python

S3 バケットにtxtファイルをputする処理

GitHub Copilot🚀

copilot_s3_lambda.gif

Amazon CodeWhisperer🤫

whisperer_s3_lambda.gif

どちらも非推奨のリソース boto3 をimportしていますが、コメントに沿った処理を提案してくれました。

Amazon CodeWhispererは statusCodebody のreturnまで一度に提案してくれました。

The AWS Python SDK team does not intend to add new features to the resources interface in boto3. Existing interfaces will continue to operate during boto3’s lifecycle. Customers can find access to newer service features through the client interface.

引用: boto3.amazonaws.com

AWS Python SDKチームは、boto3のリソースインターフェースに新しい機能を追加するつもりはありません。既存のインターフェースはboto3のライフサイクルの間、引き続き動作します。顧客はクライアントインタフェースを通じて新しいサービス機能へのアクセスを見つけることができます。 (DeepL翻訳)

予測の候補一覧を表示する

GitHub Copilot🚀

list_copilot.png

Amazon CodeWhisperer🤫

list_amazon.png

GitHub Copilotの方が候補一覧の表示がスムーズで、カーソルの上下で候補を切り替えることもできます。

まとめ

両ツールともに非常に優れたコーディング支援ツールであり、開発者の生産性を向上させることができるため、利用価値は十分にあります。GitHub Copilotは、導入事例も多く、豊富なサンプルコードや実績があります。一方、Amazon CodeWhispererはまだ公開されたばかりで導入事例が見当たりませんが、AWSのリソースに強い補完が効く可能性があります。

選択するツールは、個々のニーズや環境によって異なるかもしれません。実際に試してみて、自分に合ったツールを見つけることをおすすめします。