Emacs 31 が目前:毎日使い込んできた変更点

2026/06/18 21:10

Emacs 31 が目前:毎日使い込んできた変更点

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

いくつかの主要カテゴリが過小評価されているため(完了マシンリー、ウィンドウレイアウトコマンド、ERC 固有の詳細、広範な文法リスト、および追加のクオリティ・オブ・ライフ機能)、改良されたサマリーを推奨します:

改良サマリー: Emacs 31 では、言語サポート、ユーザビリティ、および現代ワークフローに焦点を当てた一連の変革的なアップデートが提供されます。中心的な改善点は、

treesit-enabled-modes
't'
に設定することで、TypeScript、TSX、Rust、TOML、YAML、Dockerfile といった重要な言語に対する Tree-sitter 文法の自動インストールへの移行であり、これにより多くの手動構成が排除されます。ただし、ユーザーは注意すべき事項として、自動インストールされた文法はアーキテクチャによって分離されていない点を認識する必要があります。アーキテクチャ横断の共有構成(例:arm64 における x86_64 バイナリ)では読み込み問題が発生する可能性があります。本リリースではオプトインが要求される新しい実験機能も導入されており、
markdown-ts-mode
がその一例です。このモードは Org 風のキーバインディング、非 Tree-sitter 言語(Elisp も含む)に対するライブカラー付きコードブロック、ならびにインライン画像表示を提供します。また Eglot も同様地、LSP ドキュメントのフォーマット付きレンダリング用の実験的
markdown-ts-view-mode
を獲得しました。

ライブ開発支援は大幅に向上しており、Eldoc at point は現在のカーソル位置に対するヘルプテキストを自動的に表示し、コマンドを呼び出すことなく動作します。さらに

xref-edit-mode
は 'E' を押すことで Xref バッファでの直接編集を可能にし、外部 grep 迂回の必要性を取り除きます。ウィンドウ管理は現代化され、Speedbar がサイドウィンドウへ移管され(タイルセットアップでの競合を防ぐ幅制限付き)、バッファーの位置を保持しながらウィンドウ配置を転置、回転、または反転するコマンドが追加されました。

クオリティ・オブ・ライフの改善点も豊富で、新しい完了トグル(

completion-eager-update
completion-eager-display
)および改善されたミニバッファ可視完了(
minibuffer-visible-completions
'up-down'
に設定)が含まれます。バージョン管理ワークフローは、更新済みファイルの自動非表示(
vc-dir-auto-hide-up-to-date
)および Jujutsu などのツールで公開済み履歴の書き換えサポートにより恩恵を受けました。ERC は
erc-persistent-buffers
を通じてプレビューログへの対応と、
scrolltobottom
erc-fill-wrap
に依存する不具合の修正を受けます。追加ユーザビリティ機能には、ライブキーストローク表示(
view-lossage-auto-refresh
)、永続 IELM 履歴、バッテリー安全なコンパイル、端末ツールチップ(
tty-tip-mode
)、ならびに
term
が行を飲み込む不具合の修正が含まれます。最後に、Emacs 31 では Modus テーマがいくつか同梱されており、デウターアノピーおよびトリターノピー向けに最適化されたバリエーション、ならびにライトモードとダークモード両方用の着色済みバックグラウンドが用意されています。これによりアクセシビリティとビジュアルカスタマイズ性がさらに向上します。

本文

Emacs 31 で登場する新機能:パケットなし構成の未来

カールティク・チクマガルール氏による「Emacs をより快適にするバッテリー込みのエディタ」シリーズが執筆されています。同氏は現在版の Emacs に搭載されているがあまり知られていない機能を紹介しています。 本稿では、カールティク氏の記述を踏まえつつ、upcoming( forthcoming)の Emacs 31 で登場する新機能を中心にまとめました。

私は未だ正式リリース前の Emacs 31 を日常的に利用しており、以下の変更点は現在、パケットなし構成(Emacs Solo)で実際に動作している内容です。

⚠️ 免責事項

Emacs 31 はまだ開発・プレリリースフェーズにあります。

  • 名前やデフォルト設定は最終リリース直前まで変動する可能性があります。
  • 以下の内容は 2026 年中盤時点の動作実績に基づいています。
  • emacs-31
    ブランチまたは master ブランチからビルドしていない方は、これを「次期 Emacs のプレビュー」とお考えください。

