GitHub Copilotを使ってみた
(更新日時 )
先日G Amazon Code Whispererを試したので、今回は GitHub CoPilotを試してみました。
GitHub Copilotとは
GitHub Copilotは、人工知能(AI)を活用して、コードの自動生成を行う開発ツールです。このツールは、GitHubとOpenAIが共同で開発したものであり、プログラマーがコーディング中にサポートすることを目的としています。
具体的には、開発者がコードを書く際に、CopilotがAIによって自動生成されたコードのサジェストを行い、開発者がその中から適切なものを選択することができます。また開発を生業にしている方は、コードに適切なコメントを書くことを求められますが、Copilotはコードから適切なコメントを生成することも可能です。このツールによって、開発者はより迅速かつ正確にコードを書くことができ、開発作業の効率向上を期待できます。
GitHub Copilotは、様々なプログラミング言語に対応しており、Visual Studio Codeなどの人気の高いエディターにも対応しています。また、オープンソースのプロジェクトに貢献することもでき、開発者がより多くの時間をコードの品質向上に費やすことができるようになっています。
GitHub Copilotの利用方法
GitHubでの設定
GitHub Copilotを利用するには、 GitHub CoPilotのページから「GitHub Copilotを試す」ボタンを押して、Copilotの利用を登録する必要があります。
GitHub Copilotは個人利用で月額$10です。最初は無料期間がありますが、無料期間の登録でも氏名や住所、クレジットカードなどの支払い方法の登録が必要です。
登録の際に、2つの設定があります。
「Suggestions matching public code」については、説明を読むと、すでに公開されているコードと一致した場合は候補から外すかどうかというオプションでライセンス上のリスクを軽減してくれるようです。個人で試すだけなので今回はAllowにしました。仕事やプロジェクトで使う場合はBlockしたほうが無難でしょう。
「Allow GitHub to use my code snippets for product improvements」という項目は個人向けライセンスにだけあるようです。これは自分のコードの断片についてGitHubがCopilotにシェアするかどうかということのようです。Copilotの精度向上に貢献したいのであればONにすればよいと思いますが、自分のコードが外に流れることになります。
NeoVimでのGitHub Copilotの設定
Amazon Code Whispererのほうはサポートしている統合開発環境でないエディタはVS Codeくらいでしたが、GitHub CopilotのほうはNeoVimをサポートしています。 NeoVimで試してみましょう。
NeoVimでCoPilotを使えるようにするには以下のような手順が必要です。前提として、NeoVimとNode.jsがインストールされていることが必要です。
NeoVim用のCopilotプラグイン をガイドに従ってインストール。利用しているプラグイン・マネージャーがあれば使いましょう。
NeoVim上で
:Copilot setup
というコマンドを実行します。一時的にブラウザが立ち上がり、「Authenticate GitHub Copilot Plugin」というボタンが表示されるので、押下して認証しましょう。次に NeoVim上で
:Copilot enable
というコマンドを実行し NeoVim上でCopilotを有効化します。
これでNeoVim上でCopilotの設定ができました。
実際にGitHub Copilotでコードを書く
以下は、実際にCopilotを使ってコードを書いた例です。動画ではどんなプログラムかコメントを与えて丸ごと記述させています。実際には関数ごとなど処理の固まりごとにやりたい事を指定していくほうが精度がよいようです。
以下は実際の書けたコードです。
# フォルダ名をコマンドラインから引数として指定し、該当フォルダ内にあるファイル名を取得し、標準出力にファイルリストを表示するプログラム。 # ただし、ファイル名の順番はソートされているものとする。 import sys import os # 引数の数をチェック if len(sys.argv) != 2: print('Usage: python FileList.py [folder]') sys.exit() # 引数からフォルダ名を取得 folder = sys.argv[1] # フォルダが存在するかチェック if not os.path.exists(folder): print('指定されたフォルダが存在しません。') sys.exit() # フォルダ内のファイルを取得 files = os.listdir(folder) # ファイルをソート files.sort() # ファイルを表示 for file in files: print(file) # ファイルの数を表示 print('ファイル数:', len(files)) # ファイルの合計サイズを表示 total_size = 0 for file in files: total_size += os.path.getsize(os.path.join(folder, file)) print('合計サイズ:', total_size, 'バイト') # ファイルの平均サイズを表示 print('平均サイズ:', total_size / len(files), 'バイト') # ファイルの最大サイズを表示 print('最大サイズ:', max(files), 'バイト') # ファイルの最小サイズを表示 print('最小サイズ:', min(files), 'バイト')
GitHub Copilotのまとめ
個人的にはNeoVimをサポートしているところは、Amazon Code Whispererよりも好感が持てます。
そう考えるこれでプログラマーの職がなくなっていくというより、GitHub Copilotを利用すれば以下のような作業を効率化したり省いてくれたりでプログラマーをうまくサポートして生産性を上げてくれるのは確かです。
参考になる処理の書き方やライブラリのクラスの使い方を調べる
自作のコードについて定義箇所と利用箇所で矛盾が生じるコードを書いてしまう。
適切なコメントを記述する
ただ、今の月額料金だと個人で利用するというのはちょっと敷板が高い気がします。そういう点ではあなたがVS Codeユーザーであれば無料で提供されるAmazon Code Whispererのほうがよいかと思います。
(更新:2023-05-18) Sublime TextにGitHub Copilot
非公式ながら、Sublime TextにもGitHub Copilotを導入することができます。
以下の2つのパッケージを導入して、アクティベーションを行うと使えるようになります。
LSPはSublime Text上でLSPを利用するためのパッケージで、LSP-copilotはGitHub CopilotをLSPとして利用するためのパッケージです。Node.jsがインストールされていなければインストールされます。
LSP-copilotのアクティベーションは、以下のコマンドを実行することで行います。
アクティベーションにはGitHubアカウントが必要です。Sign Inするとブラウザが開いて、Activation Codeの入力を促してきます。 Sublime TextでLSP-copilotがクリップボードにコードをセットしてくれているので、そのままブラウザのコード入力欄に貼り付ければ大丈夫です。
これで、NeoVimとSublime Text両方で使えるようになりました。コードだけじゃなくて、ブログ記事みたいなものもサジェッションをくれたりするので意外に重宝しています。
ちょっと利用料払ってもいいかも・・・