- HOME >
- ポンコツPdM
ポンコツPdM

SIerでの開発・プロジェクト運営の経験をもとに、Java・Springの実装、設計・テスト、チーム開発で役立つ手順をまとめています。
学習と現場をつなぐ
AIによる要約try-with-resourcesは、tryの丸括弧内で取得したAutoCloseableを、正常終了でも例外でも自動的にcloseする構文です。finallyの手動closeより閉じ忘れや例外の上書きを防ぎやすくなります。複数リソースは宣言と逆順で閉じられ、本文とcloseの両方で例外が起きた場合、close側はsuppressed exceptionとして保持されます。ただし、フレームワークから借りたリソースを自分で閉じるかは所有者の契約を確認します。 ファイル、ストリーム、JDBC接 ...
PRの説明が「件名を追加しました」だけだと、レビューする人は差分から目的や確認状況を探すことになります。何を書けば、変更を判断してもらいやすいのでしょうか。 先に結論 目的・変更点・確認結果・未確認・見てほしい点の五つを揃える。 「テストOK」は条件と結果に分ける。まだ試していないことは未確認と書く。 説明と実際の差分を照合する。変更や追加確認をしたら、説明も更新する。 以下は、問い合わせに必須・1〜100文字の件名を追加する架空例です。実在のPRや実行済みのテスト結果ではありません。 差分から見えない「 ...
AIによる要約ClassCastExceptionは、実際のオブジェクトが変換先の型ではないのにキャストした場合に発生します。変数の宣言型がObjectでも、実体の型は変わりません。instanceofで分岐する方法はありますが、キャストが多い設計ではジェネリクス、専用DTO、型付きAPIへ見直します。raw ListやMap、外部ライブラリの戻り値は特に実行時まで誤りを検出できないため、入力境界で検証します。 Object、Map、古いraw List、外部ライブラリの汎用戻り値を扱うと、キャストが必要 ...
AIによる要約LocalDateは不変オブジェクトです。plusDaysは元のdateを書き換えず、計算後の新しいLocalDateを返します。そのためdate.plusDays(1)だけではdateは変わりません。date = date.plusDays(1)のように戻り値を受け取ります。月末やうるう年はAPIが処理しますが、営業日、締日、タイムゾーンは別の業務ルールなので、単純な日数加算と混同しないことが重要です。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポ ...
AIによる要約new ArrayList(original)で新しいList本体は作れますが、要素オブジェクトは元Listと同じ参照です。コピー先の要素を変更すると元データからも変更が見えます。これが浅いコピーです。要素まで独立させるには、コピーコンストラクタ、recordなどの不変オブジェクト、明示的な変換を使います。List.copyOfはListの変更を禁止しますが、要素を深くコピーするわけではありません。 画面編集用DTO、取込前のバックアップ、更新前後の比較でListをコピーすることがあります。 ...
クラスが何百個も並び、上から読んでいるうちに何を調べていたか分からなくなる。そんなときは「問い合わせ一覧を開く」のように、一つの操作から読み始めます。 先に結論 調べる操作と、読み終える条件を決める。最初からすべてのクラスを理解しようとしない。 画面→HTTP→Controller→Service→DBを追う。戻り値が画面へ届く経路も確認する。 入口・入力・出力・未確認を一枚に残す。読んだことと、実行して確かめたことを分ける。 この記事では架空の問い合わせ管理を使い、一つの機能の経路と調査メモの作り方を示 ...
AIによる要約Map.putは追加した新しい値ではなく、そのキーに以前入っていた値を返します。初回登録なら通常null、同じキーを上書きした場合は上書き前の値です。ただし、null値を許すMapでは、未登録と以前の値がnullだった場合を戻り値だけで区別できません。putIfAbsentは、キーが未登録の場合と、登録済みの値がnullの場合に新しい値を入れます。登録済みnullも残したいなら、キーの有無で判断します。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポス ...
AIによる要約Optional.getは値が存在するときだけ使え、emptyならNoSuchElementExceptionです。直前にisPresentを確認すれば動きますが、値の取り出しと分岐が離れると読みづらくなります。必須ならorElseThrowで業務例外へ、既定値ならorElse・orElseGet、変換ならmap、存在時だけ処理するならifPresentを使います。Optionalを使っても、0件を正常・404・業務エラーのどれにするかは仕様として決める必要があります。 Optionalは値 ...
AIによる要約HashSet.addは、要素が新しく追加されSetの内容が変わった場合にtrue、同じ要素がすでに存在して追加されなかった場合にfalseを返します。重複を検知するだけならcontainsしてからaddする二段階処理ではなく、addの戻り値を使えます。ただし、自作クラスの重複判定はequalsとhashCodeに依存します。入力順を保つならLinkedHashSetも検討します。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことができます ...
AIによる要約Listや配列の有効な添字は0から要素数-1までです。sizeやlengthと同じ値を指定すると範囲外になります。固定位置のget、空リストの先頭取得、ループ条件の