IntelliJ IDEA 2026.2 Help

ビューのカスタマイズ

デバッグセッション中、IntelliJ IDEA は変数、型、スレッド、フレームなどの情報を表示します。 ただし、特定のランタイムの詳細に焦点を当て、データをフィルター処理したり、特定の形式でレンダリングしたりすることもできます。 このシナリオでは、IntelliJ IDEA を使用すると、デバッガーの出力が デバッグ ツールウィンドウとエディターに表示される方法をカスタマイズできます。

スレッドビューをカスタマイズする

フレーム タブと スレッド タブでのスレッドの表示方法をカスタマイズできます。 アプリケーションのスレッド内を頻繁に移動し、スレッドがどのグループに属しているかなどの特定の詳細に関心がある場合に役立ちます。

  • フレーム または スレッド タブの任意の場所を右クリックして、 スレッドビューのカスタマイズ を選択します。

    メニューのスレッドビュー項目のカスタマイズ

項目

説明

スレッドグループを表示する

このオプションを選択すると、スレッドはスレッドグループの階層に表示されます。 ツリーのような階層を持つことは、プログラムがグループ内の同様のスレッドの数を管理するときに役立ちます。 また、このオプションは、システムスレッドをユーザー定義のスレッドから分離するため、リスト内を簡単に移動できます。

特定のグループにスレッドを表示するには、プログラムで java.lang.ThreadGroup を使用します。

合成メソッドのスタックフレームを表示する

コンパイラーによって導入され、ソースコードに存在しない合成メソッドのスタックフレームを表示するかどうかを指定できる。 例えば、外側のクラスがそのプライベート メンバーにアクセスできるよう、内部クラスによって作成されたメソッドが該当する。

現在のスレッドを最上部に移動

現在のスレッドをリストの一番上に保持します(スレッドグループを表示する が無効の場合)。

行番号を表示する

現在実行されている行番号を表示します。 この機能を使用するには、アプリケーションが行番号情報付きでコンパイルされている必要があります。

クラス名の表示

メソッドを含むクラスの名前を表示します。 匿名の内部クラス内のコードが実行されると、代わりに囲みクラスの名前が表示され、その後にドル記号と数字が続きます(例: MyClass$1)。

このオプションを有効にしておくと、継承されたメソッドを処理する場合に便利であり、サブクラスのメソッド実装をすばやく区別する必要があります。

パッケージ名の表示

クラスのパッケージの名前を表示します。 デフォルトパッケージのコードはマークされていません。 このオプションは、 クラス名の表示 が有効な場合にのみアクティブになります。 クラス名だけでは除去できないという曖昧さが存在する場合に使用します(java.util.Date と java.sql.Date など)。

ソースファイル名の表示

クラスのソースファイルの名前を表示します。

メソッド引数の型を表示

メソッドが取る引数の型を示します。 これは、同じメソッドのオーバーロードバージョンを扱う場合に便利です。

データビューをカスタマイズする

IntelliJ IDEA を使用すると、取得する変数に関する情報を構成できます。 例: インスタンス ID を表示 / 非表示にするか、特定のクラスのセットを表示するために toString 表現を使用するかを選択できます。

明示的に指定されていない限り、これらの設定は、変数値が表示されるすべての場所(変数 タブ、インライン値ビュー、ツールチップなど)に適用されます。

変数をアルファベット順に並べ替え

必要に応じて、 変数 タブでアイテムのアルファベット順を適用できます。

  1. Ctrl+Alt+S を押して設定を開き、 設定 | ビルド、実行、デプロイ | デバッガー | データビュー を選択します。

  2. 変数をアルファベット順に並べ替え オプションを選択してください。

自動式評価を構成する

デバッガーは、ブレークポイントのステートメントとそれに最も近い周囲のステートメントを分析して、 myvar.myfield などのソースコード内のさまざまな式を見つけます。

明示的なメソッド呼び出しが含まれていない場合、デバッガーはそれらを評価し、対応する値を 変数 ビューに表示します。

式の自動評価を無効にするには:

  1. Ctrl+Alt+S を押して設定を開き、 設定 | ビルド、実行、デプロイ | デバッガー | データビュー を選択します。

  2. 変数表示で自動式を有効化 オプションをオフにします。

オブジェクトの型の表示 / 非表示

対応する参照型変数のオブジェクトの型を表示するかどうかを選択できます。

  • 変数 タブ内の任意の場所を右クリックし、 型の表示 をオンまたはオフにします。

表示される型は、実際のオブジェクトの型であり、参照を保持する変数の型ではありません。 宣言された型の表示を切り替えるには、 データビューのカスタマイズダイアログで 宣言された型オプションを使用します。

特定の型の表示を構成する

特定の型の表示方法を微調整できます。 ここで説明するプロパティは、最も一般的なケースに適しています。 カスタム構成については、 型レンダラーを参照してください。

  • 変数 タブの任意の場所を右クリックし、 データビューのカスタマイズ を選択します。

