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

SIerでの開発・プロジェクト運営の経験をもとに、Java・Springの実装、設計・テスト、チーム開発で役立つ手順をまとめています。
学習と現場をつなぐ
約束した日に終わらないかもしれない。でも原因も完成日も、まだはっきりしない。そんな段階でも、いまの状態と必要な相談は先に共有できます。 先に結論 完了・残作業・期限への影響を伝える。完全な原因分析や回復時刻が出るまで待たない。 現状と、決めてほしいことを分ける。期限・範囲・支援のどこを調整したいか示す。 次に状況を返す時点を決める。完成の約束とは区別し、未確認でも続報する。 題材は、問い合わせ管理へ必須・1〜100文字の件名を追加する架空の改修です。以下の期限や時刻も説明用で、実際の予定や成果の報告ではあ ...
AIによる要約non-static method cannot be referenced from a static contextは、staticメソッドなど現在のインスタンスが存在しない場所から、どのオブジェクトに対する処理かを指定せずにインスタンスメソッドを呼んだときのコンパイルエラーです。mainはstaticなので、非staticメソッドを呼ぶには対象オブジェクトを生成して変数経由で呼びます。メソッドがインスタンス状態やDIされた依存を一切使わない純粋な共通処理ならstatic化も候補ですが、 ...
「半日くらい」と答えたのに、調査やテスト、レビュー修正が残って終わらない。見積もりでは、時間を当てる前に、見積もる作業を見えるようにします。 先に結論 実装以外も分けて見積もる。調査・テスト・レビュー対応・引き渡しまで、担当する終わりを揃える。 作業時間と待ち時間を区別する。合計時間だけで完成日を約束しない。 数字には前提と更新条件を添える。不明点は調査し、分かった時点で見積もり直す。 問い合わせ管理に、必須・1〜100文字の件名を追加する架空の改修を使います。以下の時間は説明用の仮置きで、実測値や業界標 ...
AIによる要約Enum.valueOfは、受け取った文字列を列挙定数名と大文字小文字まで含めて完全一致で探します。ACTIVEが定義されていてもactiveや末尾空白付きのACTIVEは一致せず、IllegalArgumentExceptionとNo enum constantが発生します。nullはNullPointerExceptionです。外部入力を無条件にvalueOfへ渡したり、すべて大文字へ直したりせず、APIや画面で受け付ける値を決め、必要なら業務用コードを持つfromValueメソッドで変 ...
AIによる要約ConcurrentModificationExceptionは、コレクションをIteratorで走査している途中に、そのIteratorが想定しない方法で要素の追加や削除が行われたときに発生する代表的な実行時例外です。名前にConcurrentとありますが、複数スレッドがなくても、拡張for文の中でList.removeを呼ぶだけで発生します。条件に合う要素を一括削除するならremoveIf、走査しながら現在要素を削除するならIterator.remove、元データを残して絞り込み結果を作 ...
レビューで「ここは直した方がよさそうです」と届いた。直すべきか、理由を聞いてよいか、今回は対象外だと伝えてよいか。コードより返答に時間がかかることがあります。 先に結論 まず指摘の意図を確かめる。必須の修正か、改善提案か、質問かを揃える。 修正・質問・見送りの相談を分ける。判断が残る点を「対応しました」で閉じない。 変更箇所と確認結果、残る判断を返す。未確認は未確認として伝える。 以下は、件名が必須・1〜100文字の問い合わせ管理を改修する架空の会話例です。実際のレビューや実行済みのテスト結果ではありませ ...
AIによる要約Spring BootのNo qualifying bean of typeは、コンストラクタや@Autowiredで要求された型に合うBeanをSpringコンテナから見つけられないときに発生します。最初にエラーメッセージから「必要とされた型」と「要求したクラス」を特定し、その型の実装クラス、@Service・@Component・@Repository・@Bean、コンポーネントスキャン範囲を確認します。実装が複数ある場合は別のエラーであり、@Qualifierや@Primaryの検討対 ...
AIによる要約Spring Bootの404 Not Foundは、リクエストされたURLに対応するControllerや静的リソースが見つからないときに発生します。まずブラウザやAPIクライアントが実際に送ったURLとHTTPメソッドを確認し、次にクラスとメソッドのRequestMappingを連結した完成URL、context-path、ControllerのBean登録を確認します。Controllerへ到達した後の例外は通常500であり、GETとPOSTだけが違う場合は405です。エラー画面の見た ...
「問い合わせの対応開始をテストしておいて」と言われ、担当者が一度操作できることだけを確認した。レビューで「投稿者が操作したら? 完了済みだったら? 拒否した後の状態は?」と聞かれ、ケースを足すたびに終わりが見えなくなる。そんなときは、テストコードを書く前に仕様の条件と、その条件で守る結果を対応させます。 この記事でわかること件名1〜100文字という仕様から、正常系・異常系・境界値を選ぶ理由。権限と状態を変えるケースで、入力・事前条件・操作・期待結果を揃える方法。仕様の1行をJUnitのassertionへ ...
AIによる要約Collections.unmodifiableListは、元のListをコピーせず、変更操作を禁止したビューを返します。そのため、戻り値からaddやremoveをするとUnsupportedOperationExceptionになりますが、元のListへ追加した内容はビューにも反映されます。元のListから切り離した変更不可のスナップショットが必要ならList.copyOf、独立して変更できるListが必要ならnew ArrayListを選びます。ただし、どちらも要素オブジェクトまで複製す ...