はじめに
こんにちは。unrealdev.nvim 開発者の taku25 です。
今回は「今週のアップデート」と言いつつ、二週間じっくり時間をかけて取り組んだ、本プロジェクト始まって以来の最大規模のアーキテクチャ刷新についてお届けします。
これまでキャッシュフォーマットの変更など、何度か破壊的なアップデートを行ってきましたが、今回は「心臓部」そのものを入れ替えました。ユーザーの皆様にはご不便をおかけしますが、この変更により基盤が固まったため、今後はこれほど大きな変更は発生しない予定です。
- Rust 製サーバー「unl-server」への全面移行
今回の最大のトピックは、これまで Lua 側で行っていた データベース(SQLite)の作成や tree-sitter による C++ 解析処理を、すべて Rust 製の外部サーバー unl-server に委譲した ことです。
これまでは UEP.nvim が個別に DB を管理していましたが、これからは unl.nvim が窓口となり、MessagePack-RPC を介してバイナリ形式で Rust サーバーからデータを直接取得します。
単なるユーティリティ集だった unl.nvim が、名実ともに unrealdev.nvim エコシステムの**「心臓部(Core)」**へと進化しました。 - コマンド体系の変更と自動起動の導入
アーキテクチャの変更に伴い、サーバー管理の権限が UEP から UNL へ移動しました。
- コマンドの移動:
- UEP refresh/start/stop → 廃止
- UNL refresh/start/stop → 新設
また、利便性を高めるために「サーバーの自動起動」を実装しました。
設定(auto_server_start:デフォルト true)により、.uproject が存在するディレクトリで Neovim を起動したり、cd で移動したりした際に、裏側で自動的にサーバーが立ち上がります。
- ファイルシステムのリアルタイム監視
新しいサーバーは、単にデータを取得するだけではありません。プロジェクトファイルを常に監視しており、ソースコードの変更を検知して自動的にデータベースを最新の状態に保ちます。
これにより、ユーザーは「今、DB は最新かな?」と意識することなく、常に最新のシンボル情報にアクセスできるようになりました。
今後の展望
主要なコマンドのデバッグは完了していますが、まだ細かいバグや、一部速度が以前より低下している箇所も認識しています。
今週からは以下の 2 点に注力して開発を進めていく予定です:
- 動作の安定化とパフォーマンスチューニング
- LSP に頼らない、独自 DB を活用した爆速補完機能の実装
さらなる進化を遂げる unrealdev.nvim を、引き続きよろしくお願いいたします!