ポンコツPdM

プロフィール画像

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

    出荷した注文を取り消せないことを、荷物が一方向へ進む仕分け装置で表したイラスト

    設計・テスト・レビュー

    2026/11/4

    Javaのenumで注文の状態遷移を管理する|出荷後のキャンセルを防ぐ

    この記事でわかることJavaのenumで注文の状態を表しても、setterから自由に書き換えられると、出荷済みをキャンセルできます。出荷とキャンセルを注文の操作にし、拒否した後も状態が変わらないことをJUnitで確かめます。 注文管理画面のキャンセルボタンから、注文の状態を更新する処理を作ります。注文が未出荷なら、そのままキャンセルできます。すでに荷物を出荷した注文までキャンセル済みになると、倉庫では出荷済みなのに管理画面ではキャンセル済み、という食い違いが起きます。 対象は、Javaのクラスとenumを ...

    破れた試し刷りの横に、透明なケースに守られたファイルがあるイラスト

    設計・テスト・レビュー

    2026/11/4

    JUnitの@TempDirで上書きをテストする|出力に失敗しても既存ファイルを残す

    この記事でわかることJUnitの @TempDir に前回の連携ファイルを作り、書き込み途中で IOException を起こします。前回分の全バイトが残るか、一時ファイルが残らないかを、実際のファイルで確認します。 毎朝のバッチが daily.tsv を作り、別システムは決まったパスから読み込みます。入力の読み込みに失敗した日は連携ファイルを更新せず、前回分を残す運用です。エラーが返っても、出力先をすでに上書きしていたら、その運用は成り立ちません。 実行用サンプル ZIPには、直接書く実装と一時ファイル ...

    JUnitからSpring Bootへ。Javaの処理をAPIにする。送料計算をHTTPへつなぐ流れを表した配送ラインのイラスト

    設計・テスト・レビュー

    2026/11/4

    JUnitで確かめたJavaの処理をSpring BootのAPIにする|単体テストとMockMvcの分け方

    この記事でわかることJUnitで動かした送料計算を、Spring BootのGET APIにつなぎます。送料のルールを変えたときに落ちるテストと、URLやJSONを変えたときに落ちるテストを、同じコードで確かめます。 購入画面に送料見積もりを表示することになりました。今まではJavaのメソッドに小計を渡していましたが、画面チームは小計をURLの文字列で送り、送料をJSONで受け取りたいと言っています。ここで増えた仕事は、整数へ変換し、既存の計算を呼び、成功と失敗をHTTPで伝えることです。 対象は、Jav ...

    二つに分けた搬送機から同じ順序で荷物が出ていくイラスト。分ける前に、動作を残す

    設計・テスト・レビュー

    2026/11/5

    Javaのリファクタリング前に書くJUnit|仕様書にない既存動作を残す

    この記事でわかること仕様書にない既存動作を調べ、残すべき戻り値をJUnitで確かめる手順です。Javaの配送判定を、整理する前、整理した後、新しい仕様を入れた後の3段階で比較します。 保守チームに「離島の注文は発送前に人が確認する」という依頼が来ました。配送判定のクラスにはすでに、発送できない品目を止める処理と、住所が不足した注文を保留する処理が混ざっています。担当を分ければ離島の条件は追加しやすくなります。順番を入れ替えただけで、発送禁止の品が確認待ちに流れると困ります。 仕様書には「配送できない場合は ...

    会議室を背景に、予約の開始と終了の間に一つの時間枠を置いたイラスト

    設計・テスト・レビュー

    2026/11/5

    Javaの引数をクラスにまとめる判断|予約の開始・終了時刻を例に

    この記事でわかることJavaのメソッドへ開始・終了時刻を毎回渡している処理を、小さなクラスにまとめます。同じ入力で分割前後を比較し、時刻の成立条件と会議室ごとの予約ルールをどこに置くか判断します。 会議室の予約画面に「利用時間」と「既存の予約との重なり」を出すとします。初めは、メソッドへ時刻を二つずつ渡せば動きます。次に、別の画面にも同じ処理を足すことになりました。呼ぶ場所が増え、startとendをいつも正しく組み合わせて渡す必要が出てきます。 対象は、Javaの変数、メソッド、newを読める人です。開 ...

    小さなトレーから積み木があふれ、その先に大きなトレーがあるイラスト

    実装・エラー解決

    2026/11/4

    Javaのintの掛け算はlongに代入してもあふれる|原因と直し方

    この記事でわかることint同士の掛け算をlongに代入したら、在庫数がマイナスになりました。どの時点で数があふれたかを確認し、合計をlongで扱う修正と、intの範囲外を例外で止める修正を比べます。 倉庫の集計では、箱数と1箱あたりの個数を受け取って合計個数を出します。個々の値はintで受け取れますが、掛け合わせると約21億を超えることがあります。たとえば50_000 * 50_000の答えは2,500,000,000。受け皿だけlongにしたコードでは、実行すると −1,794,967,296 になりま ...

    JUnit 最初のテスト。置く・動かす・失敗を読む。紙の本体とテストから実行結果へ進み、期待0円と実際500円の違いを見るイラスト。

    設計・テスト・レビュー

    2026/11/5

    JUnit 5入門|Mavenで最初のテストを実行し、失敗を直す

    テスト対象のShippingFee.javaと、テストコードのShippingFeeTest.javaをセットで動かし、JUnitの使い方を覚えます。まず送料計算の3件を成功させ、本体の条件を1か所変えて失敗させます。最後に、その失敗表示から直す場所を見つけます。 この記事で解説するコードの全文はこちら テスト対象・テストコード・pom.xmlを、実行できる一式で用意しました。記事に載せたものと同じ3テスト版です。ZIPを展開し、2つのJavaファイルを開いたまま読み進めてください。 ShippingFe ...

    テスト入門の本選び。9,999・10,000・10,001の境目をレンズで確かめるイラスト。

    Java 技術書・書評

    2026/11/5

    Javaのテスト入門におすすめの本|テストケースを選べる最初の1冊

    Javaのテスト入門で最初に読む1冊。送料計算から境界値と期待値を選び、JUnitで確かめます。

    「Java初心者の本選び」「最初の1冊から」「Spring Bootへ進む土台」の文字と、机でノートとパソコンに向かうエンジニア。

    Java

    2026/11/5

    Java初心者におすすめの最初の1冊|Spring Bootに進むまでの学び方

    Java初心者の最初の1冊と、必要に応じて補うHTML/CSS・SQLの本。短いコードと6項目で、次に進む準備ができたか確かめます。

    実行・確認・判断の三つの責任と最後の決定権を分ける図

    仕事・チーム開発

    2026/11/4

    開発チームの役割分担の決め方|実行者・確認者・判断者を分ける表

    「このAPI変更は開発チームでお願いします」と任された。しかし、画面の文言を誰が決めるのか、利用側への影響を誰が確認するのか、本番反映を誰が承認するのかは決まっていない。実装担当が全部を抱えたり、最後のレビューで判断が止まったりします。 この場面では、作業者を増やす前に、実行者・確認者・判断者を分けます。特に一つの判断に最終責任を持つ人を明記します。 その人が全ての情報を一人で集めるという意味ではありません。判断材料を作る人、影響を確かめる人と組み合わせます。 以下は架空の問い合わせ管理アプリで、件名の文 ...