はじめに
久々にプログラミングが面白い。 そのきっかけは、先月から使い始めた Emacs だ。
これまでも新しい環境に手を出しては、 1〜2週間で結局IntelliJに戻ってしまうことが多かった。 けれど、今回はもう1ヶ月以上Emacsを使い続けていて、これが驚くほどにしっくりきている。
自分が使っているのはDoom Emacs。
導入直後から、熟練者が作り込んだような環境で快適に使える。
プログラミングのあり方の変化
AIの進化で、プログラミングは「コードを書く」ことから「自然言語で指示をする」ことに変わってきている。 すると、一周回って「プログラミング言語特化のIDE」よりも「テキストエディタ」の方が相性が良いように思えてくる。
以前は「プログラミング=検索」だった。ブラウザで調べて、IDEでコードを書くのが自然な流れ。 IDEの補完機能は、余計な検索の手間を減らしてくれる便利さもあった。
ところが今は、AIが答えてくれる、代わりに検索してくれる。ブラウザを開く機会は激減し、作業も途切れない。
また、CLIで使えるCoding Agentが出てきてからは、CUI中心のワークフローがとても快適になった。 小さなツールをすぐに作れるし、複雑なコマンドもAIに頼れば容易に組み立てられる。
そう考えると、ターミナルで動くVimやEmacsのようなエディタは、AI時代の開発環境にむしろ親和性が高いと言える。
普段の使い方
最近の自分の開発スタイルは Tmux + Emacs の組み合わせだ。 プロジェクトごとにTmuxセッションを立て、その中でターミナル版Emacsを起動している。
「すべてをEmacsで完結させる」という原理主義的なやり方も試してみたけれど、自分には少し難しかった。 Git操作はMagitを使っているけれど、他はCLIツールを普通に併用するくらいが使いやすかった。
一方で、メモやOrg-modeの利用はGUI版Emacsに任せている。 GUIなら画像を表示できるし、別ウインドウでメモを開きながらコードを書けるので、整理や記録に向いている。
VimではなくEmacsを選ぶ理由
Doom EmacsはEvilモード前提で作られているところがあり、操作感はほとんどVimだ。 ならVimでいいじゃんとなりそうだけれど、あえてEmacsを選ぶ理由は、Org-modeにある。
メモもコードもTODOも、すべて一つのファイルにまとめられる。 アウトライナーとしても使いやすく、 数多のメモアプリやアウトライナーを渡り歩いた自分にとって、これは決定打だった。
ちなみに、この記事もOrg-modeで書いていて、uniorg を使って変換し、ブログ記事として公開している。
さらに、Doom Emacsは、 キーバインドや操作感が絶妙で、 ここまで練り込むのにどれほどの時間が費やされたのかと思うと敬意を抱かずにいられない。
加えて、Emacs Lispも面白い。 昔は入門書を読んでも実用レベルに届く気がしなかったが、 いまはAIに支えられて最初からもりもりEmacs Lispを書いてカスタマイズできる。 最近はAIの出力を教材代わりに学んでいる。
プログラミングの楽しさを思い出す
Tmuxでエディタとターミナルを切り替えながら開発していく。 その操作感そのものが「ゲーム的な楽しさ」を持っていることを思い出した。
振り返れば、最初にプログラミングに熱中していた頃は、Emacsを使っていた。 年月を経てまたEmacsに戻ってきたことに、不思議な縁を感じる。
最近の人気の開発環境は便利ではあるものの、どこか窮屈に感じる部分がある。 ましてやAIによって、「僕らの楽しかったプログラミングはいずこに?」という気持ちになっていた。
一方、Emacsにはカスタマイズの余地があり、創意工夫できる余白が残されている。 AIに仕事を奪われ続ける昨今だけれども、 Emacsで「創意工夫の楽しさ」を感じることに希望を感じている。