**イーゼル、1歳になる**

Clojureで自分専用IDEを構築してきた一年。

2025/12/27 23:46

**イーゼル、1歳になる** Clojureで自分専用IDEを構築してきた一年。

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

要約

Japanese Translation:

Easel は、JVM 上で動作する Clojure で書かれたモジュラー IDE であり、エディタ全体をライブラリとして扱います。この設計により、ツールは共通のデータモデルを共有しつつ、独立してまたは一緒に実行できるため、開発者は日常的な機能を再実装する必要がありません。IDE は JVM の強み(ガベージコレクション、多重スレッド化、豊富なライブラリエコシステム)と Clojure の特徴(不変データ、対話型 REPL、長期安定性)を活用して、テキスト編集(clobber)、端末エミュレーション、Chromium Embedded Framework を介したウェブ閲覧、2D/3D グラフィックス描画、およびデータ検査といったコア機能を構築します。

Easel は Clojure REPL を通じたランタイム拡張をサポートし、開発者が内部状態に直接アクセスして可視化・要約・変換を行えるようにしています。JVM 上での UI 開発は難しいため、Easel は独自の Membrane UI ライブラリを提供し、どこでも動作し、インターフェースを軽量に保ちます。

過去一年間で主要なツールが追加または改善されました:Membrane UI、ローカル LLM 推論用 llama.clj、端末エミュレータ、Chromium ブラウザ、大規模コレクションビューアの Viscous、公開 Clojure ライブラリインデックスの Dewey、およびロープ実装の Bifurcan。プロジェクトは約 80 % 完成しており、残りの作業は洗練化、ドキュメント整備、バグ修正に集中しています。近期的な計画には、より明確なエラーメッセージ、プログラム理解用 FlowStorm の統合、および拡張可能なプラグイン/エクステンションシステムの設計が含まれます。

