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

SIerでの開発・プロジェクト運営の経験をもとに、Java・Springの実装、設計・テスト、チーム開発で役立つ手順をまとめています。
学習と現場をつなぐ
「問い合わせに件名を追加してください。必須でお願いします」。入力欄を作れば始められそうでも、下書きの扱いや変更できる人、過去データへの影響が気になることがあります。 先に結論 依頼を利用者の操作に置き換える。誰が、いつ、何をできるかを確かめる。 決まっていることと未決事項を分ける。根拠・決める人・着手への影響を残す。 回答を資料とテストへ反映する。確認待ちの間に進めてよい範囲も相談する。 以下は架空の問い合わせ管理の例です。件名は必須・1〜100文字、状態は「下書き・受付済み・対応中・完了」、利用者は投稿 ...
AIによる要約Java配列のequalsやJUnitのassertEqualsへ別々の配列を渡すと、要素が同じでも一致しません。業務コードの1次元配列はArrays.equals、JUnitの期待値比較はassertArrayEqualsを使います。この記事では同じ入力で失敗と修正後の成功を確かめ、順序・長さ違い、多次元配列、配列フィールドの防御的コピーまで整理します。 JUnitで同じ要素の配列を比較して失敗した場合は、まずassertEquals(expected, actual)をassertArr ...
LocalDate.parseで例外になる原因と、2月30日が補正される原因を同じ入力で比較。STRICTによる修正、必須・任意の日付入力、29件のJUnitテストを全文・GitHub・ZIPで確認できます。
この記事でわかることMap.of("A", null) のあるコードを読み、println まで進むかを判断します。続けて、任意項目が未入力のときに Map.of と HashMap をどう使い分けるかを確認します。 このページのクイズに進む。コードを見て、println まで実行されるか考えてください。 Java 9以降では、少数の固定データを簡潔に作るためにMap.ofを使えます。テストデータや区分値の対応表を作るときに使えます。任意項目が未入力の場合は、渡す値がnullになることがあります。 特に、 ...
AIによる要約Booleanはtrue・falseに加えてnullを持てます。if(flag)やboolean変数への代入ではBooleanからbooleanへの自動アンボクシングが行われ、flagがnullだとNullPointerExceptionになります。trueだけを判定するならBoolean.TRUE.equals(flag)、必ず二値なら最初からbooleanを使います。nullを『未設定』『未回答』『対象外』として使うなら、三値の意味を明示し、既定値で潰してよいか確認します。 boolea ...
「何が分からないの?」と聞かれても、そこを説明できない。質問文を書く手まで止まったら、まず見えている状況から相談できます。 先に結論 目的・止まった操作・見える結果を送る。原因や仮説がなくても、相談は始められる。 調べた分だけ、操作と結果を足す。観察したことと、まだ確かめていない考えを分ける。 困りごとの影響で、相談する時点を決める。期限や安全に関わる場合は、調べ終わるまで待たない。 架空の問い合わせ管理を題材に、整理できていないときと、少し調べた後の相談文を紹介します。「件名は必須・1〜100文字」は説 ...
AIによる要約e.getMessage()が返すのは例外メッセージのStringだけです。SLF4JへThrowableを渡していないため、発生クラスや行番号を含むスタックトレースは記録されません。log.error("保存失敗", e)またはlog.error("userId={}の保存に失敗", userId, e)のように例外自体を最後の引数へ渡します。ただし、同じ例外を各層で繰り返しERROR記録しないことも重要です。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、 ...
この記事でわかることInteger.parseIntのNumberFormatExceptionは、未入力、整数として読めない文字、intの範囲外を分けて調べます。全角数字「123」はJava 17ではそのまま123に変換できます。この記事では、3桁カンマを許可する数量欄を例に、形式を確認してから変換し、必須・形式・範囲のエラーを分けて返すコードを示します。 画面やCSVから受け取った数量をInteger.parseIntへ渡して失敗したときは、「受け取った文字列」「変換する型」「許可する入力形式」を分け ...
AIによる要約BigDecimalのdivideは、結果を正確に有限小数で表せない場合、丸め指定なしではArithmeticExceptionを投げます。1÷3のような計算では、業務仕様に基づいてscaleとRoundingModeを明示します。例外を避けるため適当に丸めるのではなく、金額、税率、表示値、DB保存値のどの段階で何桁にするかを決めることが重要です。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことができます。 金額、単価、税率、進捗率などを ...
AIによる要約isEmptyは文字数が0かを判定し、空白だけの文字列はfalseです。isBlankは空文字または空白文字だけならtrueになります。どちらも呼び出し元がnullならNullPointerExceptionです。画面入力では未送信、空文字、空白だけ、値ありを区別し、必須項目ならisBlank、空文字だけを特別扱いするならisEmptyなど、業務仕様に合わせます。trimとstripは文字列を変換するメソッドで、判定とは役割が異なります。 入力チェックでは『値がない』という言葉をよく使います ...