Tree-sitter が劇的に改善しました

Tree-sitter は、Emacs での言語サポートを根本から変える機能です。以前は手動で文法ソースを追加したり、コンパイル環境を確認したりする必要がありましたが、Emacs 31 ではこれらが不要になりました。

主要な変更点

  • 自動切替:
    treesit-enabled-modes
    't
    に設定すると、Tree-sitter バリアントを持つマージンモード(major mode)が自動的に切り替わります。
  • 自動インストール: 文法ファイルがない場合でもエラーにはならず、Fetch とビルドを提案するようになります(以前は
    treesit-auto
    パケットの役割でしたが、今ではコア自体が行います)。

構成の簡素化

以前のように各言語の文法位置を定義する必要がなくなりました。

  • TypeScript、TSX、Rust、TOML、YAML、Dockerfile などの文法ソースはモードそのものの中に格納されるようになりました。
  • Emacs 31 のリリース後には、以下のコードブロックを削除できます。
;; ;; EMACS-31: このブロック全体が不要になります
(defclass treesit-language-source () ... )
(treesit-install-language-grammar 'typescript '("path/to/grammar") ... )

注意点(アーキテクチャ互換性)

異なるアーキテクチャのマシン間で Emacs のディレクトリツリーを共有する場合は注意が必要です。

  • 原因: 自動インストールされた文法ファイル (
    .so
    ) はアーキテクチャごとに隔離されていません。
    x86_64
    のファイルと
    arm64
    のファイルが同じ名前を持つため、片方のマシンでビルドされたバイナリは他方で読み込めません。
  • 対策: マシンごとのバイナリ構築を推奨します。

今後の展望

Emacs における Tree-sitter は驚くべきスピードで進化しており、より良い言語サポート、使いやすさ、パフォーマンスの向上が期待されています。


組み込みの markdown-ts-mode(実験的)

Emacs 31 では

markdown-ts-mode
パケットなしで標準搭載されます。これは私が発案・開発に参加し、現在は Stéphane Marks 氏が共同開発者として加わっている機能です。

特徴と機能

  • Org ユーザーとの親和性: キーバインドや操作感は Org モードに近く、Markdown の再学習が不要です(見出しナビゲーション、セクション折りたたみ、構造移動など)。
  • ライブなコードブロック表示:
    • フェンス付きコードブロックは、単なるテキストではなくその言語固有の Major Modeを使用します。
    • elisp
      ブロックには
      font-locking
      が適用され、適切な構文ハイライトが得られます。
    • 編集可能: コードブロック内のコマンドも基本的に機能します(補完系は未完全)。
  • 埋め込み画像表示: 画像リンクがバッファ内でレンダリングされ、図やスクリーンショットを含むドキュメントを快適に閲覧できます。

注意:

markdown-ts-mode
は依然として実験的です。

  • auto-mode-alist
    に登録されていないため、
    .md
    ファイルへの自動切り替えは行われません。
  • 手動でロードするには
    M-x load-library 'markdown-ts-mode
    を使用するか、
    auto-mode-alist
    に追加してください。

フィードバック(バグ報告や意見)が機能の安定化に役立ちます。


Eglot と Markdown ツイストモード連携(実験的)

Emacs 31 では Eglot が LSP ドキュメントを同一内部モードでレンダリングする機能を強化しました。

  • 整形されたホバードキュメント:
    markdown-ts-view-mode
    を使用すると、追加パケットなしでフォーマットされたドキュメントを表示できます(依存するのは
    markdown-ts-mode
    )。
  • 設定上の注意点:
    • eglot-code-action-indications
      はノイズ多発のため私は OFF に保っています。
    • eglot-events-buffer-size
      は廃止され、
      eglot-events-buffer-config
      へ移行される予定です(対応注釈を残してあります)。

ポインタごとの Eldoc(文脈ヘルプ)

カーソルが指している内容について、ヘルプテキストを自動的に表示する機能です。

  • eldoc-echo-area-prefer-doc-buffer
    と組み合わせることで、未知のコード内の探索時にガイドされた感覚を得られます。

賢く積極的な補完(Completion)

