ポンコツPdM

プロフィール画像

SIerでの開発・プロジェクト運営の経験をもとに、Java・Springの実装、設計・テスト、チーム開発で役立つ手順をまとめています。

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

    設計・テスト・レビュー

    2026/9/8

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

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

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

    実装・エラー解決

    2026/11/5

    Java配列のequalsがfalseになる原因|Arrays.equalsとassertArrayEqualsで直す

    AIによる要約Java配列のequalsやJUnitのassertEqualsへ別々の配列を渡すと、要素が同じでも一致しません。業務コードの1次元配列はArrays.equals、JUnitの期待値比較はassertArrayEqualsを使います。この記事では同じ入力で失敗と修正後の成功を確かめ、順序・長さ違い、多次元配列、配列フィールドの防御的コピーまで整理します。 JUnitで同じ要素の配列を比較して失敗した場合は、まずassertEquals(expected, actual)をassertArr ...

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

    Java

    2026/11/4

    LocalDate.parseの原因と対処|日付形式・存在しない日・STRICTの違い

    LocalDate.parseで例外になる原因と、2月30日が補正される原因を同じ入力で比較。STRICTによる修正、必須・任意の日付入力、29件のJUnitテストを全文・GitHub・ZIPで確認できます。

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

    実装・エラー解決

    2026/11/4

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

    この記事でわかることMap.of("A", null) のあるコードを読み、println まで進むかを判断します。続けて、任意項目が未入力のときに Map.of と HashMap をどう使い分けるかを確認します。 このページのクイズに進む。コードを見て、println まで実行されるか考えてください。 Java 9以降では、少数の固定データを簡潔に作るためにMap.ofを使えます。テストデータや区分値の対応表を作るときに使えます。任意項目が未入力の場合は、渡す値がnullになることがあります。 特に、 ...

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

    実装・エラー解決

    2026/11/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 ...

    エンジニアの質問の仕方|何が分からないか分からないときの相談例

    仕事・チーム開発

    2026/9/8

    エンジニアの質問の仕方|何が分からないか分からないときの相談例

    「何が分からないの?」と聞かれても、そこを説明できない。質問文を書く手まで止まったら、まず見えている状況から相談できます。 先に結論 目的・止まった操作・見える結果を送る。原因や仮説がなくても、相談は始められる。 調べた分だけ、操作と結果を足す。観察したことと、まだ確かめていない考えを分ける。 困りごとの影響で、相談する時点を決める。期限や安全に関わる場合は、調べ終わるまで待たない。 架空の問い合わせ管理を題材に、整理できていないときと、少し調べた後の相談文を紹介します。「件名は必須・1〜100文字」は説 ...

    SLF4Jでe.getMessageだけを出すとスタックトレースが残らない理由を解説する記事のアイキャッチ。

    実装・エラー解決

    2026/11/5

    SLF4Jでスタックトレースが出ない原因|e.getMessage()と例外の渡し方

    AIによる要約e.getMessage()が返すのは例外メッセージのStringだけです。SLF4JへThrowableを渡していないため、発生クラスや行番号を含むスタックトレースは記録されません。log.error("保存失敗", e)またはlog.error("userId={}の保存に失敗", userId, e)のように例外自体を最後の引数へ渡します。ただし、同じ例外を各層で繰り返しERROR記録しないことも重要です。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、 ...

    JavaでNumberFormatExceptionになる空文字やカンマ、全角数字の対処を解説する記事のアイキャッチ。

    実装・エラー解決

    2026/11/4

    JavaのNumberFormatExceptionの原因と対処|空文字・カンマ・桁あふれ

    この記事でわかることInteger.parseIntのNumberFormatExceptionは、未入力、整数として読めない文字、intの範囲外を分けて調べます。全角数字「123」はJava 17ではそのまま123に変換できます。この記事では、3桁カンマを許可する数量欄を例に、形式を確認してから変換し、必須・形式・範囲のエラーを分けて返すコードを示します。 画面やCSVから受け取った数量をInteger.parseIntへ渡して失敗したときは、「受け取った文字列」「変換する型」「許可する入力形式」を分け ...

    BigDecimal.divideでArithmeticExceptionになる原因と丸め方を解説する記事のアイキャッチ。

    実装・エラー解決

    2026/11/4

    BigDecimal.divideでArithmeticExceptionになる原因|割り切れない計算の丸め方

    AIによる要約BigDecimalのdivideは、結果を正確に有限小数で表せない場合、丸め指定なしではArithmeticExceptionを投げます。1÷3のような計算では、業務仕様に基づいてscaleとRoundingModeを明示します。例外を避けるため適当に丸めるのではなく、金額、税率、表示値、DB保存値のどの段階で何桁にするかを決めることが重要です。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことができます。 金額、単価、税率、進捗率などを ...

    JavaのisEmptyとisBlankでnull・空文字・空白を判定する違いを解説する記事のアイキャッチ。

    実装・エラー解決

    2026/11/5

    JavaのisEmptyとisBlankの違い|null・空文字・空白の判定方法

    AIによる要約isEmptyは文字数が0かを判定し、空白だけの文字列はfalseです。isBlankは空文字または空白文字だけならtrueになります。どちらも呼び出し元がnullならNullPointerExceptionです。画面入力では未送信、空文字、空白だけ、値ありを区別し、必須項目ならisBlank、空文字だけを特別扱いするならisEmptyなど、業務仕様に合わせます。trimとstripは文字列を変換するメソッドで、判定とは役割が異なります。 入力チェックでは『値がない』という言葉をよく使います ...