ImGuiとは?Dear ImGui解説(2026年)

ImGui (Dear ImGui) は、C++ 用のイミディエイトモード GUI ライブラリです。ウィジェットツリーを保持せず、毎フレームメニューを描画するため、ゲームツールやネイティブクライアントでよく利用されます.

Librariesby trqUpdated June 4, 2026
Key takeaways
  • ImGui (Dear ImGui) は、C++ 用の小型のイミディエイトモード GUI ライブラリです。
  • ウィジェットツリーを維持することなく、関数呼び出しに基づいて毎フレームメニューを再描画します。
  • ネイティブクライアントやツールは、3D シーン上に低遅延オーバーレイを表示するためにこれを使用します。
  • これは C++ のパターンであり、Java Fabric mod はゲーム独自の GUI フックを使用します.

ImGui、Dear ImGuiの略で、C++のための小型のイミディエイトモードGUIライブラリです。ウィジェットオブジェクトのツリーを保持する代わりに、毎フレーム、単純な関数呼び出しからメニューを新たに描画します。これにより、接続が高速になり、ゲームの既存のレンダーループに容易に組み込むことができます。そのため、ツールやネイティブクライアントは、低遅延オーバーレイのためにこれを使用しています.

どこ Opal 合う

OpalはFabricのModであり、ImGuiではなくゲーム独自のGUIフックを通してインターフェースを構築します。ネイティブコードに手を加えることなく機能を追加したい場合は、GraalVMJavaScriptスクリプティングエンジンから始めるのが良いでしょう。セットアップガイドとスクリプティングガイドをご覧ください。セットアップガイドスクリプティングガイド

即時モードとは

ImGuiは、毎フレームインターフェースを再構築します。ボタンオブジェクトを作成して保存することはありません。ボタンを描画する関数を呼び出し、その呼び出しはボタンを描画すると同時に、今フレームでクリックされたかどうかを通知します。

リテンションモードのツールキットは、その逆の動作をします。メモリ内に長寿命のウィジェットツリーを保持し、状態が変化する際にそのツリーを更新します。即時モードは、この永続的な構造を、自分の状態の隣に存在し、上から下まで読み込むコードと交換します。

なぜツールやクライアントがこれを選ぶのか

ImGuiは、3Dシーンの上に配置されるメニューで人気があります。その理由は実用的です。

  • 低遅延: プログラムがすでにレンダリングしているフレームにフックするため、メニューはすぐに反応します。
  • わずかな連携: ウィンドウといくつかのコントロールは、ほんのわずかな関数呼び出しで実現できます。レイアウトファイルや管理する個別のUIスレッドはありません。
  • 自己完結型: ライブラリは依存関係が少なく、一般的なグラフィックスバックエンドに適合するため、大規模なフレームワークを引き込むことはありません。
  • デバッグに優しい: リリースメニューを構築するのと同じ呼び出しが、開発者が機能構築中に使用する使い捨てのデバッグパネルも構築します。

即時モードとリテンションモード

側面即時モード (ImGui)保留モードツールキット
状態の所有あなたのコードがデータを保持ツールキットがウィジェットツリーを保持
フレームごとの処理各フレームごとにUIを再構築変更時にツリーを更新
セットアップコスト数回の関数呼び出しより多くの構造を事前に準備
最適な用途オーバーレイ、ツール、ゲームメニュー大規模なドキュメント形式のアプリケーション

ネイティブクライアントへの適合

C++で構築されたネイティブユーティリティクライアントは、ゲームのフレーム上にImGuiでメニューを描画することが多いです。メニューコードはレンダーループ内で実行され、クライアント自身の設定を読み取り、変更を直接書き戻します。個別のUIプロセスがないため、機能の切り替えは、クライアントがすでに所有している値に対する単一の関数呼び出しで行われます。

これはC++のパターンです。FabricのJavaで書かれたmodは、ゲーム自身のGUIフックを通じてインターフェースに到達するため、ImGuiは主にネイティブコードとして配布されるクライアントで現れます。Java modとしてはあまり見られません。

FAQ