項目

説明

新規ローカル変数に自動スクロールする

ステップ実行時にスコープに表示される新しい変数に自動的にスクロールします。

データフロー解析に基づいて条件値と例外を予測。

データフロー分析からの情報に基づいて事前にわかっているブール式または例外のエディターヒントを有効にします。 詳細については、 インライン変数ビューを参照してください。

表示

  • 宣言された型: オブジェクトへの参照を保持する変数の型を示します。

  • 合成フィールドを表示する: 合成フィールド(たとえば、コンパイラーが生成した内部クラスのフィールド)を表示します。

  • ローカル変数の $val フィールド: は、匿名クラスで使用される外部変数をローカル変数であるかのように示しています。 合成フィールドを表示する が必要です。

  • 完全修飾名: 実際の型と宣言された型の完全修飾名を示します。

  • オブジェクト ID: java.util.ArrayList@798 など、特定のインスタンスの ID を提供します。 ID を表示するには、 型の表示オプションを有効にする必要があります。

  • static フィールド: 変数 タブとツールチップに静的フィールドを表示します。

  • static final フィールドを表示する: 変数 タブとツールチップに静的な最終定数を示します。 static フィールド が必要です。

文字列に対して型を表示する

java.lang.String インスタンスのタイプを示します。 無効にすると、二重引用符で囲むことでこの型を識別できます。

プリミティブの 16 進値を表示する

byte、 short、 int、 long、 char タイプの 16 進形式を追加します。 有効にすると、10 進形式と 16 進形式の両方が表示されます。

NULL 配列要素を非表示にする

Collection を実装する配列およびクラスの内容を表示するときに null 参照を除外します(Map の子孫には適用されません)。

Throwable オブジェクトのスタックトレースを自動生成する

例外またはエラーをスローした後にプログラムが中断されると、そのスタックトレースにはまだ要素が含まれていません。 スタックトレースを設定するには、この Throwable で getStackTrace() を呼び出す必要があります。 Throwable オブジェクトのスタックトレースを自動生成する が有効な場合、IntelliJ IDEA がこれを行います。

コレクションクラスの代替ビューを有効にする

Collection または Map を実装するクラスの内容を、より便利な形式で表示するには、このオプションを選択します (たとえば、各マップエントリをキーと値のペアとして表示する)。

toString() オブジェクトビューを有効にする

どのクラスが toString() の結果を表示値として使用するかを設定できる。 完全修飾クラス名で指定した場合、このオプションはそのクラスとその子孫クラスにも適用される。 クラス パターンも、正規表現 構文を使用して定義できる(例:)。

  • *.Test: パッケージに関係なく、 テスト と呼ばれるすべてのクラス

  • javax.swing.*: javax.swing パッケージとそのすべてのサブパッケージのすべてのコード

  • ?est.Tes?: Tes で始まり、パッケージ内の任意の文字で始まり、任意の文字で始まり、 est が続くすべてのクラス

  • *.T*: すべてのパッケージで T で始まるすべてのクラス

カスタム型レンダラー

IntelliJ IDEA を使用すると、さまざまな型にカスタム表示形式を提供できます。 これは、レンダラーを使用することで実現できます。 レンダラーは 、特定の型に関連付けられた特別な式であり、デバッグセッション中にこの型のインスタンスの表示方法を制御します。

変数タブのフィールドの 1 つとして表示されるユーザー定義オブジェクト

レンダラーは、プリミティブと配列を含むすべての型をサポートします。 また、レンダラーはすべてのアクセス修飾子を無視するため、カプセル化されているかどうかに関係なく、任意のフィールドにアクセスできます。

レンダラーでは、並べ替えや縮小などの変換を実装して、目的の出力を生成できます。 sun.misc.Unsafe を使用して、デバッグ中に実際のメモリアドレスを表示することもできます(ただし、これは推奨されません)。

レンダラーは、コンテンツが読みにくいカスタムコレクションを使用している場合に特に便利であり、一目でコンテンツを特定する必要があります。

レンダラーを追加する

  1. 変数 タブの任意の場所を右クリックし、 データビューのカスタマイズ を選択します。

  2. タイプレンダラ タブで、 Alt+Insert をクリックし、レンダラー式を構成します。

    例: name フィールドに従ってオブジェクトを表示する場合は、式として this.name を使用します。 より高度な設定については、 レンダラーのプロパティ の章を参照してください。

  3. 変更を適用し、 変数 タブで更新されたプレゼンテーションを確認します。

レンダラーのプロパティ

項目

説明

レンダラー名

レンダラーの名前。 この名前はレンダラーの管理に使用され、実際のデータの表示方法には影響しません。

型のオブジェクトにレンダラーを適用する (完全修飾名)

