ポンコツPdM

プロフィール画像

独立系のSIerに務めるSE,PM。 仕事の上で得たIT関連やプロジェクト運営関連の知識を書きます。 使用技術:Java,ウェブ関連全般,データベース全般 (どれも広く浅く)

既存コードはどこから読む?画面からDBまで1機能を追う手順

学習・成長

2026/9/8

既存コードはどこから読む?画面からDBまで1機能を追う手順

クラスが何百個も並び、上から読んでいるうちに何を調べていたか分からなくなる。そんなときは「問い合わせ一覧を開く」のように、一つの操作から読み始めます。 先に結論 調べる操作と、読み終える条件を決める。最初からすべてのクラスを理解しようとしない。 画面→HTTP→Controller→Service→DBを追う。戻り値が画面へ届く経路も確認する。 入口・入力・出力・未確認を一枚に残す。読んだことと、実行して確かめたことを分ける。 この記事では架空の問い合わせ管理を使い、一つの機能の経路と調査メモの作り方を示 ...

JavaのMap.putの戻り値がnullになる理由と上書き前の値を解説する記事のアイキャッチ。

実装・エラー解決

2026/9/6

JavaのMap.putの戻り値がnullになる理由|上書き前の値を確認する方法

AIによる要約Map.putは追加した新しい値ではなく、そのキーに以前入っていた値を返します。初回登録なら通常null、同じキーを上書きした場合は上書き前の値です。ただし、null値を許すMapでは、未登録と以前の値がnullだった場合を戻り値だけで区別できません。上書きを禁止したいならcontainsKeyやputIfAbsent、既存時だけ更新するならreplaceなど、意図に合うAPIを選びます。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことが ...

Optional.getでNoSuchElementExceptionになる原因と安全な値の取り出し方を解説する記事のアイキャッチ。

実装・エラー解決

2026/9/6

Optional.getでNoSuchElementExceptionになる原因|安全な値の取り出し方

AIによる要約Optional.getは値が存在するときだけ使え、emptyならNoSuchElementExceptionです。直前にisPresentを確認すれば動きますが、値の取り出しと分岐が離れると読みづらくなります。必須ならorElseThrowで業務例外へ、既定値ならorElse・orElseGet、変換ならmap、存在時だけ処理するならifPresentを使います。Optionalを使っても、0件を正常・404・業務エラーのどれにするかは仕様として決める必要があります。 Optionalは値 ...

HashSet.addがfalseを返す理由と戻り値で重複判定する方法を解説する記事のアイキャッチ。

実装・エラー解決

2026/9/6

HashSet.addがfalseを返す理由|戻り値で重複を判定する方法

AIによる要約HashSet.addは、要素が新しく追加されSetの内容が変わった場合にtrue、同じ要素がすでに存在して追加されなかった場合にfalseを返します。重複を検知するだけならcontainsしてからaddする二段階処理ではなく、addの戻り値を使えます。ただし、自作クラスの重複判定はequalsとhashCodeに依存します。入力順を保つならLinkedHashSetも検討します。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことができます ...

JavaでIndexOutOfBoundsExceptionになるListと配列の境界を解説する記事のアイキャッチ。

実装・エラー解決

2026/9/6

JavaでIndexOutOfBoundsExceptionになる原因|Listと配列の確認ポイント

AIによる要約Listや配列の有効な添字は0から要素数-1までです。sizeやlengthと同じ値を指定すると範囲外になります。固定位置のget、空リストの先頭取得、ループ条件の

仕様確認のチェックリスト|実装前に聞くべきことと質問例

設計・テスト・レビュー

2026/9/8

仕様確認のチェックリスト|実装前に聞くべきことと質問例

「問い合わせに件名を追加してください。必須でお願いします」。入力欄を作れば始められそうでも、下書きの扱いや変更できる人、過去データへの影響が気になることがあります。 先に結論 依頼を利用者の操作に置き換える。誰が、いつ、何をできるかを確かめる。 決まっていることと未決事項を分ける。根拠・決める人・着手への影響を残す。 回答を資料とテストへ反映する。確認待ちの間に進めてよい範囲も相談する。 以下は架空の問い合わせ管理の例です。件名は必須・1〜100文字、状態は「下書き・受付済み・対応中・完了」、利用者は投稿 ...

Javaの配列でequalsがfalseになる理由とArrays.equalsの違いを解説する記事のアイキャッチ。

実装・エラー解決

2026/9/6

Javaの配列でequalsがfalseになる理由|Arrays.equalsとの違い

AIによる要約Javaの配列は内容比較用のequalsをオーバーライドしていないため、a.equals(b)は同じ配列オブジェクトかを確認します。要素を順番に比較するならArrays.equals、多次元配列ならArrays.deepEqualsを使います。JUnitでもassertEqualsではなくassertArrayEqualsを選びます。配列をDTOやMapのキーに持たせる場合は、比較だけでなくhashCodeや防御的コピーも検討します。 この記事はXへ投稿したJavaクイズの詳しい解説です。ま ...

LocalDate.parseでDateTimeParseExceptionになる原因と日付形式を解説する記事のアイキャッチ。

実装・エラー解決

2026/9/6

LocalDate.parseでDateTimeParseExceptionになる原因|日付形式の指定方法

AIによる要約LocalDate.parse(text)は標準でISO形式のyyyy-MM-ddを期待します。2026/08/14や20260814を解析するにはDateTimeFormatterを指定します。形式が合っていても2月30日など存在しない日付はDateTimeParseExceptionです。表示用と入力用のフォーマッター、暦年のuuuuと年のyyyy、厳密な解析、空入力の扱いを分け、外部インターフェースごとに契約を固定します。 画面、CSV、外部APIでは日付の表記が異なります。Javaの ...

JavaのMap.ofにnullを入れるとNullPointerExceptionになる理由を解説する記事のアイキャッチ。

実装・エラー解決

2026/9/6

JavaのMap.ofにnullを入れると例外になる理由|HashMapとの違い

AIによる要約Map.ofはnullのキーと値を許可しないため、Map作成時点でNullPointerExceptionになります。getを呼んだ時ではありません。また、作成したMapへputやremoveもできません。HashMapはnullを許可しますが、キー未登録と登録済みnullの区別が必要になります。固定データならMap.of、値の追加・変更やnullを扱うなら要件に合う別の表現を選びます。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことがで ...

JavaのBooleanをif条件で使うとNullPointerExceptionになる理由を解説する記事のアイキャッチ。

実装・エラー解決

2026/9/6

JavaのBooleanでNullPointerExceptionになる理由|自動アンボクシングの注意

AIによる要約Booleanはtrue・falseに加えてnullを持てます。if(flag)やboolean変数への代入ではBooleanからbooleanへの自動アンボクシングが行われ、flagがnullだとNullPointerExceptionになります。trueだけを判定するならBoolean.TRUE.equals(flag)、必ず二値なら最初からbooleanを使います。nullを『未設定』『未回答』『対象外』として使うなら、三値の意味を明示し、既定値で潰してよいか確認します。 boolea ...