Emacs では、すべてがサービスのように見える

2026/07/10 17:21

Emacs では、すべてがサービスのように見える

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

要約

Japanese Translation:

OS カーネルの上位で動作し、強力なアプリケーションオーケストレーターとして機能するエマックスが、単なるオペレーティングシステムであるという一般的な誤解とは逆に、クライアント―サーバー架構によってシステムサービスにアクセスし、他のプログラムを実行することで、「エマックス内にのみ居住する」ことをユーザーに可能にします。このモデルでは、エマックスは UI(ミニバッファ)、ネットワークエッジ(URL、ソケット、JSON)、およびローカルデータストレージといったクライアント側の課題をすべて、動的な Emacs Lisp(Elisp)API を通じて処理します。この API は、外部ツールとの統合のための高い度合いの即興性を可能にします;例えば、

https://wttr.in
から天気データを取得し、JSON 応答を処理するか、
shell-command-to-string
を介して重い引き算を外部の Python スクリプトに任せるなどの単純な 67 行の Elisp スクリプトです。コマンドラインユーティリティを管理可能なサービスとして扱うことで、エマックスはファイル、ネットワーク、および異なるプログラムを単一のインターフェースからシームレスにアクセスできる堅牢なアプリケーションの作成を簡素化します。

本文

Emacs: すべてはサービスに見えるクライアント構築モデル

Emacs は単なるエディタではなく、OS カーネルレベル以上の機能を統括・制御できる強力なプラットフォームであり、事実上「オペレーティングシステムとして機能」する能力を備えています。このため、「Emacs で生活する」という考え方も根拠を持って成り立ちます。

本稿では、Emacs がどのようにしてクライアント側を構築し、すべての外部サービスを内部の関数として表現できるかを検証します。


クライアント・サーバーモデル

まず前提となる概念を確認します。

  • 基本定義

    • リソースを提供する側(サーバー/サービス)と、リソースを求める側(クライアント)間でタスクを分割する相互作用の模式図です。
    • クライアントはサーバーへリクエストを送り、サーバーから応答を受けます。
  • 通信の範囲

    • 取引はネットワーク越しに行われることもあれば、システム内での局地的処理でも可能です。
    • REST スタイルのソフトウェアアーキテクチャにおいて、このモデルが一般的です。

Emacs をクライアントとして捉える

Emacs は以下の 3 つの主要コンポーネント(懸念点)を完備しており、これらを組み込みライブラリまたはサードパーティ製パッケージで実装可能です。

1. UI(ユーザインタフェース)

必要な場合のみ起動され、ユーザーと対話するための層です。

  • ミニバッファ: 入力や出力の表示領域
  • バッファ: ファイルやプロセスの表示ウィンドウ
  • コンプリート (補完): タブレットキーで機能名などを補完する機能
  • 表付きリスト表示モード: 構造化データの可視化
  • 可変ピッチテーブル (vtable): メタ情報(バッファ、ファイル等)を管理
  • テンポラリー: トランジエント(一時)なデータ領域

2. クライアントエッジ

サービスとの通信を担うサブシステムです。

  • URL 操作:
    url-retrieve
    url-generic-parse-url
    など
  • ソケット (TCP/UDP): 直接のネットワーク通信
  • SMTP: メールクライアントとしての機能
  • シリアライゼーション: データの形式変換(JSON, XML など)

3. ローカルデータベース

サーバーと同期されるデータの表層表現です。実装要件により管理方法が異なります。

  • 集合体
  • アソシエーションリスト
  • プロパティリスト
  • ハッシュテーブル
  • SQLite: リレーショナルデータベースの利用

💡 設計の柔軟性

  • 実装要件は、Emacs クライアントの複雑さを決定します。
  • 「重い作業」を処理できる既存のコマンドラインユーティリティがあれば、それを事実上のサービスとして再定義し、シェルコール経由でアクセスできるように可能です。

Elisp: 統括言語としての役割

上記すべての機能は、**Emacs Lisp (Elisp)**という動的プログラミング言語を通じてアクセスされます。

  • 特徴: 実行時の高い自由度によるアドホックな動作が可能。
  • 達成すること: Emacs がアクセス可能なあらゆる振る舞い(Elisp 関数からシェルコマンドまで)の複雑な統括を実現。

実践例:
wttr.in
天気予報クライアントの構築

外部天気予報サービス

