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

独立系のSIerに務めるSE,PM。 仕事の上で得たIT関連やプロジェクト運営関連の知識を書きます。 使用技術:Java,ウェブ関連全般,データベース全般 (どれも広く浅く)
学習と現場をつなぐ
レビューで「ここは直した方がよさそうです」と届いた。直すべきか、理由を聞いてよいか、今回は対象外だと伝えてよいか。コードより返答に時間がかかることがあります。 先に結論 まず指摘の意図を確かめる。必須の修正か、改善提案か、質問かを揃える。 修正・質問・見送りの相談を分ける。判断が残る点を「対応しました」で閉じない。 変更箇所と確認結果、残る判断を返す。未確認は未確認として伝える。 以下は、件名が必須・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です。エラー画面の見た ...
「テストしておいて」と言われても、正しい値で一度動かす以外に何を試せばよいか迷う。そんなときは、仕様を入力・事前状態・操作・期待結果へ分けてみます。 先に結論 仕様から期待結果を決める。動いた結果に合わせて、正解を書き換えない。 代表値と境界の前後を選ぶ。正常に通る値と、拒否される値の両方を試す。 権限・状態と「変わらないこと」も確認する。答えが未確定なら、仕様確認へ戻す。 架空の問い合わせ管理を使い、件名の文字数、担当者の権限、状態変更からケースを作ります。JUnitの書き方へ進む前に、何を確かめるかを ...
AIによる要約Collections.unmodifiableListは、元のListをコピーせず、変更操作を禁止したビューを返します。そのため、戻り値からaddやremoveをするとUnsupportedOperationExceptionになりますが、元のListへ追加した内容はビューにも反映されます。元のListから切り離した変更不可のスナップショットが必要ならList.copyOf、独立して変更できるListが必要ならnew ArrayListを選びます。ただし、どちらも要素オブジェクトまで複製す ...
AIによる要約try-with-resourcesは、tryの丸括弧内で取得したAutoCloseableを、正常終了でも例外でも自動的にcloseする構文です。finallyの手動closeより閉じ忘れや例外の上書きを防ぎやすくなります。複数リソースは宣言と逆順で閉じられ、本文とcloseの両方で例外が起きた場合、close側はsuppressed exceptionとして保持されます。ただし、フレームワークから借りたリソースを自分で閉じるかは所有者の契約を確認します。 ファイル、ストリーム、JDBC接 ...
PRの説明が「件名を追加しました」だけだと、レビューする人は差分から目的や確認状況を探すことになります。何を書けば、変更を判断してもらいやすいのでしょうか。 先に結論 目的・変更点・確認結果・未確認・見てほしい点の五つを揃える。 「テストOK」は条件と結果に分ける。まだ試していないことは未確認と書く。 説明と実際の差分を照合する。変更や追加確認をしたら、説明も更新する。 以下は、問い合わせに必須・1〜100文字の件名を追加する架空例です。実在のPRや実行済みのテスト結果ではありません。 差分から見えない「 ...
AIによる要約ClassCastExceptionは、実際のオブジェクトが変換先の型ではないのにキャストした場合に発生します。変数の宣言型がObjectでも、実体の型は変わりません。instanceofで分岐する方法はありますが、キャストが多い設計ではジェネリクス、専用DTO、型付きAPIへ見直します。raw ListやMap、外部ライブラリの戻り値は特に実行時まで誤りを検出できないため、入力境界で検証します。 Object、Map、古いraw List、外部ライブラリの汎用戻り値を扱うと、キャストが必要 ...
AIによる要約LocalDateは不変オブジェクトです。plusDaysは元のdateを書き換えず、計算後の新しいLocalDateを返します。そのためdate.plusDays(1)だけではdateは変わりません。date = date.plusDays(1)のように戻り値を受け取ります。月末やうるう年はAPIが処理しますが、営業日、締日、タイムゾーンは別の業務ルールなので、単純な日数加算と混同しないことが重要です。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポ ...
AIによる要約new ArrayList(original)で新しいList本体は作れますが、要素オブジェクトは元Listと同じ参照です。コピー先の要素を変更すると元データからも変更が見えます。これが浅いコピーです。要素まで独立させるには、コピーコンストラクタ、recordなどの不変オブジェクト、明示的な変換を使います。List.copyOfはListの変更を禁止しますが、要素を深くコピーするわけではありません。 画面編集用DTO、取込前のバックアップ、更新前後の比較でListをコピーすることがあります。 ...