ミニバッファと補完機構に新しいトグルが追加されました。

  • 即時更新:
    completion-eager-update
    completion-eager-display
    を設定すると、タイプ中も補完 UI が即座に更新され、「待つ必要」がありません。
    • icomplete
      パケットを使用していない場合でも、単体で鋭い補完体験が得られます。
  • 直感的な移動:
    minibuffer-visible-completions
    'up-down
    に設定すると、矢印キーで可視候補を移動できます。

icomplete の改善

Emacs 31 ではバグ #75784 のパッチが含まれており、以下の機能が追加されました。

  • 垂直方向のバッファ内動作: スクロールして補完リストを見ることができます。
  • プレフィックスインジケーター: 現在入力中のプレフィックスが明確に示されます。
  • これにより、構成内の大規模な互換性ブロック(Workaround)を削除できるようになりました。
;; ;; EMACS-31: これまでの冗長な設定を消せます

ウィンドウレイアウトの体操

ウィンドウを分割したり殺害したりせず、手動でレイアウトを再配置するための新しいコマンドセットです。

  • transpose
    : 水平と垂直の配置を入れ替える。
  • rotate
    : レイアウト全体を回転させる。
  • flip
    : 左右または上下に反転させる。

かつて構築した三分割レイアウトを反対側に戻す際などに便利です。


サイドウィンドウで動作する Speedbar

Speedbar が正式なサイドウィンドウとして動作し、独立したフレームから変更されました。

  • speedbar-window
    により、モダンなファイルツリーのようにサイドにドックされます。
  • タイルレイアウトや単一モニター環境では、旧来のフローティングフレーム動作より優れています(競合を防ぐ幅制限付き)。

VC (バージョン管理) に関する機能改善

いくつかのバージョン管理関連の不具合が修正され、設定が簡素化されました。

  • vc-dir-auto-hide-up-to-date
    :
    • vc-dir
      バッファを更新すると、最新のファイルが自動的に非表示になります。
    • これにより
      -g
      キーハックでの手動更新操作が不要になり、設定ブロックを削除できます。
  • vc-allow-rewriting-published-history
    :
    • Jujutsu のようなワークフローや、プッシュ済みの履歴を書き換える
      force-pushing
      に柔軟に対応します。

編集可能な xref バッファ

以前は xref バッファ(他ファイルへの参照先リスト)でも編集操作が制限されていました。Emacs 31 ではこの状況が改善されました。

背景ストーリー

かつて私は、Dired や grep ブファのように xref でも編集 workflow が欲しいと考えました。しかし

xref-query-replace-in-results
(
r
) は正規表現限定であり、自由に編集できませんでした。そのため
*xref*
から
grep-mode
にエクスポートする自作コマンド(
xref-export-to-grep
)を実装していました。

開発者との議論と解決

この問題をメンテナの Dmitry Gutov氏に提案しましたが、「バッファ間移動が必要」「キー操作が複雑」という指摘を受けました。「xref バッファ内でインライン編集ができないのか?」という鋭い問いかけをきっかけに、

xref-edit-mode
が開発されました。

  • 結果: 追加ステップなしで、xref バッファ内で直接編集できます。
  • メリット: グレップへの回り道を廃止し、検索とリファクタリングの効率性が劇的に向上しました。

使い方

  1. C-x p g
    で検索を実行(例: FontAwesomeIcon)。
  2. e
    キーで編集モードを開始。
  3. 変更を保存 (
    C-c C-c
    )。

ERC がより整頓される

IRC クライアントである ERC において、以下の改善が行われました。

  • ログの挿入タイミング: 新規にオープンされたターゲットバッファに対してのみ以前のログを挿入し、チャネルへの再接続時に望ましい動作になります。
  • 依存関係の解消:
    scrolltobottom
    モジュールが
    erc-fill-wrap
    に依存しないため、旧バージョン用の設定コードが不要になりました。

QoL キャンプ(生活の質の微調整)

