[RoR]RubyonRailsの基本理念(DRY,CoC)と特徴(MVC)、考え方
Ruby on Railsとは
- プログラミング言語であるRubyを使用した、Webアプリケーションのフレームワークの一つ。
フレームワークとは:
Webアプリケーションやシステムを開発するために必要な機能があらかじめ用意された枠組み。
(特定の仕事ができるように既にプログラミングされているプログラムのこと)
【補足:Rubyとは】
- RubyはWebアプリケーションを作るためのプログラミング言語.
- プログラミング言語の中でも、"スクリプト言語"の一つ。
スクリプト言語は簡単に言うと、記述したプログラムをすぐに実行し、動きを確認できる言語
※プログラミング言語の種類についてはこちら
Ruby on Railsの特徴
- "MVCアーキテクチャ"に基づいて構築されたフレームワークのこと。
MVCアーキテクチャ
Model
-
データやそのデータに関する処理を担当するコンポーネント。
アプリケーションが扱うデータやデータ処理を担当する部分。
=> アプリケーションのデータの中心となるコンポーネントで、アプリケーションにおけるデータのやり取りを担当する。 -
モデルは、データベースやファイル、外部APIなどからデータを取得し、そのデータを操作するためのメソッドを提供。ビジネスロジックやデータのバリデーションなども、モデルに含まれる。
View
- ユーザーに表示されるUI(ユーザーインターフェース)を担当するコンポーネント。
- ビューは、HTML、CSS、JavaScriptなどを使用して、
ユーザーがアプリケーションを操作するためのインターフェースを提供。
モデルから取得したデータを表示するために使用され、ユーザーが入力したデータをコントローラに渡すためのフォームなども提供する。
Controller
-
モデルとビューを仲介するコンポーネント。
-
ビューとモデルの媒介を行い、
必要に応じて横断的なアプリケーションのビジネスロジックの呼び出しを定義する。 -
コントローラは、ユーザーのリクエストを受け取り、適切なモデルのメソッドを呼び出して
データを取得、それをビューに渡して表示する。
また、ユーザーが入力したデータを受け取り、それをモデルに渡して処理させる。
ワンポイント:Skinny Controllers, Fat Models, Simple Views.
Skinny Controllers, Fat Models, Simple Views
Skinny Controllers
-
コントローラーができるだけシンプルに保つこと。
上記の通り、ModelとViewの橋渡しや、指示が役目だ。
コントローラーはHTTPリクエストを受け取り、必要なデータをモデルから取得し、
ビューに渡すことが主な役割。 -
ビジネスロジックなどの複雑な処理はモデルに任せ、
コントローラーはその処理に関与しないようにすることが望ましいとされている。
Fat Models
- モデルが責務を担うことが多いという意味。
- モデルは、データベースからデータを取得したり、データを操作したりするなど、
ビジネスロジックの大部分を担当。
また、ビジネスロジックを共通化したり、再利用可能なコードを作成することも重要な役割だ。
Simple Views
-
ビューができるだけ単純に保つことを意味する。
ビューは、コントローラーから渡されたデータを受け取って、ユーザーに表示する役割を持つ。 -
ビューが複雑になりすぎると、メンテナンスやテストが難しくなるため、
シンプルな構成にすることが望ましいとされている。
Ruby on Railsの基本理念
DRY(Don't Repeat Yourself)
システムを構成するあらゆる部品は、常におのおの重複することなく1つであり、明確であり、
信頼できる形で表現されていなければならない
"同じことを繰り返すな"ということだが、具体的にいうと、
同じ機能やロジックを何度も書くのではなく、それらを一箇所にまとめることで
コードの重複を避けること。
重複したコードがあると、変更が必要な場合に複数の箇所を修正しなければならず、
ミスの元になったり保守性が低下したりする。
CoC(Convention Over Configuration)
Webアプリケーションにおいて最適と考えられるものを規約として
デフォルト(あらかじめ決められた)設定にしている。
"設定より規約を優先する"という意味だが、
Webアプリケーションにおいて最適と考えられるものを規約としてデフォルト(あらかじめ決められた)
設定にしているため、開発者は細かい設定や決定を行う必要がなくなり、開発プロセスが簡素化される。
Railsが提供するデフォルトの規約に従うことで、コーディングの一貫性が向上し、
開発チーム全体でのコードの読みやすさや保守性が高まる。
また、新しい開発者がプロジェクトに参加する際にも、共通の規約に従うことでスムーズな移行が可能となる。
Discussion