EmacsとAIの利用変遷

.emacs.d/init.elのコミットログから読み解いた、今までのEmacsとAIを使った開発のオレオレ歴史をまとめてみる。

2019年: TabNineを試してみた

自分の記憶と.emacs.dのログをみる限り、
最初のAI利用はCopilotとかではなく TabNine でした。

  • 2019-05-15 b54375b add: company-tabine

当時のTabNineはLLMを使った何かというよりも既存の補完の延長という感じで使っていたと思う。
ただ、調べてみると GPT-2 ベースのコード補完だったよう。
つまり、Copilot以前に、すでにEmacs上でLLM的なコード補完を触っていたことになる。
https://openai.com/index/gpt-2-6-month-follow-up/
ぶっちゃけ、補完だけなら dabbrev とかの補完で充分だったので、割とすぐ外した記憶がある。

2023年春: ChatGPT ArcanaでLLMをEmacsに入れる

2022年12月1日にこんなことを呟いているが、
ChatGPTが登場して一気に盛り上がったタイミングのちょっとあと、Emacs内のチャットを呼び出すツールを入れた。gptelとか出てきてと思うが自分は ChatGPT-Arcanaというツールを入れた。
今考えるとこの時に開発関連で何かが登場するペースって結構ゆっくりだったな。

  • 2023-03-18 1131574 add: chatgpt-arcana

EmacsからChatを呼び出すだけなので、かつモデルがそこまで賢くなかったので、そんなに使わなかったと思う。たまーに相談で呼び出すかな?くらいの使い方だった。

2023年夏: Copilot.elとorg-ai

その後、Copilot.el を入れた。多分他の人と比べると結構遅いのでは。(vimとかVSCodeはそもそも公式でパッケージが用意されてたがEmacsはいまだにないというのも大きいのかも)

  • 2023-06-28 95db553 add: copilot.el

ここでようやく、AIコード補完を割と使うようになる。
同じ時期に org-ai も入っている。

  • 2023-07-14 89b2184 update: org-babel ai

orgでの実行というインタフェースが便利かなと思って入れた。
これはこれで便利だったがコーディングではあまり使う機会がなかったような。

2024年: gptel、Gemini、magit-gptcommit、Ollama

2024年になると、LLM連携の試行錯誤が増える。

  • 2024-04-01 afb3db1 add: gptel
  • 2024-05-16 dc372d2 add: gemini
  • 2024-06-27 2aed0e5 update: sonnet
  • 2024-06-30 251b423 feat: Add magit-gptcommit integration with OpenAI LLM provider
  • 2024-08-06 f294053 Add support for Ollama language model provider in magit-gptcommit
  • 2024-08-06 8d5aa42 feat: Update LLM configuration with Ollama support on gptel

この時期は、gptelでClaudeやGeminiを使い、magit-gptcommitでコミットメッセージを生成し、さらにOllama / CodeGemmaも試している。クラウドLLMだけではなく、ローカルモデルも試してみた記憶がある。

記事の流れとしては、ここは「LLMをEmacsに接続する時代」と書けそう。
補完だけでなく、チャット、コミット生成、みたいなAIをいかに上手くEmacsから呼び出すことができるかなを試している時期っぽい。

2025年2月: Copilot Chat中心へ

2025年2月に、かなり明確な移行がある。

  • 2025-02-05 2825b74 feat(init): add copilot-chat package and remove magit-gptcommit and gptel packages
  • 2025-02-05 3ac0504 feat: add key bindings and buffer management for copilot-chat

このコミットでは、gptel と magit-gptcommit を削除して Copilot Chat を入れている。
つまり、いろいろ試行錯誤してLLM連携を試していた状態から、Copilot Chat中心に整理した時期だった。

M-q でCopilot Chatを開く、バッファ表示を調整する、選択範囲や現在バッファをChatへ渡す、といった導線を整備した。AIが単なる補完ではなく、サイドウィンドウに常駐する相談相手になっていった。

2025年春〜夏: AidermacsとClaude Code

Copilot Chatのあと、Aider系の試行が入る。

  • 2025-03-21 f2c8b78 feat: Add aidermacs configuration to init.el
  • 2025-03-24 295b3b0 feat(aidermacs): enhance key bindings and add new functions for buffer management
  • 2025-04-04 60456bc feat: enable architect mode in aidermacs configuration

多分、Cursorみたいに自動でコード変更を入れてもらう感じにしたかったのだと思う。
ここから「チャットに相談する」よりも「コード変更を任せる」方向へ寄っている。

