【ITニュース解説】Built a note-taking app with Rust + React because I was tired of Electron bloat
2025年10月02日に「Reddit /r/programming」が公開したITニュース「Built a note-taking app with Rust + React because I was tired of Electron bloat」について初心者にもわかりやすく解説しています。
ITニュース概要
既存ノートアプリの不満から、RustとReactで高速軽量なノートアプリ「Lokus」を開発。Electronアプリに比べバンドルサイズ10分の1、1秒未満で起動し、1万件のノート検索も50msで完了する。Wikiリンクやグラフ可視化など豊富な機能を備え、オープンソースで公開中。
ITニュース解説
ニュース記事は、ある開発者が既存のノートアプリの課題に直面し、それらを解決するために「Lokus」という新しいローカルファーストのノートアプリをRustとReactを使って開発した経緯と、その技術的な詳細を紹介している。この開発者の主な不満点は、多くのアプリが重くて動作が遅いこと、必要な機能を得るためにたくさんの追加プラグインが必要なこと、そしてサブスクリプション(月額課金)を要求することだった。特に「Electron」という技術で作られたアプリが抱える「重さ(ブロート)」の問題に嫌気がさし、より高速で軽量なアプリを目指した点がプロジェクトの出発点である。
Electronは、ウェブ技術(HTML、CSS、JavaScript)を使ってデスクトップアプリを開発できる便利なツールだが、多くの場合、Google Chromeのようなウェブブラウザのエンジンをアプリ内に含んでいるため、アプリのファイルサイズが大きく、起動が遅く、メモリ使用量も多くなる傾向がある。Lokusの開発者は、この問題に対し、まったく異なる技術スタックを採用することで解決を試みた。
Lokusで採用された技術スタックは、フロントエンド(ユーザーインターフェースの部分)に「React 19」と「TipTap (ProseMirror)」、バックエンド(アプリの内部処理やデータ管理の部分)に「Rust」と「Tauri 2.0」を組み合わせたものだ。Reactは、ウェブアプリケーションのUIを構築するための非常に人気のあるJavaScriptライブラリで、対話的なユーザー体験を実現するのに優れている。TipTap (ProseMirror)は、高度なリッチテキストエディタをウェブ上で実現するためのツールで、Notionのような複雑な入力・表示機能を提供するのに役立つ。
そして、このプロジェクトの最も特徴的な点は、Electronの代わりにRustとTauriが使われていることにある。Rustは、高いパフォーマンスとメモリ安全性を持つプログラミング言語で、システムプログラミングや、今回のようなデスクトップアプリのバックエンド処理に適している。Tauriは、ウェブ技術を使ってデスクトップアプリを構築できるフレームワークだが、Electronとは異なり、OSが提供するウェブビュー(ウェブコンテンツを表示する機能)を利用するため、アプリ自体にChromeエンジンをバンドルする必要がない。このアプローチにより、Lokusのアプリのファイルサイズは約10MBと非常に小さく抑えられている。これは一般的なElectronアプリが100MB以上になるのと比較すると大幅な軽量化だ。結果として、Lokusは1秒未満で起動し、数万件(10k)のノートの中から全文検索をわずか約50ミリ秒で行えるという、非常に優れたパフォーマンスを実現している。
Lokusの主な機能も多岐にわたる。例えば、「Wikiスタイルのリンクとバックリンク」は、ノート同士を簡単に連結させ、関連する情報を見つけやすくする機能だ。Notionのように複雑な情報を整理できる「データベースビュー」や、自由な発想を整理できる「キャンバス/ホワイトボードモード」も搭載されている。「2D/3Dグラフ可視化」は、ノート間の関係性を視覚的に表現する機能で、これは「WebGL」というウェブブラウザ上で高速なグラフィックを描画するための技術を使って実現されている。
開発者が特に苦労した点として、このグラフ描画機能が挙げられている。当初「D3-force」というライブラリを使っていたが、1000以上のノート(グラフの点やノードと呼ばれる)をスムーズに動かす(60fps、つまり1秒間に60回描画する)ことが難しかった。そこで「Sigma.js」という別のグラフ描画ライブラリに切り替え、さらに「Web Workers」というウェブブラウザが重い処理をバックグラウンドで実行するための技術を併用することで、高いパフォーマンスを実現したという。Web Workersを使うことで、グラフの複雑な計算処理がユーザーインターフェースの応答性を妨げないように工夫されている。
Lokusは、Visual Studio Codeのような「プラグインシステム」も備えており、ユーザーが機能を拡張できる柔軟性を持っている。また、「MCPサーバー」というAI(人工知能)との連携を可能にする機能も計画されているようだ。そして、すべてのノートデータは「Markdownファイル」というシンプルなテキスト形式でローカル(自分のPC内)に保存される。これにより、ユーザーは自分のデータがクラウドサービスに依存せず、常に手元にあるという安心感を得られる「ローカルファースト」な設計が実現されている。
このLokusの開発は、オープンソースプロジェクトとしてGitHubで公開されており、世界中の開発者からのフィードバックや協力が募られている。特に、アプリの基本的な設計思想や技術的な選択(アーキテクチャ)に関する意見を求めていることから、開発者はこのプロジェクトをさらに改善し、技術コミュニティに貢献しようとする意欲が伺える。この事例は、既存のツールに対する不満から新しい解決策を生み出し、最新の技術を駆使して高いパフォーマンスを実現できることを示す、システムエンジニアを目指す初心者にとっても非常に示唆に富むものと言えるだろう。