以下の小さな変更は日常使いを快適にするものです。

  • kill-region-dwim
    :
    • 領域選択なしで
      C-w
      を押した場合でも、単語を逆方向に殺害しエラーを出さず、「マーク未選択」のエラーを防ぎます。
  • view-lossage-auto-refresh
    :
    • C-h l
      (キーバインド履歴表示)がライブビューとなり、共有画面で指しているキーが見やすくなります。
  • ielm-history-file-name
    :
    • IELM のセッションは再起動後も保存され続きます(シェルや comint 同様に)。
  • native-comp-async-on-battery-power nil
    :
    • ラップトップの充電時に背景でのネイティブコンパイルによるファン騒音を防ぎます。
  • tty-tip-mode
    :
    • ターミナルエミュレータ内にツールチップを表示し、非グラフ化環境での使いやすさ向上。

特別表彰:ターミナル表示の劇的改善

Emacs 31 では

term
ansi-term
の挙動が根本的に改善されました。

  • 前問題: これらのバッファは行(ライン)を飲み込み、フルスクリーンアプリケーション(htop, nethack など)の再描画時に画面が混乱し、プログラムが正しく動作しないことがありました。
  • 新挙動:
    term
    が正しく再描画され、行を失うことなく高機能なターミナルアプリを実行できます。
    • これにより、外部ターミナルエミュレータを使う最後の理由の一つを取り除かれました。

特別表彰:Modus テーマが標準搭載!

Protesilaos 氏の貢献により、Emacs に Modus テーマシリーズが標準で利用可能になりました。 デウターノピア(緑色色覚異常)、トリトノピア(青色色覚異常)の視認性も考慮されています。

使用できるテーマリスト

  • 白色背景向け:
    modus-operandi
    ,
    modus-operandi-deuteranopia
    ,
    modus-operandi-tinted
    ,
    modus-operandi-tritanopia
  • 黒色背景向け:
    modus-vivendi
    ,
    modus-vivendi-deuteranopia
    ,
    modus-vivendi-tinted
    ,
    modus-vivendi-tritanopia

結論:マスター(最新開発版)を走動する必要はあるのか?

未リリースの Emacs を日常で使う意義について。

  • 箱の中を知りたいから: パケットなし構成を使用する者は、コアに何が含まれているかを知っておく必要があります。
  • 静かな喜び: コアが手動で作っていた機能(自作コマンドなど)を吸収し、設定ファイルが短くなっていくことは Emacs ユーザーの大きな楽しみです。

Emacs 31 が正式リリースされれば、上記で示したように山ほどのコードブロック(自作スニペット)を削除でき、設定はさらに簡素化されます。

詳しくは「Emacs Solo init.el」を参照してください。

追記(2026 年 6 月 18 日): Stéphane Marks 氏による慎重な校正と事実関係の訂正に対して感謝申し上げます。

同じ日のほかのニュース

一覧に戻る →

2026/06/19 3:31

私は彼らに強制的同意は違法だと告げた。その結果、5年後エルクヨプは 180 万ユーロの損失を負った。

## Japanese 翻訳: 2021年7月、Elgiganten Kundklubb に加入後、著者はマーケティングメールからの脱退に際し、店舗会員の全キャンセルが必要となることを発見しました。この問題は、2021年7月30日に Elkjop のデータ保護官に通知され、GDPR 第 4 条 (11) 、第 7 条および第 21 条 (2)、また電子プライバシー指令への違反を指摘しました。Elkjop が同意と会籍の分離を拒否した際、著者は処理制限の要請(第 18 条)および開示請求(第 15 条)を提出することで対応をエスカレートさせました。その後、スウェーデン当局 (IMY) に提出された苦情(参照番号 DI-2021-6660)は、GDPR 第 56 条 (1) のワンストップ・ショップ規則に基づき、Elkjop Nordic AS がノルウェーに拠点を有することから、ノルウェーの Datatilsynet に移管されました。 2026年6月1日、Datatilsynet は Elkjop グループに対して 2,000 万ノルウェークローナ(約 180 万ユーロ)の制裁金を科しました。決定では、同意が強制されたものかつ非具体的であるため無効と認定され、GDPR 第 6 条 (4) の適合性評価に準拠せずに広告およびコンバージョン追跡のためにデータを利用したことは承認されていないと指摘されました。裁判所は GDPR 第 4 条 (11)、第 5 条 (1)(a)、第 5 条 (2)、第 6 条 (1)(a)、第 6 条 (1)(f) および第 6 条 (4) を引用しました。 著者は、この決定を GDPRhub を通じて初めて約五年後に発見し、IMY に対して苦情通知を行わなかったことについて(第 77 条 (2) )問い合わせを実施しており、五営業日以内に回答を求める旨を求めています。未解決の場合は Elkjop グループに対する民事訴訟を検討し、欧州委員会へのエスカレーションを行う可能性があります。この事例は重要な先例を示しています:企業は必須サービスに対して強制的な「オプトイン」条件を用いて、厳格な GDPR 同意要件を回避することはできません。