さらにClaude Codeも入る。

  • 2025-05-27 350c2a8 feat(ui): improve font and buffer display settings, add claude-code integration
  • 2025-07-10 a83f0fd update: replace claude-code packages
  • 2025-08-07 b59f5cc fix(init): remove unused flycheck and configure claude-code-ide backends

Claude CodeをEmacsのサイドウィンドウに出し、後に claude-code-ide へ移行している。
このあたりから、自分でコードを書くことからエージェントにまかすような感じのコーディングスタイルになってきたのかな。

2025年秋〜2026年初頭: Codex / codex-cli

次にCodex系が来る。

  • 2025-08-29 2bfd2ff feat(ide): Enhance vterm and add Codex IDE integration
  • 2025-10-08 babee53 refactor(init): replace custom Codex setup with codex-cli package
  • 2026-02-16 10b911d refactor(codex-cli): enhance toggle function to handle region sending
  • 2026-02-16 0248f38 feat(codex-cli): add minor mode for custom keybindings in Codex CLI buffers
  • 2026-02-17 ca2b210 chore(emacs): remove Codex CLI integration from init.el

多分、これはCodexも試してみただけかな。

2026年2月: opencode.el時代

2026年2月に opencode.el が入る。

  • 2026-02-17 0955ddd feat: adjust copilot margins and add opencode package
  • 2026-02-17 8324ba3 feat: add OpenCode session workflow and shell setup
  • 2026-02-27 65b9d05 feat(opencode): add hydra menu for session management
  • 2026-03-31 16740e9 feat(opencode): add clipboard screenshot attachment function
  • 2026-04-08 6b08435 feat(opencode): add permission handling for newer servers
  • 2026-04-20 65b7278 feat(opencode): add "show todos" action to session menu

セッション管理、プロジェクトルート検出、選択範囲やバッファをコンテキストに追加、モデル選択、MCP toggle、todo表示、permission handlingなど、AIエージェントをEmacs内で本格的に操作するための設定が増えている。
ここら辺でClaude Opus4.6とか登場して、もうだいぶエージェントに任せられるようになった時期。
(と、同時に、opencode からはAnthropicのモデルが呼べなくなった時期と記憶してるけど)

Copilot ChatやClaude Codeは「EmacsからAIを呼ぶ」感じだったが、opencode.elでは「Emacsの中でAIエージェントのセッションを管理する」感じに変わっている。

2026年4月以降: emacs -nw / terminal Emacsへの最適化

opencode.el時代と並行して、terminal Emacs向けの整備が増える。

  • 2026-04-06 51d7aff feat(init): add macOS clipboard support for terminal Emacs
  • 2026-05-27 e55048c feat(init): enable corfu popup in terminal
  • 2026-06-23 7f1a418 feat(kkp): enable Kitty keyboard protocol in terminal frames

terminal Emacsでclipboard、corfu、修飾キーを扱うための設定が入っている。これは、AIエージェント開発の中心がGUI Emacsではなく、ターミナル上のEmacsへ寄っていったことを示していると思う。

AIエージェントはEmacsパッケージというよりも、CLIとして動くものが多い。(GUIもあると思うが)
そうなると、EmacsもGUIアプリというより、ターミナル上でエージェントを動かしてたまにEmacsをterminal上で立ち上げてチェックするみたいなスタイルの方が、むしろこのAIエージェント全盛期ではあってると思い、ターミナル上のEmacsを使えるようにしていった。

2026年6月以降: レビューもAIエージェントへ

最後に、レビュー用の仕組みも出てくる。

  • 2026-06-24 c57ac14 feat(herdr-review): add modal minor-mode to send diff comments to herdr agents
  • 2026-07-01 6d78feb Extract ai-review-mode package
  • 2026-07-02 e026010 Use remote ai-review-mode package source

2026年5月29日の開発環境 でplannotatorを使ったレビューのワークフローを使っていたが、terminal上で完結したくなり、revdiffなども試したが、新しい操作を覚えるのにもちょっと不便したので、やはり使い慣れたEmacsを使いレビューをしたくなった。

そこで、 diff や magit の上にコメントを付け、それを herdr 上の agent に送るためのモードを作った。
後に ai-review-mode として外部パッケージ化した。

まとめ

最初は「賢い補完」だったものが、だんだん「Emacsの中でAIと対話する」になり、さらに「EmacsからAIエージェントを操作する」からEmacsはレビュー用にたまに起動するみたいな感じになった(magitとかはまだめっちゃ使うけど)。
こうやっていろいろな変化しながらまだEmacsを使い続けられるのはやっぱりEmacsのポテンシャルによるものなんだろうなと思った。