Neovim, IntelliJ で Github Copilotを使えるようにする。

技術

お前、誰よ(自己紹介)

エンジニア の sua(gwr) です。最近福岡に引越しました。
お仕事ではPythonでバックエンドを、 プライベートでは Go や Rust をよく書いています。

Vim盆栽(設定やプラグイン弄り)が趣味です。

エディタについて

弊社では 参画するプロジェクトで指定されている等の理由がない限り、自由にエディタを選択できます。
私は IntelliJ IDEANeovim を気分で使い分けています。

Github Copilot について

弊社 では ジュニアエンジニアで無ければ Github Copilot の使用が認められています。
ライセンスは弊社で購入するので、個人での費用負担は不要です。


Github Copilot を利用できる状態にする

では 本題です。
IntelliJ と Neovim で Github Copilot による コードサジェストを利用できるようにする方法とその手順を解説します。

Githubでライセンスの購入とアカウントへの付与

※Github Organization を利用している場合の手順です。個人アカウントの場合は 設定からライセンスの購入ができます。

  1. Github Organization でライセンスを購入する。
  2. Copilotを使用したいアカウントに付与する。

IntelliJ IDEA (JetBrains系IDE) の場合

GitHub Copilot プラグインをインストールし、ライセンスを持つアカウントでログインすることで使用Github Copilot Chat も一緒に使用可能な状態になります。
※JetBrains系IDE ならば同様の手順で設定が可能です。

JetBrains AI Assistant の コード補完機能とは両立できません。
どちらか 一方のみを有効 にします。(設定からそれぞれ変更できます)

設定手順

  1. IntelliJ プラグインをインストールする。
    • GitHub Copilot プラグイン を インストールします。
    • Settings... > Plugins > Marketplace から検索してインストールできます。
  1. IDE から Github アカウントでログインする。
    • プラグインのインストール後、IDEを再起動すると Sign in GitHub という通知が出る(はず) なのでそちらからGithub Access Key でログインします。
    • 上記の通知が表示されない場合は手動でGithubにログインを行います。
      • メニュー > Tools > Github Copilot > Login to Github
ログイン済の状態での表示

Neovim の場合

Neovim は ビルトインで Copilot は使用できないため、プラグインを導入することで利用できるようになります。

Github公式のプラグインでは CopilotChat を 利用できません

CopilotChatも使えるようにするため、本記事では2つのプラグインを組み合わせることで、

コード補完とチャットを利用できるようにしています。

設定手順

  1. プラグインをインストールする。
    zbirenbaum/copilot.luaCopilotC-Nvim/CopilotChat.nvim を お使いのプラグインマネージャでインストールします。
    それぞれのプラグインの設定項目は READMEを参照してください。

  • Lazy.nvimで インストールする例
{
  "zbirenbaum/copilot.lua",
  event = "InsertEnter",
  config = function()
    require("copilot").setup({
      -- ここに設定を記載する
    })
  end
},
{
  "CopilotC-Nvim/CopilotChat.nvim",
  branch = "canary",
  dependencies = {
    { "zbirenbaum/copilot.lua" },
    { "nvim-lua/plenary.nvim" },
  },
  opts = {
    -- ここに設定を記載する
  },
}
  1. プラグイン セットアップを実行する。
    • Neovimの再起動後、コマンド :Copilot auth を実行します。
  2. Copilot サジェスト が有効になっていることを確認します。
    • suggestion.auto_triggerを true に設定している場合、Insertモードに入ったらすぐにコードを提案してきます。
    • suggestion.auto_triggerを false に設定している場合は、require("copilot.suggestion").toggle_auto_trigger() を実行することで切り替えができます。
  3. Copilot Chat が有効になっていることを確認します。
    • コマンド :CopilotChatOpen を実行します。
    • チャットUIが表示されていればOKです。
  4. (オプション) 設定ファイルでプロンプトの定義を更新
  1. (オプション) nvim-cmpによる コード補完の候補にもCopilotによるサジェストを表示したい場合は zbirenbaum/copilot-cmp を導入すると利用できるようになります。

動作している様子

Copilot によるコードサジェストがうっすら表示されるようになります。
サジェストを採用する場合はTABキーで確定できます。
採用しない場合はサジェストを無視してタイピングを継続します。

IntelliJ IDEA

  • Github Copilotによるコードサジェストが動作している様子
  • Github Copilot Chatがコードレビューしている様子

Neovim

  • Github Copilotによるコードサジェストが動作している様子。

  • Copilot Chat がコードレビューしている様子
intelliJの時と回答内容が異なるのはプロンプトのせい

結論

  • Neovim / IntelliJ でも Github Copilot は使える。
    • IntelliJ では導入が簡単にできる。
    • Neovim では導入や設定が難しいが 細かい設定ができる。
      • 公式プラグインではChatが使えない。
タイトルとURLをコピーしました