2026/06/18 20:45

トロージャンマルウェアの配布用に 1 万カ所の GitHub リポジトリを発見しました

## Japanese Translation: 数値のニュアンス、具体的なファイル形式、および著者がツールをリリースする能動的な役割に関する微妙な点を捉えるために、改善されたバージョンの使用が推奨されます。 **改善されたサマリー:** 2026 年 6 月時点での GitHub マルウェア分散に関する故事への最近の更新は、フォークではなく新しいリポジトリを利用してトロイの木馬マルウェアを分散させる高度なキャンペーンを明らかにしています。攻撃者は明確なパターンに従います:独自の名称とコントリビューターを持つリポジトリを作成し、合法的なプロジェクトからコミット履歴を複製して元の履歴を消去し、README に悪意のある ZIP アーカイブへのリンクで置換します。これらのアーカイブは特定の可执行ファイル(例:`Application.cmd`、`Launcher.cmd`、`loader.exe`)およびランダムな DLL を含んでおり、特に VirusTotal の直接リンクスキャンでは通常クリーンな結果が返される一方、アーカイブファイル自体をスキャンするとトロイの木馬が検出されます。以前の調査では、日間のリポジトリ更新の約 10% が数ヶ月または数年間継続する悪意ある脅威であることが特定されましたが、GitHub の手動報告プロセスは当初、応答期間が週間単位に及ぶため非効率的でした。この問題を解決するために著者は「Git Malware Finder」というスクリプトをリリースし、特定されたリポジトリの完全なリストを公開しました。最近、GitHub はこのツールでフラグ付けされたリポジトリを自動的に削除し始めており、既知のケースの大部分を排除しています。ただし、なぜ検出が現在主に新しいリポジトリに限られているか、キャンペーンの実際の規模と確認された一致との違い、そして検索インデックスおよび検出アルゴリズムから回避するために使用される具体的な戦術についてはまだ未解明な点が残っています。

2026/06/16 7:36

アメリカン・エキスプレス:回復性決済システムのためのセルベースアーキテクチャ

## 日本語訳: American Express は、2018 年以来、その決済エコシステムを、アーキテクチャに直接リゼリアンス(回復力)を組み込むことで強化し、取引の失敗がシステム全体に影響を与えることを極めて稀にするようにしています。核心となる革新は、「セルベース」設計であり、これはマイクロサービスとデータベースを特定の地域内で複数エリアにまたがることなく、それぞれが一つの障害ドメインとして機能するように、孤立した単位である「セル」にグループ化したものです。このアプローチは、不安定なモノリシック構造を、数百万件の日次ライブ取引を確実に処理する堅牢で自律的なインスタンスに置き換えます。速度の向上と隔離の確保のため、同期的ルックアップを避けるために静的データは事前に複製され、動的データについては Global Transaction Router が決定論的ルーティングを使用して、権威のあるデータを保持するセルへのトラフィックを誘導します。ログ記録などのクリティカルパス依存関係は非同期に保たれ、ブロッキングを防ぎます。また、安全な再試行のために一意の識別子を通じて冪等性を維持しています。システムには、不安定になっているセルを漸次的にドレインして健康なセルへトラフィックをシフトさせるインテリジェントなトラフィックシフティングのメカニズムが含まれており、これにより急激な障害なしに処理が行われます。ただし、このリゼリアンスには限界があり、取引が外部システム(例:カード発行会社)に到達した時点で、「戻れない点」に達し、それ以降はルーティングの変更が不可能となります。最終的に、この戦略はエラーを局所的境界内に収容することで安定したユーザー体験を保証し、要求の厳しい金融環境でハイアベイラビリティシステムを拡張するための実証済みブループリントを提供します。

Emacs 31 が目前:毎日使い込んできた変更点 | そっか~ニュース