「もうSublime Textは作られない」なら、自分で作ればいい——Canvas、contenteditable、textareaを試した末の結論

Fine, I'll build my own text editor

「もうSublime Textは作られない」なら、自分で作ればいい——Canvas、contenteditable、textareaを試した末の結論

VS Codeの基盤であるMonaco Editorを「<div>のスープ地獄」と批判する筆者が、自前のテキストエディタ開発に挑戦。Canvasレンダリング、contenteditable属性、textareaの3つの手法を比較し、それぞれの性能とアクセシビリティのトレードオフを検証します。最終的にはtextareaが最も実用的と結論づけ、構文ハイライトの実装やTree-sitterによる最適化の可能性にも言及。ユーモアを交えつつ、Web技術の限界と可能性を探る実験記録です。

「ソフトウェアは最近ゴミばかりだ。それで考えたんだ——俺はゴミを作るのが得意だって。ならば、自分でテキストエディタを作ればいいじゃないか?」
  1. tzs

    1980年から81年頃、私は学部生としてカリフォルニア工科大学の高エネルギー物理学部門でシステムプログラマー兼管理者のアルバイトをしていました。

    ロブ・パイクは私の前に、高エネルギー物理学の大学院生としてシステムプログラマー兼管理者を務めていましたが、ベル研究所に移るために去っていきました。

    ある日、もう一人の学生カール・ホイヤーと私は、当時のスクリーンエディタに文句を言い、自分たちならもっと良いものが書けると言う、プログラマーにありがちな暇つぶしをしていました。

    それがいつの間にか競争に発展し、私たちは二人とも徹夜で競い合いながらエディタを書きました。タイピングの音以外はほとんど静かで、たまに機能が動くようになったと発表して、相手を動揺させようとするくらいでした。

    朝になって、もう一人の学生システムプログラマー兼管理者ノーマン・ウィルソンが来て、カールと私が何をしていたのかを見ました。

    ノーマンはこれをロブ・パイクにメールで伝えました。彼の返答はだいたいこんな感じでした。

    > 誰でもスクリーンエディタは書くものだ。簡単にできるし、自分が重要だと思えるからね。彼らには役に立つものを作るように言ってくれ。

    それからほんの数年後、ロブ・パイクはスクリーンエディタを書きました。彼は自分が重要だと思えたのでしょうか? :-)

  2. akersten

    ええ、まさか、このユースケースのために特別に設計され、30年間ブラウザに組み込まれている<textarea>要素が、編集可能なテキストを実装する最も高性能で動作が一貫した方法だとは、誰が予想したでしょうか。

    著者がそこで不要な複雑さを取り除くのをやめたのは少し残念です...まだ本当にテキストエディタを構築しているわけではなく、派手な入力欄を持つウェブサイトを構築しているのです。本格的なテキストエディタを構築したいなら、ウェブブラウザという肥大化も避けるべきです。

  3. pmkary

    テキストエディタは機械式時計や万年筆のようなものです。それらを作る機構には本当に美しさがあります。私にとって、これほど作られるのを見ていて満足できるモジュールは他にほとんどありません。新しいもの(このような良いもの)を見つけるたびに、すべてがロープに掛けられていて、レンダリングやIビーム配置の計算などがあり...クリスマスプレゼントをもらった気分です。

  4. dang

    最近の関連投稿:

    彼らはもうSublime Textのようなものを作らない - https://news.ycombinator.com/item?id=49209354 - 2026年8月(コメント13件)

  5. nottorp

    本当にそこにFPSカウンターがありますね。

    実験は本当にループで連続レンダリングしているのでしょうか?

  6. stillpointlab

    私はちょうどFableにテキストエディタを書いてもらったところです。正直に言うと、KDEのKTextEditorライブラリをラップしてもらいましたが、それはテキストエディタの約90%にあたります。

    私はこれまでKateを使っていましたが、LLMがFedoraでSublime Textに最も近いものとして提案したものでした。しかし、素晴らしいKateでさえ、やりすぎな部分が多すぎました。

    そこでFableに、テキストエディタ部分(KTextEditor)を取り出して、RustとLSPサーバーでラップするよう依頼しました。約2日かかりましたが、小さくて超高速なエディタができました。タブなどの管理にはSwayを使い、fuzzelはファジーファイル検索の代わりに、brootはエクスプローラービューの代わりに使っています。すでにMarkdownプレビューサポートも追加しました。基本的なgit統合もそのうちやるかもしれません。

    そして、その小さなエディタを、Mod-mキーバインドにバインドしたメモ取りインターフェースに変えてもらい、~/Notesにメモを取っています。

    私たちはすごい時代に生きています。皆さんもできるうちに活用してほしいです。

  7. Jean-Philipe

    本題から外れますが、このウェブサイトのデザインがとても気に入りました。新鮮で楽しいけれど、読みやすいです。AIポリシーのページも素敵です。

  8. zahlman

    偶然ですが、最近私もテキストエディタを作り始めました。(Tkinterを使っていて、キーコマンドやモードなどを備えたVim風の編集システムを実装していますが、実際のVimとはかなり異なります。)

この日のほかの記事

2026-09-02