- HOME >
- 若手SEを救いたい社畜
若手SEを救いたい社畜

独立系のSIerに務めるSE,PM。 仕事の上で得たIT関連やプロジェクト運営関連の知識を書きます。 使用技術:Java,ウェブ関連全般,データベース全般 (どれも広く浅く)
学習と現場をつなぐ
AIによる要約@RequestParamが増えすぎたControllerは、読みづらく、修正漏れも起きやすくなります。検索条件や入力項目がひとまとまりなら、Formクラスや検索条件クラスへまとめることを検討します。ただし、何でもまとめればよいわけではなく、関連する値だけをまとめるのが大事です。 検索画面や一覧画面を作っていると、Controllerの引数に@RequestParamがどんどん増えることがあります。 最初は2個だった条件が、名前、ステータス、日付範囲、担当者、ページ番号と増えていき、気づくと ...
AIによる要約入力チェックは、すべてControllerでif文を書くものではありません。必須、桁数、形式のようなチェックはFormやRequest DTOのBean Validationに寄せ、重複確認、権限、状態遷移のような業務ルールはServiceで判断する、と分けると現場コードが読みやすくなります。 Spring Bootで登録画面やAPIを作ると、入力チェックをどこに書くかで迷います。 Controllerで全部if文を書く、Formのアノテーションだけに任せる、Serviceでまとめて見るなど ...
AIによる要約@RequestBodyは、HTTPリクエストのボディに入っているJSONをJavaオブジェクトへ変換して受け取るために使います。クエリ文字列やHTMLフォームを受けるためのものではありません。APIの入口ではRequest DTOとセットで考えると安全です。 Spring BootでAPIを作ると、@RequestBodyがよく出てきます。 画面フォーム中心の開発から入った人は、@RequestParamやFormクラスとの違いが分からず、JSONがnullになる、400エラーになる、とい ...
AIによる要約Spring BootのServiceは、業務処理やユースケースを表す中心的な場所です。Controllerに業務ロジックを書くと入口ごとに処理が散らばります。Serviceに寄せることで、再利用しやすく、テストしやすく、トランザクション境界も考えやすくなります。 Spring Bootの現場でよく言われるのが「業務ロジックはServiceに書きましょう」という話です。 ただ、初学者にとっては、Controllerに書いても動くのに、なぜServiceへ移す必要があるのか分かりにくいかもしれ ...
AIによる要約Spring Bootの@Transactionalは、基本的にRepositoryではなく、業務処理のまとまりを表すServiceメソッドに付けることが多いです。どこからどこまでを1つの更新単位にするかを決めるためのアノテーションであり、何となく付けるものではありません。 Spring BootでDB更新を扱うと、@Transactionalというアノテーションが出てきます。 初学者は、とりあえずRepositoryや更新メソッドに付ければよいと考えがちですが、現場では「どこからどこまでを ...
AIによる要約Spring BootのDTO変換は、必ずController、必ずServiceと決まるものではありません。大事なのは、Entityを外へ直接出さず、画面/API用の形に変換することです。単純な変換はControllerやService、複雑な変換はMapperへ分けると読みやすくなります。 Spring Bootの現場では、Entityをそのまま画面やAPIに返さず、DTOへ変換することが多いです。 しかし、DTO変換をどこに書くかは初学者が迷いやすいポイントです。Controllerに ...
AIによる要約Spring BootのRepositoryでは、Optional、List、単一Entityなど戻り値の扱いでレビューされることがあります。大事なのは、0件、1件、複数件を想定し、get()で雑に取り出さないことです。検索条件不足もあわせて確認します。 Spring Data JPAを使うと、Repositoryのメソッドを簡単に作れます。findByIdやfindByEmailのようなメソッド名だけで検索できるため便利です。 一方で、戻り値の扱いを雑にすると、NoSuchElementE ...
AIによる要約Spring BootのControllerは、リクエストを受け取り、入力を確認し、Serviceを呼び出し、レスポンスを返す入口です。業務ロジック、DBアクセス、長い条件分岐、Entityの直接返却を詰め込むと、レビューで指摘されやすくなります。 Spring Bootを学び始めると、最初に触ることが多いのがControllerです。URLを受けて画面やJSONを返せるので、つい何でもControllerに書きたくなります。 しかし現場では、Controllerが太くなるとレビューでかなり ...
AIによる要約Javaでequalsをオーバーライドするときは、単にIDEで生成すればよいわけではありません。何を同じとみなすのか、hashCodeと揃っているか、変更される値を比較に使っていないかを確認する必要があります。 equalsは、オブジェクト同士を「同じものとして扱うか」を決めるメソッドです。 現場では、ID、コード値、注文番号など、業務上の同一性を表すクラスでよく話題になります。 この記事のポイント equalsは同一判定のルールを表す オーバーライドするならhashCodeもセットで考える ...
AIによる要約LombokはJavaの定型コードを減らせる便利なライブラリです。ただし、@Dataを無条件に付けると、getter、setter、toString、equals、hashCode、コンストラクタがまとめて生成され、現場では思わぬ副作用になることがあります。 Lombokは、getter、setter、コンストラクタ、equals/hashCodeなどの定型コードをアノテーションで生成してくれるライブラリです。 現場でもよく使われますが、初学者が最初にやりがちなのが、クラスに何でも@Data ...