出力を入力へ

プログラミングに関する自分が考えた事を中心にまとめます

Emacs環境のアップデート

自分のメインの開発環境(エディタ)としてはEmacsを利用し続けている。部分的にはVSCodeやIntelliJなどを使いつつもEmacsメインであることは10年以上変わっていない。 とはいえ、最近はあまりelispまわりの整備が行えておらず、良い開発環境にはなっていなかった。 さすがにこのままではよろしくないし、かといってVSCode等への完全移行もできそうにないのでEmacs環境を整備した。

バージョンアップデート

今まではUbuntu 22.04のデフォルトである27.1を利用していた。その前も基本的にはOSのデフォルト提供されているバージョンを変えてはおらず、最新のバージョンを積極的には採用していなかった。 また、macOSなどUbuntu以外の環境でもUbuntuで利用できるバージョンを合わせていた。 これであまり不自由していなかったが、ふとEmacs User Suervey 2022を見たときに結構みんな新しいバージョンを利用しているのだなと知った。 slackのemacs-jpでも比較的新しいバージョンについて話題にしていることが多く、実は新しいバージョンに追従した方がよいのかも、と考えるようになった。 新しいバージョンを導入しても大きなトラブルが発生する頻度が少なく、それでいて新機能を試せるのであればメリットの方が大きいので。また、自分の手元でも確認してみたいと思うことは多々あったので。

あまり手間を掛けるつもりはなかったが簡単に導入できるならとEmacsを28系にアップデートすることにした。 Ubuntu環境は ppa:kelleyk/emascを、macOS環境はhomebrew caskをそれぞれ利用してインストールした。 これによりUbuntuでは28.1をmacOSでは28.2にアップートできた。 どちらも特に導入の手間を掛けずに実現することができた。

まだ最新バージョンを利用することのメリットや機能検証なんかはできていないが、これからそういった情報も継続収集できればよいかなと思う。

leafの導入

パッケージマネージャとしてel-getを利用していたが、autoloadまわりが上手くいっていないケースがあった。 このせいでいくつかのパッケージが利用できていない(または手動でロードする必要がある)状態で、これが今までEmacsを使っている中で一番の課題だった。 適切な設定を行えばおそらくel-getのままでも解決できるとは思うが、せっかくなのでとパッケージマネージャごと変更することにした。

use-packageだとelpa/melpa以外からのインストールができないということで leafを導入することにした。 2023年1月時点で、el-getを直接利用するよりも(国内の)ユーザは多そうで参考となる設定が公開されているところも地味に助かるところ。

qiita.com

まだ全部のパッケージをleafで置き換えられてはいないが順調に更新できており、今まで動作しなかったパッケージも動作するようになったのでかなり助かっている。 合わせてパッケージの移行や設定見直しなども行っているのでもう少し時間が掛かりそうだが、少しずつでも開発環境が便利になっていくのは非常に体験が良い。

init-loaderの継続

init-loaderを導入したときは、どちらかというと .emacsファイル1つでは管理しにくいからinit-loaderを利用してファイル分割した方がよい、という考えの人が多かった印象。 自分もその考えに賛成で積極的に分割していきたいと思いinit-loaderを導入していた。

最近ではあまり分割し過ぎない方がよい、またはinit-loaderを利用する必要はないという考えもあるようで、今回の見直しでinit-loaderをどう扱うか再検討した。 再検討してみたが、やはり自分は目的に応じてファイルが分かれている方が好みだなと思い init-loaderの利用は継続することにした。 init-loaderがあるとEmacsの起動が遅くなるという話もあり、高速起動できた方が魅力的ではあるとは思いつつも、自分にはあまり恩恵はないくファイル分割を実現できた方がよいと考えた。 ただし、それでも分割し過ぎの面はあると思うので過度な分割には注意していきたい。

また、他の人はinit-loaderの利用を止めてしまったのかなと公開している人の.emacsファイルを確認してみたら、まだまだ使っている人も多いみたい。 あまり心配せず、自分の好みを優先させてよさそう。

フォント

自分はフォントにあまりこだわりがなく、以前Emacs環境を整備したときにたまたまRictyが流行っていたのでRictyを採用していた。 その後Rictyフォントの生成はansible化していたので環境移行時にもセットアップの手間を感じず使い続けてきた。

今回環境の見直しを行う中で、Rictyのサイト上にて他のフォントを推奨する案内があることに気が付いた。 前述の通りあまり困ってはいなかったが、他のフォントを推奨するのであれば変更しようということで見直すことにした。

rictyfonts.github.io

いろいろ確認してみたところ白源がよさそうということでこれを利用してみることにした。 1週間ほど使い続けているが、特に違和感なく利用できるのでこのまま継続する予定。

github.com

custom-set-variable対応

いつからか、勝手に init.elファイルに追記・更新されるようになってしまった。 自分は .emacs.dをそのままリポジトリ管理しているのでファイルが勝手に更新されるとうれしくない。

これを制御して書き込みを完全に止めることは難しいらしく(なんだそりゃ)、別のファイルに追記させてそれを読み捨てるという方法がよく採用されるらしい。 あまり良い方法には思えないが、手軽に他の対策を取ることもできないのでこの方針を採用する。

qiita.com

まとめ

おそらく Emacs環境の大幅見直しをしたのは7-8年ぶりくらい。 まだ大きな変更と言えるほどの変更は入っていないが、それでも自分にとって現状把握と全体の見通しを改善できた。 最近のIDEのように表示をリッチにすることは考えていないが、こまかな改善は継続的に取り入れていきたい。

github.com