スポンサーリンク

Webアプリケーション開発

Webアプリケーションの3層構造

投稿日:2021年2月8日 更新日:

 Webアプリケーション開発において、リクエストを受けてレスポンスを返すことがサーバサイド(=バックエンド)の仕事です。
SpringBootに限らず、どんなフレームワークを使ったとしても、サーバサイドは3層に分けてコーディングするのが一般的です。

Webアプリケーションの3層構造とは何か

次の図がWebアプリケーションの3層構造です。

プレゼンテーション層、ビジネス層、インテグレーション層の3つで構成されています。

各層の役割を概要レベルで見ていきます。

3層構造における層役割
プレゼンテーション層クライアントに対する入出力(リクエストとレスポンス)とビジネス層の呼び出しを担当する層。
ビジネス層クライアントからプレゼンテーション層で受け取った値を元に、ビジネスロジック(業務処理)を実行する層。
業務アプリケーション開発の場合は、多くの場合データベース操作を伴うため、インテグレーション層の呼び出しが主な役割となる。
インテグレーション層「外部」に位置づけられるデータベース操作や他システムとの連携を実行する層。
MySQLやPostgreSQLなど、データベース操作が主な処理の場合は、「データアクセス層」と呼ぶこともある。

なぜ3層構造にするか

3層でなくても作れる

SpringBootではリクエストを受け取るためには@Controllerを付与したクラスを作成します。そして、Controllerクラスのメソッドに@RequestMapping(パス)を書けば、メソッドがパスに対する処理を行うことができます。

そのメソッド内で、業務処理やDBアクセスを書いて、そのままレスポンスを返すことができます。
この状態はControllerの1層のみで構成されていることになります。
これも不可能ではないということは知っておいてください。

なぜ、層を分けるか?

層を分けて、層ごとに役割分担させることで、コード群の見通しがよくなり、開発・保守がしやすくなります。

SpringBootで各層を実装するには

SpringBootでは、次の要領で各層を実装していきます。

3層構造における層作成するクラスアノテーション
プレゼンテーション層コントローラ
(XxxController)
@Controller
ビジネス層サービス
(XxxService)
@Service
インテグレーション層リポジトリ/DAO
(XxxRepository/XxxDao)
外部接続クラス/Accessor
(XxxAccessor(
@Repository/@Dao

@Component

SpringBootでは、各層を実装するためのアノテーションが用意されているので、各クラスに対してそのアノテーションを付与することで、簡単に3層構造を実現することができるようになっています。

「このコードはどの層に入れるべきか?」と迷ったら、リクエストの受付/バリデーション/レスポンスの返却はプレゼンテーション層です。データベース操作や外部APIはインテグレーション層です。それ以外は基本的にビジネス層と判断してください。適切な層にしかるべきコードが配置されていることは、コードの保守性を高め、品質を上げるという観点でとても大切です。

詳しくは各層のリンク先にあるページで解説します。

本ページのポイント

 この3層構造はWebアプリケーションの最もメジャーな構造です。この構造を採用することで、どんなシステムであっても、適切にレイヤー化されたシステムとして顧客に提案することができます。今稼働しているWebアプリケーションもほとんどがこの3層構造になっているはずです。

各層の役割を明確にしたWebアプリケーションを構築することで、保守性が高くなります。

Udemyのハンズオン動画講座でSpringBootのスキルを磨く!

スポンサーリンク

-Webアプリケーション開発

Copyright© 【Spring Hack】 , 2022 All Rights Reserved Powered by AFFINGER5.