今週のアップデートをまとめます。 今週は本業の方が少し忙しくなってきたため、大きな機能追加はありませんが、日々の開発体験(DX)を損なっていた箇所の修正や、パフォーマンス改善を中心に行いました。
主な変更点
- 【UNX】Symbols Viewのパフォーマンス改善 (親クラス表示の仕様変更)
UNXのSymbols View(アウトライン表示)において、親クラスの継承ツリーを毎回取得・表示する処理がボトルネックとなり、表示が重くなるケースがありました。 そのため、デフォルトでは 「親クラス情報の表示をOFF(現在のファイルのシンボルのみ表示)」 に変更しました。
トグル機能: 親クラスの継承階層を確認したい場合は、Symbols View上で p キーを押すことで表示/非表示を切り替えられます。
設定: このキーマップはコンフィグで変更可能です。
- 【UNX】お気に入り機能の強化
開発中、「今まさに編集しているこのファイルをお気に入りに入れたい」という場面が多々ありました。これまではPickerから探す必要がありましたが、以下のコマンドで即座に追加・削除ができるようになりました。
コマンド: :UNX favorite_current (または :UDEV favorite_current)
また、add_favorites 実行時にExplorer等のUIにお気に入りの追加が即座に反映されないバグも併せて修正しています。
- 【UCM】Symbolsジャンプの不具合修正
UCM (Unreal Class Manager) のSymbols機能において、選択したシンボルへ正しくジャンプできない不具合を修正しました。
今後の最適化方針:SQLiteへの移行
ずっと気になっていたパフォーマンスの最適化について、ようやく方針を固めました。 現在はJSONベースで行っているファイルパスやクラス定義情報の管理を、SQLite に移行する方向で進めています。
Unreal Engineのような巨大なプロジェクトでは、テキストベースのパースや検索に限界があります。ファイル情報やクラス構造をDB化し、そこへクエリを投げる形にすることで、以下のようなコマンドの速度が劇的に向上すると見込んでいます。
UEP files (ファイル検索)
UEP enums / UEP structs (シンボル検索)
UEP tree (階層表示)
今週は、その基盤となるDB接続機能を共通ライブラリである UNL.nvim に実装し、最初の一歩を踏み出しました。 来週以降、この基盤を使ってUEPのキャッシュ周りのリファクタリングを進めていく予定です。