IntelliJ IDEA 2026.1 Help

チュートリアル: 最初の Kotlin アプリケーションをデバッグする

作成して実行した Kotlin アプリケーションが用意できました。 期待した通りに動作しないことに気付きます。 たとえば、誤った値を返す、または例外が発生してクラッシュする場合があります。 コードにエラーがあるようですので、デバッグのタイミングです。

デバッグとは

一般的に、デバッグとは、プログラム内のエラーを検出して修正するプロセスです。

対処しなければならないエラーには、さまざまな種類があります。 構文エラーなど、コンパイラーによって処理されるため、簡単に検出できるものもあります。 また、スタックトレースを確認することでエラーをすぐに特定できる場合もあり、原因を突き止めるのに役立ちます。

しかし、中には発見や修正に時間がかかる手強いエラーも存在します。 例えば、プログラムの初期段階で発生する微妙なロジックエラーは、後になってから表面化することがあり、原因を特定するのが大変です。

ここで デバッガーが役立ちます。 これは、プログラムの内部動作を観察することで、効率的にバグを発見できるツールです。 これは、指定されたポイントで実行を一時停止し、プログラムの状態を分析し、必要に応じて実行をステップごとに進めることで可能になります。 デバッグ中は、すべてを制御できます。 このチュートリアルでは、デバッグの基本的なシナリオについて説明します。

コードを調べる

簡単なデバッグのケースを試してみましょう。 次のアプリケーションがあるとします。

fun main(args: Array<String>) { println("Average finder v0.1") val avg = findAverage(args) println("The average is $avg") } fun findAverage(input: Array<String>): Double { var result = 0.0 for (s in input) { result += s.toDouble() } return result }

プログラムは、コマンドライン引数として渡されるすべての値の平均を計算することになっています。

コンパイルや実行に課題はありませんが、結果は期待したものではありません。 例えば、 1 2 3 を入力すると、結果は 6.0 となります。

まず、エラーがどこから発生しているかを考える必要があります。 問題は print ステートメントにはないと考えられます。 おそらく、予期しない結果は findAverage 関数から発生しています。 原因を見つけるために、実行時のその動作を調べてみましょう。

ブレークポイントの設定

バグを調査するには、誤った結果を生み出すコードに到達したときに、プログラムを一時停止する必要があります。 これは ブレークポイントを設定することで行います。 ブレークポイントは、状態を調べるためにプログラムが一時停止されるコード行を示します。

  • findAverage 関数が呼び出される行のガターをクリックします。

    ブレークポイント

デバッグモードでプログラムを実行する

それでは、デバッグモードでプログラムを起動してみましょう。

プログラムの実行やデバッグ時に引数を渡す必要があるため、 実行 / デバッグ構成にこれらを追加しましょう。

  1. ガターの 実行 アイコンをクリックし、 実行構成の変更 を選択します。

    ガターの実行ボタン
  2. プログラム引数 フィールドに 1 2 3 と入力します。 変更を適用してダイアログを閉じます。

    引数は、プログラム引数フィールドに入力されます
  3. main 関数の近くにある 実行 ボタンをクリックします。 メニューから デバッグ を選択します。

    ガターの実行ボタンをクリックすると、実行 / デバッグオプションのメニューが表示されます。

デバッガーセッションが開始され、指定した引数でプログラムが実行されます。

プログラムの状態を分析する

デバッガーセッションが開始されると、ブレークポイントに到達するまでプログラムは正常に実行されます。 このとき、IntelliJ IDEA はプログラムを一時停止し、停止した行をハイライトして、 デバッグ ツールウィンドウを表示します。

デバッグツールウィンドウが表示されます。 ブレークポイントの行がハイライト表示されます。

ハイライトされた行はまだ実行されていません。 これで、プログラムはあなたからのさらなる指示を待ちます。 中断状態では、プログラムの状態を保持する変数を調べることができます。

findAverage 関数はまだ呼び出されていないため、 結果}]} as it appears in the context filed.}]} as it appears in the context filed.}]} as it appears in the context filed. などのすべてのローカル変数はまだスコープ内にありませんが、 引数 配列の内容を調べることができます (引数main 関数のスコープ内にあります)。 変数の内容は、 引数 が使用されている場所にインラインで表示されます。

インラインデバッグでは、それぞれの変数が使用されている行に変数値が表示されます

デバッグ ツールウィンドウの スレッドと変数 タブで、現在スコープ内にあるすべての変数に関する情報を取得することもできます。

変数値は変数パネルに表示されます

プログラムのステップスルー

デバッグ ツールウィンドウに慣れたら、 findAverage 関数にステップインして、その中で何が起こっているかを確認しましょう。

  1. 関数にステップインするには、 デバッグ ツールウィンドウのツールバー上の ステップイン ボタンをクリックするか、 F7 を押してください。

    デバッグツールウィンドウの上部にあるボタンにステップインする

    実行ポイントを 1 ステップ進めたため、エディターでのハイライトが別の行に移動します。

  2. ステップを続けて、ローカル変数 結果}]} as it appears in the context filed.}]} as it appears in the context filed.}]} as it appears in the context filed. がどのように宣言され、ループの各反復でどのように変更されるかを見てみましょう。 変数 s"3" の値になるまで、 ステップイン をクリックし続けます。

    インラインデバッグは、変数値に関する情報を取得できます

    現在、変数 s には値 "3" が含まれています。 これは Int に変換され、現在 3.0 の値を持つ 結果}]} as it appears in the context filed.}]} as it appears in the context filed.}]} as it appears in the context filed. に追加されます。 これまでのところエラーはありません。 合計は正しく計算されます。

  3. あと 2 ステップで 返却 ステートメントに到達し、省略されていた箇所が判明します。 入力数で割らずに、 6.0 の値を持つ 結果}]} as it appears in the context filed.}]} as it appears in the context filed.}]} as it appears in the context filed. を返しています。 これが、誤ったプログラム出力の原因でした。

    結果の値は引数の数で割らずにそのまま返されます
  4. エラーを修正しましょう。 return result 行を、正しい計算式を含むコードに置き換えてください。

    return result / input.size

デバッガーセッションを停止し、プログラムを再実行する

プログラムが正常に動作することを確認するには、デバッガーセッションを停止してプログラムを再実行します。

  1. デバッグ ツールウィンドウのツールバーで、 停止 をクリックするか、 Ctrl+F2 を押します。

    デバッガーセッションは、デバッグツールウィンドウの左側にある停止ボタンを使用して停止する
  2. main 関数の近くにある 実行 ボタンをクリックします。 メニューから 実行 を選択します。

    ガターの実行ボタンをクリックすると、実行 / デバッグオプションのメニューが表示されます。
  3. ここでプログラムが正しく機能することを確認します。

    プログラムは現在 2.0 を出力する
2026 年 3 月 30 日