#15 Scalaで学ぶデバッグの基本
Scalaのデバッグは、JVM言語らしくJavaと共通するツールを活用できます。この記事では、Scalaにおけるデバッグの基本的な方法と、関数型スタイル特有の工夫を解説します。
println()でその場の状態を確認する
println(s"ageの中身: $age")
Scalaの文字列補間(`s"..."`)を使うと、`$age`のように変数をそのまま埋め込めます。複雑な式を埋め込みたい場合は`${a + b}`のように波かっこで囲みます。
IntelliJ IDEAのデバッガー
ScalaもIntelliJ IDEAとの相性がよく、Javaと同じようにブレークポイントを設定してデバッグできます。行番号の左側をクリックするだけでブレークポイントを置け、実行が止まったら変数の中身をマウスオーバーで確認できます。
関数型プログラミング特有の注意点
Scalaでは、複数の処理を`.map`や`.filter`のようにつなげて書くことが多く、途中経過を確認しづらいことがあります。そのような場合は、途中に`.map { x => println(x); x }`のような一時的なコードを挟んで、途中の値を確認する方法がよく使われます。
val result = numbers
.map(_ * 2)
.map { x => println(s"倍にした後: $x"); x }
.filter(_ > 10)
IDEのデバッガーでメソッドチェーンを追う
IntelliJ IDEAには、`.map`や`.filter`をつなげた1行に複数のブレークポイントを個別に設定できる機能があります。行の左側に複数の停止点のアイコンが表示され、それぞれのステップでの値を個別に確認できるため、`println`を挟まずに調査したい場合はこちらも便利です。
Scalaならではの注意点
処理をつなげて書くスタイルに慣れないうちは、一度に多くのことをやろうとせず、`val`を使って途中の結果を一旦変数に入れ、`println`で確認しながら組み立てていくと、原因を見つけやすくなります。また、Scalaは型推論が強力なため、意図しない型になっていることがバグの原因になっている場合もあります。迷ったら`val x: Int = ...`のように明示的に型を書いて、コンパイラにチェックさせるのも有効な手段です。
まとめ
Scalaのデバッグは`println`とIntelliJ IDEAのデバッガーが基本です。処理をつなげて書くスタイルでは、途中経過の確認方法やIDEの複数ブレークポイント機能もあわせて活用しましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Scalaをもっと学びたい方には「実践Scala入門」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