このレンダラーが適用されるオブジェクト型。 クラスの完全修飾名を入力するか、 参照 参照ボタン をクリックして、リストから目的の型を選択します。

クラスがジェネリクスを使用する場合は、生の型を使用します。 型消去のため、ジェネリクス型はレンダラーでは効果がありません。

ノードをレンダリングするとき

このオプションは、オブジェクト自体の表示方法を決定します。

  • 型とオブジェクト ID を表示: クラス名とインスタンス ID を表示するかどうかを制御します。

  • デフォルトのレンダラを使用する: このレンダラーがない場合に表示されるオブジェクトを表示します。 オブジェクトの内容の表示方法のみをカスタマイズする場合は、このオプションを使用します。

  • 次の式を使用する: オブジェクトを表示するために、ある式の戻り値を使用できます。 すべてのメソッド呼び出しとメンバー変数アクセスは、レンダリングされたインスタンスに関連しています。

    例: this.getName() は、 getName() getter の結果を使用してオブジェクトを表示します。

    オンデマンド オプションは、式の自動評価を無効にし、明示的に要求した場合にのみ結果を計算します。

ノードを展開するとき

このオプションは、オブジェクトが展開されたときのコンテンツの表示方法を決定します。

  • デフォルトのレンダラを使用する: このレンダラーなしで表示されるノードの子を表示します。 これは、オブジェクト自体の表示方法のみをカスタマイズする場合に役立ちます。

  • 次の式を使用する: ノードの内容を表示するために、 this.toArray() などの式の戻り値を使用できます。 式は、プリミティブ型または参照型の配列を返す必要があります。 返された配列の要素は、ノードの子を表すために使用されます。

    ノードを展開できるかどうかをテストする (オプション): オブジェクトを表すノードを展開できるかどうかの自動チェックを追加します。 このチェックでは、指定されたブール式、たとえば !this.isEmpty() を使用します。 式はインスタンスで呼び出され、 true と評価されると、デバッガーはノードを展開可能にします。

  • 式のリストを使用する: ノードの子を表す独自の表現をそれぞれ提供する複数の式を指定できます。

    オンデマンド オプションは、自動評価を無効にし、特定の式を選択した場合にのみ結果を計算します。

デフォルトの子を追加

オブジェクトのフィールド(レンダラーが指定されていない場合に通常表示される)を式の結果とともに表示するかどうかを制御します。 このオプションは 式のリストを使用する でのみ使用可能です。

レンダラーを削除する

  1. 変数 タブの任意の場所を右クリックし、 データビューのカスタマイズ を選択します。

  2. タイプレンダラ タブで、削除するレンダラを選択し、 Delete をクリックします。 次に、変更を適用します。

レンダラーのミュート

レンダラーを完全に削除せずに一時的に無効にできます。

  • 単一のレンダラーをミュートするには、 変数 タブ内の任意の場所を右クリックし、 データビューのカスタマイズ を選択します。 タイプレンダラ タブで、ミュートするレンダラーのボックスをオフにして、変更を適用します。

  • すべてのレンダラーをミュートするには、 変数 タブ内の任意の場所を右クリックして、 レンダラーのミュート を選択します。

必要に応じて、同じ手順を使用してレンダラーのミュートを解除できます。

アノテーションを使用してレンダラーを追加する

IntelliJ IDEA の 組み込みのアノテーションを使用して、クラスに型レンダラーを割り当てることができます。 アノテーションは、レンダラーをチームメンバーと共有する必要がある場合に便利です。 一度構成すると、レンダラーを使用しているコードをデバッグするたびに、レンダラーがクラス (およびそのサブクラス) に適用されます。

  • クラス宣言の直前の行に @Renderer アノテーションを追加します。例:

    import org.jetbrains.annotations.Debug.Renderer; @Renderer(text = "name", childrenArray = "courses.toArray()", hasChildren = "courses.!isEmpty()") public class Student { private String name; private List<String> courses; Student(String name, List<String> courses){ this.name=name; this.courses=courses; } }

text()

レンダリングされたオブジェクトを表示するための式を指定します。

childrenArray()

レンダリングされたオブジェクトの子を表示する式を指定します。 式の戻り値は配列でなければなりません。

hasChildren()

ノードを展開可能にするかどうかを確認するための式を指定します。

生産性のヒント

大規模なプロジェクトでレンダラーを使用する

独自のレンダラーの作成には時間がかかりますが、カスタムクラスでの作業に多くの時間を費やしている大きなプロジェクトで作業している場合、報われます。

レンダラーでソート機能を実装する

ノードの子の表示に使用される式は配列を返します。 配列は順序付けされているため、 HashMap のような順序付けされていない構造体に対してソートを実装できます。 これは、たとえばユーザーのマップがあり、メールアドレスごとに並べ替えて表示したい場合に便利です。

2026 年 7 月 14 日