
2026/04/26 11:12
私は正式に、エマックスからの引退を宣言します。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
- 日付:2026年4月26日、20年間にわたり毎日使用してきたemacsを公式にネイティブC++アプリケーションへの移行とし、主要なエディタをモーダル編集機能を持つVimに変更する。最も重要な変更点は、本質的なLispパッケージ(
とM-x calc
)を、wxWidgets を用いて構築された独立したGUI アプリで置き換えることである。このツールキットは、Dear ImGui などの代替案よりも選択されたものであり、それはWindows、macOS、Linuxを含むクロスプラットフォームでの堅牢なネイティブサポート(適切なファイルパスの処理やI/Oユーティリティを含み)を最初から提供し、これらの特定のプロジェクトにおいて不可欠だからである。Elfeed
今、以下の2つの主要なプロジェクトにおいて新たな維持管理者が必要とされ、それらの存続が保証されている:
:GMP と MPFR を使用した高精度な電卓で、emacsのカリキュラマニュアルに基づいて構築されたものである。これは、stackcalc
が大数の処理において遅いようになったため開発された。M-x calc
:1.0リリースにまだ到達していないにもかかわらず、元のElfeed2
を置き換えたRSSリーダである。Elfeed
他の移行を必要とするプロジェクトの包括的なリスト(@、aio、bitpack、Elfeed、Impatient などを含む)は、意欲的な開発者が引き継がない場合アーカイブされるが、削除は行われない。この移行により、ユーザーのワークフローは純粋なテキストベースのLisp環境から、C++ツールチェーンとCMakeを必要とするコンパイル済みバイナリをインストールするものへと根本的に変化させる。ユーザーはこれらのネイティブアプリケーションへ移行するか、あるいはemacsからワークフローを移植する手段を見つける必要があるが、これは外部サポートまたは個人の努力によるメンテナンスに依存する。
本文
2026 年 4 月 26 日
https://nullprogram.com/blog/2026/04/26/
先週の火曜日に、20 年にわたる日々の使用を経て Emacs で「C-x C-c」を打つのが最後の機会となりました。その期間のほぼ半分は、徐々に modal editing(モーダル編集)へと切り替え、さらに Vim へ移行しながら Emacs から引退していく過程だったとはいえ、Emacs はプラットフォームであり、特に自分自身が開発したアプリケーションたちにも慣れ親しんできた存在でした。移行を急ぐ必要もなく、置き換えもゆっくり進んでいきました。新たに獲得した「超能力」(=これまでの開発経験やツールチェーンの知識)を活かし、残された二つの機能を数日間の作業で完成させました。一つは M-x calc を置き換える
stackcalc、もう一つは Elfeed を置き換える Elfeed2 です。後者には特に興奮を覚えます。なぜなら、それが元のものより既に優れた性能を実現している totiž ためです。どちらも複数プラットフォーム対応で、ネイティブの C++ ユーティリティを用いた原生 UI コンポーネントを採用したデスクトップアプリケーションです。
これらの現在もアクティブに使用されているパッケージには、新たなメンテナンス者の受け皿が必要です(各プロジェクトの issue またはディスカッションに申請してください):
- @ (about)
- aio(おそらく既に対応済み;about を参照のこと)
- bitpack
- Elfeed(ここで申請可能)
- Impatient (about)
- javadoc-lookup (about)
- json-rpc
- memoize (about)
- nasm-mode (about)
- simple-httpd (about)
- Skewer (about)
- weak-ref (about)
- x86-lookup (about)
私が進むのにこんなに時間がかかったのも当然です。これらのプロジェクトは安易に誰かramer に引き渡せるものではありません;申請者はまず自身の貢献実績を積み、信頼性を確立しておく必要があります。すでにコントリビューションを行ったことがあれば、マージされなくてもそれは良いサインです。私はそれらのプロジェクトを自分の名前空間から移譲することは可能ですが、Melpa への移管(そのための署名が必要)については別途対応してください。もし申請者が現れなければ、これらのプロジェクトはアーカイブ化されますが、削除されることはありません。
wxWidgets の試行錯誤
Emacs カルキュレーターは驚くほど優れており、私がこれまでに使った中で最も優れた計算機アプリでした。そのため、見つかるあらゆる代替案も満足するものにはなりませんでした。私の作成した
stackcalc は GMP と MPFR を用いて任意精度計算を実現しており、期待通り格段に高速ですが、機能面ではまだ追いつきません。特に象徴的処理(symbolic processing)のようなニッチな機能は欠落しています。しかし、個人の用途をカバーするには十分であり、必要であれば後から機能を追加することも可能です。Emacs カルキュレーターのマニュアルが、stackcalc 開発時の仕様書として役立ちました。
Elfeed は、この過去 13 年間の私の日常ルーティンの柱となっており、これより優れたものを見つけることができませんでした。いつか書き換えが必要であることは以前から意識していました。その再構築に数週間かかることを認識しつつ、すでに望むフィードリーダーを手に入れている現状は、やる気を湧き立たせるのが難しい状況でもありました。ところが、かつての手法で約 3 週間要する作業を、新しいアプローチでは一日で完遂できるようになったため、この種のプロジェクトを始めやすく、同時に完了させることも容易になりました。ただし現時点ではまだ「1.0 リリース」には至っておらず、数日間の试运行を経て初めて元の Elfeed に代わって十分機能することが確認できました。
Dear ImGui は
dcmake 開発において適切な選択でしたが、今回の二つのアプリ(stackcalc と Elfeed2)においては同様とは限りません。全天稼働させられるフィードリーダー向けにはアクティブレンダリングは適さず、より豊かなライブラリを求めざるを得ませんでした。本業では Qt を専門としていますが、個人的なプロジェクトでは軽量で CMake の FetchContent で手軽に利用可能なツールキットを望みました。その結果、自然と wxWidgets に至る流れになりました。wxWidgets には確かに課題もあります(文字コード処理の誤りや、多数の箇所で意図せずに二次的時間複雑度が生じるなど)が、予想以上の成果を出し、Windows、macOS、Linux のすべてでネイティブな外観を持つアプリケーションを迅速に開発可能にすることができました。
Dear ImGui と異なり、wxWidgets はプラットフォーム層を内包しており、適切な入出力処理やパス管理も提供します。このようなアプリを開発する際、追加でプラットフォームレイヤーを用意する必要はほとんどありません。wxWidgets 自身の実装 utilities に信頼して進めば十分です。
両プロジェクトとも wx64devkit を用いると、依存ライブラリが FetchContent と互換性があるため「ボックスアウト・オブ・ザ・ボックス」でビルド可能です。すべてのプラットフォームで動作するためには、C++ ツールチェーンと CMake があればよく、以下のような手順で構成できます:
$ cmake -B build $ cmake --build build
wxWidgets における経験を通じてその限界と可能性を把握してきた今、私はこれからの GUI プロジェクトの多くでこれを基盤として採用する見込みです。Dear ImGui などがより適しているような例外を除けば、ほぼ全てで wxWidgets を選択することになるでしょう。