Easel の目標は、ソフトウェア開発、ゲーム制作、芸術、プロダクティビティアプリケーションにおける重複作業を削減し、共有で信頼できる基盤を提供することでコミュニティ貢献を促進することです。これは Emacs の長期的かつユーザー主導のオープンソフトウェアモデルを反映しています。プロジェクトは Slack (#easel)、GitHub(スター、スポンサー)および YouTube 上の公開デモ動画で参加を歓迎します。

本文

Easelとは何か?
Easelは、過去1年間にわたり私が開発してきたClojureで書かれたIDEです。
実際の動作はこちらをご覧ください: https://youtu.be/sceGtaNHxcM

Easel自体は比較的シンプルな設計をしています。ツールを定義するモデルと、同じウィンドウ内でそれらのツールを配置するための簡易UIを提供します。IDEに期待される機能の大部分は、データを相互共有できるモジュラー型ツールによって実装され、これらのツールはEasel外でも独立して利用可能です。「ライブラリとしてのIDE」と考えてください。

現在のツール例:

  • テキスト編集
  • ターミナルエミュレーション
  • データ検査
  • ウェブ閲覧
  • (その他多数)

なぜEaselなのか?

10年後に夢見るIDEを想像してください。私にとってそれは以下の要素を備えていることです。

  • Clojureによる実行時拡張性
  • REPL駆動開発への強力なサポート
  • データへ直接アクセスし、可視化・集約・検索・変換・対話が可能な豊富なツール群
  • 2D/3Dグラフィックスとテキストオリエンテーションの併用
  • 実験プラットフォーム
  • データをシームレスに共有する場所型ツール
  • IDEであると同時にライブラリとしても機能
  • ユーザー志向の設計
  • オープンソース、完全なハードウェアアクセス

難題

これらの特徴は画期的ではありません。既存IDEにも存在しますが、すべてを一括で提供する統合解決策が欠けています。そのために選んだのは:

  • JVM上のClojure – JVMはエコシステム・GC・スレッド管理・性能・ツールリングなど多くの難問を解決します。
  • Clojure自体 – 不変データ、長期安定性、REPL開発、柔軟なデータ指向構造。

トレードオフとして、SwingやJavaFXといったJVM UIライブラリは扱いにくく古臭い印象があります。UIライブラリを再実装する方が他の難問よりも容易です。


社会的障壁

データ共有ツールを構築するには信頼が不可欠です。多くのユーザーはアプリ間で情報交換をためらいます。Emacsは数十年にわたりこの信頼を築いてきたため人気があります。Easelは同様の自由度を提供しつつ、より豊かなグラフィックスとClojure統合を可能にします。


なぜEaselが成功できるか

  • 私自身が1年間Easelを主要IDEとして使用しており、コア機能の80%は実装済みです。
  • 残りは主に仕上げ・ドキュメント・ガイド・バグ修正であり、大きな障害はありません。
  • clobber
    (テキストエディタ)など、他では実装が難しいユニーク機能が開発のモチベーションを高めています。

現状

多くのIDEタスクにEmacsを埋め込みターミナルとして利用してきました。主な作業は**

clobber
**、Clojureフレンドリーなテキストエディタの実装です。現在は主要エディタとして使用しています(特定機能にはまだEmacsを併用)。

clobber
の特徴

  • Tree‑Sitterによる構文ハイライト
  • Pareditサポート
  • キーバインド設定可能
  • インライン評価
  • Clojure Style Guide に準拠したインデント、インデント設定ファイルで調整可
  • 完全Unicode対応
  • Undo/Redo
  • オートコンプリート

Easelのその他注目ツール

ツール説明
Membraneどこでも動作するシンプルUIライブラリ
membrandtMembrane用Ant DesignベースのUIコンポーネント(開発中)
llama.cljLLMをローカルで実行
Terminal Emulator埋め込みターミナル
Embedded BrowserChromium Embedded Framework
Viscous非常に大きなコレクションの汎用データビューア
DeweyGitHub上のClojureライブラリを公開データセットとしてインデックス化
BifurcanZach Tellman の bifurcan をロープ改善したフォーク

短いデモは https://youtu.be/sceGtaNHxcM でご覧いただけます。


ロードマップ

過去1年間は標準IDE機能の再実装に注力しました。次のフェーズでは独自機能を中心に進めます。

  1. エラーメッセージ改善 – より明確な診断ツールの強化
  2. FlowStorm統合 – FlowStorm を利用したプログラム理解とデバッグ
  3. 拡張・カスタマイズ – エンドユーザー向けに柔軟な拡張手法を設計(アイデア歓迎)

参加方法

コードは公開されていますが、まだ開発中です。協力したい方は:

この投稿を共有: https://blog.phronemophobic.com/easel-one-year.html
Blueskyでフォロー: https://bsky.app/profile/phronemophobic.bsky.social

同じ日のほかのニュース

一覧に戻る →

2026/01/01 19:53

**Rust ― 借用チェッカーなしで書く Rust**

## Japanese Translation: ```markdown ## Summary `rustmm` は借用チェッカーをオフにした改造済み Rust コンパイラで、通常は Rust の安全規則に違反するコードでもコンパイル・実行できるようにします。プロジェクトは **macOS (Apple Silicon)** と **Linux (x86_64)** 用の事前ビルドバイナリを提供しており、インストールは次のコマンドで行えます: ```bash curl -sSL https://raw.githubusercontent.com/buyukakyuz/rustmm/main/install.sh | bash ``` インストール後は `~/.rustmm/bin/rustc your_code.rs` というラッパーを通じてコードがコンパイルされます。ソースからビルドしたい場合は `BUILDING.md` の手順に従ってください。 ### Key examples 1. **String をムーブする** – 通常は E0382 が発生しますが、rustmm はムーブを許可し、その後元の値を印刷できます。 2. **二つの可変参照** – 通常は E0499 が発生しますが、rustmm は両方を受け入れ最終値を印刷します。 3. **可変借用中に変数を使用する** – 通常は E0502 が発生しますが、rustmm はコンパイルと実行を正しく行います。 4. **ループ内で文字列を二度印刷する** – 通常は「cannot move out of loop」が禁止されますが、rustmm では許可されます。 5. **同時に可変借用と不変借用** – 通常は E0502 が発生しますが、rustmm は両方をコンパイルし、両方の値を印刷します。 `examples/` ディレクトリには、公式コンパイラで失敗する自己参照構造体や二重リンクリストなどの追加テストも含まれていますが、rustmm では成功します。 ### Licensing プロジェクトは **Apache 2.0** と **MIT** のデュアルライセンスです。詳細は `LICENSE-APACHE`、`LICENSE-MIT` および `COPYRIGHT` をご覧ください。 ``` ## Text to translate (incorporating all missing details):** --- ## Summary `rustmm` is a modified Rust compiler that turns off the borrow checker, allowing code that would normally violate Rust’s safety rules to compile and run. The project ships pre‑built binaries for **macOS (Apple Silicon)** and **Linux (x86_64)**; installation can be done with: ```bash curl -sSL https://raw.githubusercontent.com/buyukakyuz/rustmm/main/install.sh | bash ``` After installation, code is compiled via the wrapper `~/.rustmm/bin/rustc your_code.rs`. Source builds are supported by following the instructions in `BUILDING.md`. ### Key examples 1. **Moving a `String`** – normally triggers E0382; rustmm allows moving and then printing the original value. 2. **Two mutable references** – normally E0499; rustmm accepts both and prints the final value. 3. **Using a variable while it has an active mutable borrow** – normally E0502; rustmm compiles and runs correctly. 4. **Printing a string twice inside a loop** – normally disallowed “cannot move out of loop”; rustmm permits it. 5. **Simultaneous mutable and immutable borrows** – normally E0502; rustmm compiles and prints both values. The `examples/` directory contains additional tests (e.g., self‑referential structs, doubly linked lists) that fail under the official compiler but succeed with rustmm. ### Licensing The project is dual‑licensed under **Apache 2.0** and **MIT**; see `LICENSE-APACHE`, `LICENSE-MIT`, and `COPYRIGHT` for details. --- This revised summary now reflects every major point from the key points list, avoids any inference beyond the source material, and presents a clear, reader‑friendly overview.

2026/01/01 8:54

**2025年:LLM(大型言語モデル)の一年**

2026/01/01 20:17

Bluetoothヘッドフォン・ジャッキング:あなたのスマホへの鍵【動画】

## Japanese Translation: Airoha の Bluetooth オーディオチップには、CVE‑2025‑20700 – 20702 という三つの重大な欠陥があり、悪意ある周辺機器がチップとペアリングされたスマートフォンを完全に乗っ取ることが可能です。カスタム RACE プロトコルを使用して、攻撃者はフラッシュメモリや RAM を読み書きでき、ファームウェアの置換やその他の悪意ある操作を実行できます。この脆弱性は現在世代のヘッドホンで実証され、多くの人気イヤホン(Sony WH‑1000XM5/XM6、Marshall Major V/Minor IV、Beyerdynamic AMIRON 300、Jabra Elite 8 Active)や Airoha の SoC、リファレンスデザイン、SDK を使用する任意のデバイスに影響します。 講演では欠陥の仕組みを解説し、ライブデモを行い、情報開示の課題(メーカーがリスクを速やかに伝えなかったり、アップデートを配信しないケース)を指摘しています。脅威を軽減するため、スピーカーはユーザーが自分のデバイスが脆弱であるかどうか確認できるツールと、Airoha ベース製品を研究する研究者を支援するツールを公開予定です。 パッチを適用しなければ、対象イヤホンを利用して電話を乗っ取ったり、マルウェアをインストールしたり、データを外部に流出させたりできる恐れがあります。企業は修正コストの増大、法的責任の懸念、およびブランド信頼への損傷に直面する可能性があります。この事件は、サプライチェーンセキュリティの強化と業界全体での情報開示慣行の改善が必要であることを浮き彫りにしています。