📝

Java StreamAPIに慣れる ~デバッグ方法の紹介~

2024/10/17に公開

はじめに

Rehab for JAPANレセプトバックエンドエンジニアの荒金です。
レセプトのビジネスロジック部ではJava StreamAPIがよく用いられています。
StreamAPIは便利かつコードの記載量を減らせますが、コレクションに対する処理を一気に行ってしまうため、ループ毎の処理を追いたい時には一手間必要となります。
この記事では、業務を通して学べたJava StreamAPIのデバッグ方法についていくつか紹介します。

ターゲット

  • StreamAPIのデバッグ方法が分からない方
  • StreamAPIを触り始めた方、抵抗感ある方
  • IntelliJ IDEAの「Stream Debugger」に触れたことが無い方
  • Java初学者の方

要約

StreamAPIのデバッグ方法として、2つの方法を紹介します。
① peekメソッドを使う
② IntelliJ IDEAのJava Stream Debuggerを使う

① peekメソッドを使う

結果を確認したい中間操作の後にpeekメソッドを挟み、標準出力でデバッグをする方法になります。元コードを変更する手間はありますが、Javaさえ動けばどの開発環境でも使える手軽な方法です。
複数の中間操作の結果を一気に確認できる点も便利ですね👀

public void samplePeek() {
    final List<String> names = Arrays.asList("one", "two", "three", "four");

    final List<String> result = names.stream()
        .filter(name -> name.length() > 3)
        .peek(name -> System.out.println("filter適用後: " + name))
        .map(String::toUpperCase)
        .peek(name -> System.out.println("map適用後: " + name))
        .collect(Collectors.toList());
}

標準出力結果

filter適用後: three
map適用後: THREE
filter適用後: four
map適用後: FOUR

② IntelliJ IDEAのJava Stream Debuggerを使う

ストリームで処理されるデータの流れを可視化してくれます。
個人的にも便利だなと感じたので、IntelliJ IDEAをお使いの方にはおすすめです!

使い方

  1. ストリーム処理にブレークポイントを設定し、デバッグを実行します
  2. デバッグツールウィンドウで「現在のストリームチェーンをトレース」ボタンをクリックします

以下の様に、ストリームの処理結果を確認できます(以下図は「フラットモード」の表示例)

直感的に理解頂けるかと思いますが、向かって最左側がストリーム処理前のデータです。
そこから中間処理・終端処理の各結果が表示されていますね👏

補足情報

公式ドキュメント
IntelliJ IDEAの使用バージョン:IntelliJ IDEA 2024.1.5 (Community Edition)

あとがき

特にJavaを学び初めでStreamAPIにまだ慣れていない方向けに、当記事を作成しました。
私自身もレセプトTにジョイン当初は慣れていなかったのですが、
「StreamAPIの基本学習+デバッグ+ChatGPTを適宜」を重ねることで理解を進められました。
慣れてしまえばStreamAPIはとても便利です!
デバッグ方法さえ分かっておけば怖いことも特に無いと思いますので、お役立て頂けると嬉しいです😊

Rehab Tech Blog

Discussion