質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

1回答

7468閲覧

複数のコントローラークラスの使用について

aae_11

総合スコア178

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/04/21 02:04

編集2020/04/21 05:55

SpringBootなどでWEBアプリを作成する場合の、コントローラークラスの個数についてお聞きしたいことがあります。
SpringBootにおける、Controllerの役割は以下の通りかと思います。

Controller は上記2つの橋渡しを担います。

クライアントからの入力を View から受け取り、それをもとに Model に指示を伝えます。
その後、Model から受け取った値を View に伝え、見た目に反映させます。
以上のように、MVC ではプログラム中の処理を分担し管理します。

具体的には以下のようにリクエストによって処理を振り分けるメソッドを基本的には、記述していくことかと思います。

@RequestMapping("/test") public string test() { return "test"; }

ここで、疑問なのですが、例えば複数ページに渡るECサイトなどを作成した場合、ログイン画面からのリクエスト、新規会員登録ページからのリクエスト、商品をクリックした際のリクエスト、設定画面を押された際のリクエストなど、かなりのGet及びPOSTリクエストをコントローラークラスで受け取ることになるかと思いますが、そうなった場合、コントローラークラスを複数作成し、リクエストを受け取るクラスを分割するべきなのでしょうか?
または、リクエストは一つのコントローラークラスで受け取るべきなのでしょうか...?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/04/21 03:27 編集

Spring,Javaに限った話にしないほうが広く意見を聴けると思います。 (もちろん質問者のこれまでの質問スタンスによる影響は加味しない)
m.ts10806

2020/04/21 05:45

言語限定しないほうが・・・というアドバイスで言語を書き連ねるのはなぜでしょう・・・。 「オブジェクト指向」「ルーティング」など、適切なタグがあります。 すでにつけられている「MVC」は必要ですね。 ただ「解決済み」にしてしまっては、あえてそこから回答しようという人は稀有だと思いますが。
guest

回答1

0

単一責任の原則に則り、役割を見極め、分担させるべきと思います。
そこは要件・仕様次第で。

「何のためにコントローラーとかモデルとかビューとか概念を分けるのか」
もっと言えば「Webサイトのページをなぜわけるのか」
もっと言えば「文章を章立てて書くのはなぜか」
もっと言えば「なぜ町や地域で名前がついて”地方自治体”によって管轄されているのか」
を考えれば明白です。

なお、このような「どこにどこまでの責任を持たせるか」は設計段階で決めるものなので、
何も設計なしに取り組めるものではありません。先に考えることです。

もちろん肥大化の現実味を帯びてきてから分割することもできなくはないですが、
「元々肥大化の可能性を加味した設計にしていた」か
「肥大化してからどうしようか考えた」かでは成果・生産性など全てにおいて雲泥の差が出ます。

後者が非常に多いですね。
「How」を初動にすると後者になります。
「Why」「What」を初動にすると前者になります。

余談。
「どこまで想定できるか」が設計におけるエンジニア(アーキテクト)の腕の見せ所です。
経験だけでなく、普段からどこまで考え、実践しているかでしょう。
そういうところは下流工程時点でも結構出ます。
「あるべき姿」を描けているかどうかで品質にも多大な影響があるものです。
それを「難しい」と感じるか「楽しい」と感じるかで今後エンジニアとしてやっていけるかどうかが決まりますね。

投稿2020/04/21 02:59

編集2020/04/21 03:33
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問