0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NeovimでのUnreal Engine開発がさらに快適に!UEP.nvimほか、今週のアップデートまとめ

Last updated at Posted at 2025-10-17

今週も、日々の開発で「これが欲しかった!」と感じた機能を追加・改善しましたので、ご紹介します!


✨ 新機能

継承ツリーを瞬時に把握!:UEP find_derived & :UEP find_parents

Unreal Engineでの開発は、クラスの継承関係を理解することが非常に重要です。今回のアップデートで、その調査がNeovim上で劇的に簡単になりました。

:UEP find_derived[!] [ClassName]

カーソル下のクラス名(または引数で指定したクラス)から、それを継承している全ての子クラスを一覧表示します。

virtual関数をオーバーライドした際に「影響範囲はどこまで?」といった確認や、リファクタリングの調査が非常にスムーズになります。

!付き(:UEP find_derived!)で実行すると、最初にベースクラスを選択するピッカーが表示されるので、コード上にないクラスの継承関係もすぐに調べられます。

find_der.gif

:UEP find_parents[!] [ClassName]

find_derivedとは逆に、カーソル下のクラスの親クラスをUObjectまで遡って一覧表示します。

「このクラスの親のvirtualメソッドは何だっけ?」と思った時や、クラスの継承ツリー全体を俯瞰したい時に非常に便利です。こちらも!付きで起点となるクラスをピッカーから選択できます。

find_parent.gif


Riderの自動インポートのように!:UEP add_include

クラス名はわかっているのに、どのヘッダーファイルをインクルードすればいいか思い出せない...そんな経験はありませんか?このコマンドがその手間を解消します。

カーソル下のクラス名を元に、必要な#includeディレクティブを適切な位置に自動で挿入します。

  • ヘッダーファイル(.h): .generated.hのすぐ上に挿入
  • ソースファイル(.cpp): 既存の最後の#include文の後に挿入

!付き(:UEP add_include!)で実行すれば、インクルードしたいクラスをピッカーから検索して追加することも可能です。もうヘッダーファイルのパスを探して手入力する必要はありません!

add_include.gif


gfをUnreal Engine用に超強化!:UEP open_file

カーソル下にある#include先のファイルを開く、Vimの標準機能gf。とても便利ですが、Unreal Engineの複雑なパス構造ではうまく機能しないことが多々ありました。

:UEP open_fileは、UEP.nvimがキャッシュしているプロジェクト全体の知識を使って、インクルードされているファイルをインテリジェントに検索して開きます。

以下のようにキーマップを設定すれば、標準のgfを置き換えて、この強力なファイルオープン機能を手軽に利用できます。

-- init.lua や keymaps.lua などに記述
vim.keymap.set('n', 'gf', require('UEP.api').open_file, { noremap = true, silent = true, desc = "UEP: Open include file" })

🎨 UIとパフォーマンスの改善

  • :UEP tree表示の改善

    1. プロジェクトツリー表示時に、各プラグインがGameフォルダやEngineフォルダの下に正しく配置されるようになり、Riderのような階層表示に近づきました。
    2. これまで表示されていなかったSource/Programs以下のファイルもツリーに含まれるようになりました。
  • :UEP filesの高速化
    ファイル一覧表示を、内部キャッシュをフル活用する方式に見直しました。初回表示時に一瞬だけキャッシュを読み込みますが、2回目以降はほぼノータイムでファイルピッカーが開きます。

    ⚠️ ファイルを追加・削除した際は、キャッシュを更新するために:UEP files!を実行してください。

  • UCM newでのプレビュー機能
    :UCM newで親クラスを選択する際、各クラスのヘッダーファイルの中身をプレビューできるようになりました。これにより、どんなクラスなのかを確認しながら安全に継承できます。

  • Pickerがsnacks.nvimに対応 (UNL.nvim)
    UIピッカーのバックエンドとして、snacks.nvimに対応しました。Telescopeやfzf-luaをインストールしていない環境でも、モダンなUIで操作できます。


🔧 設定と挙動の改善

  • engine_pathの直接指定に対応
    UEP.nvimUSH.nvimopts、またはプロジェクトルートの.unlrc.jsonファイルにengine_pathを直接記述できるようになりました。
    これにより、レジストリなどからエンジンの場所を自動検出できない環境でも、プラグインが動作するようになります。(もしかしたら、これでMac OSでも動くようになるかも...?しれません!)

  • :UEP cleanup & :UEP purgeの挙動を明確化

    • :UEP cleanup: 現在のプロジェクトに関連する全てのキャッシュファイル(構造、ファイル情報など)をディスクから完全に削除します。
    • :UEP purge: 特定のコンポーネント(Game, Engine, Plugin単体など)のファイルキャッシュのみを削除します。
      キャッシュがおかしくなった際のメンテナンス性が向上しました。
  • :UEP refreshの解析精度向上
    プロジェクト構造を解析する内部ロジックを改善し、より正確にモジュールや依存関係を把握できるようになりました。


🐛 バグフィックス

  • :UEP cd / :UEP delete
    TelescopeをUIとして使用している際に、プレビューウィンドウでエラーが発生する問題を修正しました。

💬 おわりに

以上が今週の主なアップデート内容です。

使えば使うほど「あれも欲しい、これも直したい」という点が出てきますが、個人的にはLSPの補完が少し遅いと感じる時以外は、ほとんどNeovim上で快適に開発が完結するようになってきました。

ただ、ふと心の中に「これだけプラグインが増えると、最初に全部インストールするのが少し面倒に感じる人もいるのでは?」という気持ちが芽生え始めています。

もしかしたら、これら全ての機能を一つに統合した、巨大なUnrealDev.nvimのようなプラグインを作った方が、コミュニティにとっては親切なのかもしれない...と考えたりもしています。

このプラグイン統合の件について、何かご意見(「分かれている方がいい!」「一つにまとめて欲しい!」など)があれば、ぜひこの記事にコメントいただけると嬉しいです。

もちろん、GitHubのスター🌟も開発の大きな励みになりますので、よろしくお願いします!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?