LoginSignup
15
5

More than 1 year has passed since last update.

Emacsでcopilotってみた

Last updated at Posted at 2022-06-25

copilotとは

copilotはAIがコードを提案して生産性を上げてくれるツールで、最近プレビュー版での公開から一般公開に変わりました。
VSCodeやNeovim、JetBrains IDEsなどに対応していますが、Emacsでも利用できそうだったので、実際に導入してみました。

copilotに申込む

まずこちらを参考にcopilotに申し込みます。
初回60日は無料となります。
学生など一部の条件を満たせば無料で使用できますが、基本的には月額10ドルまたは年間100ドルとなります。

Emacsの設定

Emacsではcopilot.elを導入して、copilotを利用します。

準備

copilot.elではnode.jsが必要ですが、バージョンが12.xから17.xでないといけません。
私は18.1でしたので、nvmを使用して、17をダウンロードしました。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nvm install 17

init.el

私はstraight.elでパッケージ管理をしているので、init.elは下記のようになりました。

init.el
(straight-use-package
 '(copilot :type git :host github :repo "zerolfx/copilot.el" :files ("dist" "*.el")))

;; 使用するnode.jsを指定
(setq copilot-node-executable "~/.nvm/versions/node/v17.9.1/bin/node")

;; プログラムモードの場合、copilot-modeを実行
(add-hook 'prog-mode-hook 'copilot-mode)

;; copilot用にキーバインドを設定
(defun my-tab ()
  (interactive)
  (or (copilot-accept-completion)
      (company-indent-or-complete-common nil)))

(global-set-key (kbd "C-TAB") #'my-tab)
(global-set-key (kbd "C-<tab>") #'my-tab)

(with-eval-after-load 'company
  (define-key company-active-map (kbd "C-TAB") #'my-tab)
  (define-key company-active-map (kbd "C-<tab>") #'my-tab)
  (define-key company-mode-map (kbd "C-TAB") #'my-tab)
  (define-key company-mode-map (kbd "C-<tab>") #'my-tab))

インストール後、copilot-modeを起動して、M-x copilot-loginを実行します。

ミニバッファー上に6桁のワンタイムパスワードが表示されるので、パスワードをメモしてEnterを押下します。
するとGithubのリンクに飛ぶので、先程のパスワードを入力し、githubのアカウントを認証します。
認証が完了するとcopilotが利用できるようになります。

実際に使ってみた

関数名から補完したり、コメントから補完したりするだけでなく、日本語も補完してくれます。
また、下の動画はjavascriptですが、init.el等のemacs lispでもいい感じに補完してくれました。

copilot

感想

無料期間があるとはいえ月10ドル…と思っていましたが、実際に使ってみるとこれはお金を払ってもいいかなと思えるくらいよくできていました。
法人向けプランがまだ出ていませんが、職場でも使えるようにしたい…

15
5
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
15
5