wttr.in
を利用し、Emacs 内だけで天気情報を表示するクライアントを作成します。

エキゾースチブ・アプローチ(純粋な API クライアント)

Web サービスから JSON を取得し、それをパースしてミニバッファに表示します。

ステップ 1: URL の構築

wttr--request-url
関数で、場所名をエンコードした URL を生成します。

(defun wttr--request-url (location)
  "Construct wttr.in URL with LOCATION."
  (let* ((base-url (url-generic-parse-url "https://wttr.in"))
         (encoded-location (string-replace " " "+" location))
         (query (format "/%s?0&format=j1" encoded-location)))
    (setf (url-filename base-url) query)
    (url-recreate-url base-url)))

ステップ 2: JSON の取得とパース

fetch-json-as-hash-table
がネットワークリクエストを行い、JSON をハッシュテーブルへ変換します。

  • unwind-protect
    : ダウンロードしたバッファを確実に削除しメモリリークを防ぐ。
  • url-http-end-of-headers
    : HTTP メタデータヘッダーをスキップ。
(defun fetch-json-as-hash-table (url)
  "Fetch URL with expected JSON response and return a `hash-table'."
  (let ((data-buffer (url-retrieve-synchronously url)))
    (if (not data-buffer)
        (error "Failed to fetch data from %s" url)
      (unwind-protect
          (with-current-buffer data-buffer
            (goto-char url-http-end-of-headers)
            (json-parse-buffer :object-type 'hash-table))
        (kill-buffer data-buffer))))))

ステップ 3: データの抽出と表示

wttr--report-message
が JSON から温度や天気状況を抜き出し、人間が読みやすいフォーマットに変換してミニバッファへ出力します。

(defun wttr--report-message (jsondb)
  "Generate weather report message from JSONDB."
  (let* ((nearest-area (wttr--get-first jsondb "nearest_area"))
         (area-name (map-elt (wttr--get-first nearest-area "areaName") "value"))
         (region (map-elt (wttr--get-first nearest-area "region") "value"))
         (country (map-elt (wttr--get-first nearest-area "country") "value"))
         (current-condition (wttr--get-first jsondb "current_condition"))
         (temp_c (map-elt current-condition "temp_C"))
         (temp_f (map-elt current-condition "temp_F"))
         (weather-desc (map-elt (wttr--get-first current-condition "weatherDesc") "value")))
    
    (let ((area-list (list area-name region country))
          (full-area-string (string-join (reverse area-list) ", ")))
      (format "%s: %s°C, %s°F %s"
              full-area-string temp_c temp_f weather-desc))))

ステップ 4: メインコマンドの統合

上記モジュールを組み合わせて、ユーザーが場所名を入力すれば結果を表示する

wttr
コマンドを作成します。

(defun wttr (location)
  "Show weather conditions for LOCATION from `https://wttr.in' in mini-buffer.
Result is also stored in `kill-ring'."
  (interactive "sWhere (default: local): ")
  
  (condition-case err
      (let* ((url (wttr--request-url location))
             (jsondb (fetch-json-as-hash-table url))
             (msg (wttr--report-message jsondb)))
        (kill-new msg)
        (message "%s" msg))
    (error (message "ERROR: %s" (cdr err))))))

📊 コードの軽量化 実装した

wttr.el
のソースコードは、cloc ユーティリティでの計測によれば、わずか 67 行です。 Emacs の API は高いレベルの抽象化を提供しており、短くして済むのが特徴です。


エンド・ツー・エンド・アプローチ(シェルコマンドを利用)

Emacs が動的言語であるため、重厚な外部処理を Python スクリプト (

weather
) に行い、Emacs側は結果のみを扱うという代替案も可能です。

この場合、Elisp コードは以下のように単純化されます。

(defun weather (location)
  "Call weather script with LOCATION and show result in minibuffer."
  (interactive "sWhere (default: local): ")
  
  (let* ((weather-cmd "weather")
         (cmd (if location 
                  (format "%s %s" weather-cmd location) 
                weather-cmd))
         (result (shell-command-to-string cmd)))
    (kill-new result)
    (message result)))
  • 役割の分離:
    weather
    スクリプトが事実上のサービスとなり、リクエストと処理を担当します。
  • 統合の容易さ:
    Elisp
    は動的プログラミング言語であるため、外部ツールとの統合をアドホックに行いやすいです。

結論

上記の実装から明らかになりましたように、Emacs 内であればすべてはサービスに見えるのです。

  1. 多様なライブラリで UI、通信、データ管理を実装可能。
  2. Elispの動的特性により、外部ツール(API やシェルコマンド)を簡単に取り込める。
  3. 「重たい作業」を外部にオフロードすることも、Emacs 内部で完結させることも自由自在。

この柔軟性が、「Emacs だけで生活する」というライフスタイルを支える基盤となっています。

同じ日のほかのニュース

一覧に戻る →

2026/07/11 7:30

エインシュタインの特殊相対性理論が重元素の化学結合に規則を与える、新しい研究で示された

## Japanese Translation: ブラウン大学のライ・シェン・ワン教授率いる研究チームは、光電子分光法を用いて、炭素とビスマス分子を絶対零度に近い温度まで冷却させ、高校化学における基本的な法則を覆しました。『Science』に発表されたこの研究では、相対性理論が、ビスマスなどの非常に重い元素における結合形成に多大なる影響を与えることを、初めて直接的な実験的事実として示しました。従来のモデルでは三重結合は 1 つのシグマ結合と 2 つのパイ結合から構成されると予測されますが、相対論的効果(具体的にはスピン軌道結合)によりこれらの軌道タイプが混在したり「ばらつき」を示したりします。分析の結果、明確なシグマ結合とパイ結合ではなく、1 つのパイ結合と 2 つのハイブリッド型シグマ・パイ結合を持つ独自の配置が確認されました。この発見は数十年にわたる相対論的効果に関する理論を裏付けたものですが、教育カリキュラムや基礎的な科学的モデルの大幅な更新を必要とします。また、ビスマスは非毒性太陽電池や量子計算に関連するため、これらの発見は新たな技術応用の扉を開く可能性があり、科学者が高度な化学や材料科学に取り組む方法に画期的な転換をもたらすものです。 ## Text to translate: Improved Summary: Brown University chemists, led by Professor Lai-Shens Wang, have overturned a fundamental rule of high school chemistry using photoelectron spectroscopy on carbon-bismuth molecules cooled to near absolute zero. Published in *Science*, their study provides the first direct experimental proof that Einstein's theory of relativity drastically changes bond formation in very heavy elements like bismuth. While traditional models predict triple bonds consist of one sigma and two pi bonds, relativistic effects (specifically spin-orbit coupling) cause these orbital types to mix or "smear" together. Instead of distinct sigma and pi bonds, the analysis revealed a unique configuration with one pi bond and two hybrid sigma-pi bonds. This discovery validates decades-old theories about relativistic effects but necessitates major updates to educational curricula and foundational scientific models. Additionally, because bismuth is relevant to non-toxic solar cells and quantum computing, these findings could unlock new technological applications, marking a pivotal shift in how scientists approach advanced chemistry and material science.

2026/07/11 5:47

Apple が高圧的に訴訟を起こし、旧従業員が商標秘密の漏洩を訴える

## 日本語翻訳: Apple は、米国カリフォルニア北区地方裁判所にOpenAI を告訴し、現在勤務中の従業員および元従業員を巻き込んだ調整された取り組みを通じて商標秘密を窃取したことを同社に非難している。原告は特に、元 Apple の副社長であるタン・タン氏と、シニアエンジニアのチャン・リュー氏を被告として特定しており、不適切な行為は 2024 年初頭およびそれぞれ 2026 年に Apple を離れる前から始まったと主張している。この問題は、ジョニー・アイブ氏のスタートアップである io を 65 億ドルで購入した OpenAI の買収が引き金となり、さらに 50 人以上の元 Apple 社員をその系列に加え、OpenAI に在籍する 400 人を超える現行従業員が以前 Apple との関連を持っていたことに起因して深刻化している。訴訟では、未公開技術に関する機密情報の盗難を経営層が日常業務として認めるという重大な不適切行為の詳細が含まれており、具体的な事例としては、セキュリティ上の脆弱性を活用してエンジニアリングファイル 1,000 ページ以上をダウンロードした事件、新しい従業員に対して「必要と知るだけ」の内部文書にセキュリティプロトコルを含む情報を配布した出来事、および採用面接中に現役 Apple 社員からハードウェア部品を購入するよう勧誘した行為などが挙げられる。また、OpenAI は信頼できるパートナーに対し独自開発されたメタルフィニッシング技術を誤って説明し、サプライヤーに対して内部用語を使用したことも非難されている。Apple はこれらの懸念を 2 月に提起したが、OpenAI から適切な調査がなされることはなかったと述べている。OpenAI が最初の消費者向けハードウェアデバイスの発売に向けて準備を進める中、この法的対立は遅延や損害をもたらす恐れがあり、才能ある労働者が競争相手の間で移動する際に高い情報漏洩リスクがあることへの懸念の中で、AI ハードウェア市場における商標秘密保護の重要な先例を設けるものとなる。 ## テキストを翻訳する: (必要に応じて;そうでない場合は元のテキストを繰り返す): ## サマリー: Apple は、米国カリフォルニア北区地方裁判所に OpenAI を訴え、現在および元従業員による調整された取り組みを通じて商標秘密を窃取したと非難している。原告は特に、元 Apple の副社長であるタン・タン氏とシニアエンジニアのチャン・リュー氏を被告として特定しており、不適切な行為は 2024 年初頭およびそれぞれ 2026 年に Apple を離れる前から始まったと主張している。この問題は、ジョニー・アイブ氏のスタートアップである io を 65 億ドルで購入した OpenAI の買収が引き金となり、さらに 50 人以上の元 Apple 社員をその系列に加え、OpenAI に在籍する 400 人を超える現行従業員が以前 Apple との関連を持っていたことに起因して深刻化している。訴訟では、未公開技術に関する機密情報の盗難を経営層が日常業務として認めるという重大な不適切行為の詳細が含まれており、具体的な事例としては、セキュリティ上の脆弱性を活用してエンジニアリングファイル 1,000 ページ以上をダウンロードした事件、新しい従業員に対して「必要と知るだけ」の内部文書にセキュリティプロトコルを含む情報を配布した出来事、および採用面接中に現役 Apple 社員からハードウェア部品を購入するよう勧誘した行為などが挙げられる。また、OpenAI は信頼できるパートナーに対し独自開発されたメタルフィニッシング技術を誤って説明し、サプライヤーに対して内部用語を使用したことも非難されている。Apple はこれらの懸念を 2 月に提起したが、OpenAI から適切な調査がなされることはなかったと述べている。OpenAI が最初の消費者向けハードウェアデバイスの発売に向けて準備を進める中、この法的対立は遅延や損害をもたらす恐れがあり、才能ある労働者が競争相手の間で移動する際に高い情報漏洩リスクがあることへの懸念の中で、AI ハードウェア市場における商標秘密保護の重要な先例を設けるものとなる。

2026/07/11 0:59

QuadRF は壁を通してドローンを検知しWiFiも探知可能

## Japanese Translation: QuadRF は、Raspberry Pi 5 と FPGA を中心に構築された高度なフェーズドアレイ無線機であり、ピコ秒単位のタイミングによるリアルタイム信号処理およびビームフォーミングを実現しています。これは、壁を穿つ WiFi ペネトレーションや飛行中のドローン追尾といったアプリケーションを可能にします。動作周波数は 4.9 GHz から 6 GHz の範囲で、RP1 チップの MIPI レーンを通じてデコードされた RF データを 5 Gbps を超える速度でストリーミングし(低遅延 I/Q ストリーミングをサポート)、PCIe コネクタを開放することでストレージまたはネットワーク用途のために Daisy-chain 接続可能です。ユーザーは Pi ホスト WiFiホットスポット経由で http://quadrf/ にアクセスし、VNC ベースの操作方法を使用します;GNU Radio やカスタム AR ビジュアライザーが利用可能です。AR ビジュアライザーは周波数をカラフルな「blobs」としてマップ化し、チャンネルを同定します(例:5.5 GHz チャネル 100)。現在のインターフェースには自動利得制御(AGC)がないほか、テスト中の挙動はある程度不慣れに感じられますが、飛行中の DJI Mini Pro 4 ドローンを成功して追尾しました。開発者は Martin McCormick氏で、以前は SpaceX の Dishy チーム所属でした。このプロジェクトは、政府にのみ以前アクセス可能だった RF 能力を実証することでセキュリティ上のギャップを露呈することを目的としています。ハードウェアは Crowd Supply で 499 ドルという基本キットとして予約販売されています。ケーシングは当初 3D プリント製でしたが、後に射出成形への移行が予定されており、将来的にはモジュールをチェーンして高送出力(最大 1.15 MW EIRP)に到達できるようになる可能性があります。