2025-09

Java

【Java】NullPointerExceptionの原因と防ぎ方を初心者向けに解説

こんにちは、かつコーチです。Javaを書いていて一度は必ず遭遇するのがNullPointerExceptionではないでしょうか。通称「ぬるぽ」とも呼ばれるこのエラーは初心者だけでなく実務でも頻発します。今回は発生の仕組みと防ぎ方を整理しま...
Java

【Java】よくあるコンパイルエラーの読み方を初心者向けに解説

こんにちは、かつコーチです。Javaを書き始めたばかりの頃、真っ赤なエラーメッセージを見て「何を言っているのか分からない」と手が止まった経験はありませんか。今回は、初心者がつまずきやすいコンパイルエラー(ソースコードを.classファイルに...
Java

【Java】JUnit5のパラメータ化テストを中級者向けに解説

こんにちは、かつコーチです。「同じロジックを、入力値だけ変えて何パターンもテストしたい」というとき、@Testメソッドをコピペして値だけ変えていませんか。今回はJUnit5のパラメータ化テスト(同じテストロジックを異なる入力値で繰り返し実行...
Java

【Java】Mockitoでモックを使う方法を中級者向けに解説

こんにちは、かつコーチです。外部APIやデータベースに依存するクラスをテストしようとして、テスト環境の準備だけで疲れてしまった経験はありませんか。今回はJavaのテストで広く使われるMockito(依存クラスの動きを偽物(モック)に差し替え...
Java

【Java】JUnitのアサーションの書き方を初心者向けに解説

こんにちは、かつコーチです。前回はJUnit5の基本を解説しましたが、テストの心臓部といえるのが「期待した結果と実際の結果を比較する」処理です。今回はJUnit5でこの比較を行うアサーション(テストの期待値と実際の値を照合し、一致しなければ...
Java

【Java】JUnit5の基本を初心者向けに解説

こんにちは、かつコーチです。コードを書くたびにmainメソッドから動作確認して、確認が終わったらコードを消す……という作業を繰り返していませんか。今回はJavaの標準的なテストフレームワークであるJUnit5(Javaのコードが正しく動くか...
Java

【Java】JavaのCompletableFutureの基本:非同期処理を宣言的に組み立てる

こんにちは、かつコーチです。今回はFutureをさらに使いやすくしたCompletableFutureを扱います。ExecutorServiceとFutureだけでは非同期処理の連結や組み合わせが書きにくいと感じている方向けの内容です。Fu...
Java

【Java】Javaのsynchronizedと排他制御:競合状態を防ぐ書き方

こんにちは、かつコーチです。今回は複数スレッドが同じデータを操作するときに欠かせないsynchronizedと排他制御を扱います。ExecutorServiceでタスクを並行実行できるようになった次のステップとして、データ競合の防ぎ方を押さ...
Java

【Java】JavaのExecutorServiceでスレッドプールを使いこなす

こんにちは、かつコーチです。今回はExecutorServiceによるスレッドプール管理を扱います。Threadを都度newする実装から一歩進み、実務水準のタスク管理に踏み込みたい方向けの内容です。Threadを直接newする実装の問題点ス...
Java

【Java】JavaのRunnableとCallableの違い:戻り値と例外処理から理解する

こんにちは、かつコーチです。前回はThreadの基本を扱いましたが、今回は並行処理でタスクを表現する2つのインターフェース、RunnableとCallableの違いを整理します。「どちらを使えばいいのか」で迷った経験がある方向けの内容です。...
Java

【Java】JavaのThreadの基本:作り方と並行処理の仕組みを理解する

こんにちは、かつコーチです。今回はJavaの並行処理の入口となるThreadクラスを扱います。「メソッドを2つ同時に動かすにはどうすればいいのか」という素朴な疑問から、スレッドの作り方・注意点まで整理していきます。スレッドとは何かプロセスと...
Java

【Java】Javaのシリアライズ(Serializable)の基本と注意点

こんにちは、かつコーチです。オブジェクトをファイルに保存したり、ネットワーク越しに送ったりする場面で、なぜSerializableを実装しないとNotSerializableExceptionが飛ぶのか、腹落ちしないまま使っていませんか。今...
Java

【Java】JavaのJDBCでデータベースに接続する基本

こんにちは、かつコーチです。Spring Bootのような便利なフレームワークを使う前に、「Javaは素の状態でどうやってデータベースにつながっているのか」を知りたくなったことはありませんか。今回はJavaの標準APIJDBC(Java D...
Java

【Java】JavaのScannerで入力を受け取る使い方の基本

こんにちは、かつコーチです。学習用のコンソールアプリで「ユーザーに数値を入力してもらいたい」と思ったとき、何を使えばいいか分からなかった経験はありませんか。今回はJavaでキーボード入力を受け取るための標準クラスScanner(入力を1つず...
Java

【Java】Javaの正規表現(Pattern・Matcher)の基本と使い方

こんにちは、かつコーチです。メールアドレスの形式チェックや文字列からの数値抽出で、if文とsubstringを組み合わせて力技で書いてしまった経験はありませんか。今回はJavaで文字列のパターンマッチングを行う正規表現(文字列のパターンを記...
Java

【Java】Javaのjava.nio.fileでファイル入出力を行う基本

こんにちは、かつコーチです。「ファイルを読み書きしたいだけなのに、FileReaderやBufferedReaderを何行も書くのが面倒」と感じたことはありませんか。今回はJava 7以降の標準であるjava.nio.file(新しいファイ...
Java

【Java】Javaのjava.timeで日付・時刻を扱う基本と使い方

こんにちは、かつコーチです。「今日の日付を出したいだけなのに、DateとCalendarのどっちを使えばいいの?」と迷ったことはありませんか。今回はJava 21でも標準の日付・時刻ライブラリであるjava.time(日付や時刻を安全に扱う...
Java

【Java】Javaのメソッド参照の使い方を4パターンで解説

こんにちは、かつコーチです。s -> s.length()のようなラムダ式をあちこちで見かける一方、String::lengthという書き方に戸惑ったことはありませんか。今回はJavaのメソッド参照(既存のメソッドをそのままラムダ式代わりに...
Java

【Java】Javaの並列Stream(parallelStream)の仕組みと使いどころ

こんにちは、かつコーチです。stream()をparallelStream()に変えるだけで速くなると聞いて安易に使い、かえって遅くなった経験はありませんか。今回はStreamAPIの基礎を理解している前提で、並列Streamの仕組みと「使...
Java

【Java】JavaのCollectors活用術:groupingBy・partitioningByで集計処理を簡潔に書く

こんにちは、かつコーチです。Collectors.toList()やtoMap()は使えるようになったものの、groupingByやpartitioningByとなると急に難しく感じませんか。今回はStream・Collectorsの基本を...