1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Railsとは

Last updated at Posted at 2024-11-05

Railsとは、プログラミング言語「Ruby」の上で動作するWebアプリケーションフレームワークです。

Webアプリケーションフレームワークとは?

「フレームワーク」という言葉には、「枠組み」という意味があります。開発を行う際に、頻繁に必要とされる基礎的な機能をまとめて提供してくれるものです。そのため、「作業を効率化するための枠組みのこと」をフレームワークと呼びます。

Webフレームワークとは、前述した「ライブラリ」をまとめて提供してくれるものであり、Webアプリケーションを開発するために必要な機能の詰め合わせたパッケージのようなものです。

ライブラリとは

Webフレームワークの説明に入る前に、Webフレームワークに近い考え方として「ライブラリ」というものもありますので抑えておきましょう。

ライブラリとは、よく使う機能や自分で実装することが面倒なものを「パッケージ化」して使用できる「部品のことです。

Webアプリケーションは毎回ゼロから組み上げていくのではなく、このようなパッケージ化された「部品」を組み合わせて使うことが一般的です。

  • 便利な部品を組み合わせて早く正確に作ることができる
  • railsはフレームワークのことを指すのでrailsの...のようなタイトルを見て読んでみよう理解しよう。

Railsの思想

CoC(Convention over Configuration)

直訳すると「設計より規約」という意味です。例えば社員情報を表現するモデルをEmployeeモデルとした場合、Railsでは以下のような規約に則って開発することが求められます。

  • データベースのテーブル名はモデル名の複数形にする(モデル名がEmployeeの場合、テーブルはemployeesとなる)
  • /employeesというURLは社員の一覧を表す
  • 社員ID:1の社員情報を表すURLは/employees/1である

このような規約に従うことで、それぞれのコンポーネントに紐付けを行う作業を省略できます。また、規約に従うことでプログラム内に規律が生まれ、以下のようのメリットを持てます。

  • 多くの設定ファイルを書く必要がない
  • 共通のルールがあることで他のエンジニアとスムーズなコミュニケーションが取れる

規約に従うことで関心ごとがシンプルになり、本来注力すべきビジネスロジックへ集中できるようになります。

Convention(規約)とは、要は名前づけのルールのことです。

DRY(Don't Repead Yourself)

「同じことを繰り返さない」という思想です。情報の重複をなくし、一つのことは一箇所だけに記述します。
 例えば、Railsの場合はモデルが参照すべきカラム名を手動で定義する必要はありません。Railsを起動時するタイミングでモデルに対応するテーブルで定義されているカラム名の一覧を取得することで暗黙的にカラム名に対応するメソッドなどを利用できるようになります。
DRY原則を守ることによって、変更が生じた際に何箇所もコードの修正することがなくなり、メンテナンス性が高まります。

  • カラムの名前によって対応するメソッドを利用できる
  • 同じことを繰り返さないようにどうしているのか?

Railsでは、これらDRY、CoC原則によって、開発者が最小限の労力で、しかも、保守しやすいアプリケーションを自然と開発できます。Railsとは、あるべきアプリケーション開発のレール(手順)を提供するフレームワークであるとも言えます。

* 開発が最小限の労力で作れるように名前の原則の元にモデル、テーブル、メソッドを関連づけている

REST(Representational State Transfer)

RESTとはWebアプリケーションの設計概念の一つで、「すべてのリソースに一意となる識別子(URI)がある」 「URIを通してリソースを操作する手段を提供する」といった考え方を基盤としています。
具体的を挙げると、前述のような/employees/1というURIが指す内容を「リソース」と呼び、社員情報を取得する処理は/employees/1へHTTPのGETメソッドでアクセスして取得します。同様に/employees/1に対してHTTPのDELETEメソッドでアクセスすると社員情報を削除できます。
 このようにリソースと操作するための動詞を中心に考えると、機能追加のしやすい自然な設計になります。

  • /employees/1を「リソース」
  • HTTPリクエストを動詞
  • リソースをどうするかという目的語と動詞を考えて設計する
  • 機能を追加するときは言語化できていないとダメそう

自動テスト

RubyやRailsでは自動テストを行う文化を重要視しています。Rails本体もそうですが、Railsのプロジェクトを作成すると雛形の一部としてテストを実行する環境テストコードのひな形の生成が行われ、Railsプロジェクトを作成した直後からテストが実行できるようになっています。
 テストフレームワークとして、デフォルトではMinitestが選択されています。その他によく利用されているRSpecを利用するように設定することも可能です。

  • テストコードのひな形の生成とはどういうことをするのか?

Model-View-Controllerパターンを採用

アプリケーションをModel(ビジネスロック)、View(インターフェース)、Controller(ModelとViewの制御)と言う役割で明確に分離しようという設計モデルです。
Model:汎用的に再利用可能なビジネスロジック。データの操作などを担当
View:最終的な出力の生成を担当
Controlle:リクエストの処理、ビジネスロジックの呼び出し、出力への振り分け(=全体の管理)
1、リクエスト
2、ビジネスロジックの呼び出し
3、処理結果をもとに出力を生成
4、レスポンス
それぞれの構成要素が明確に切り離されていることから、以下のような利点があります。

  • ロジック/デザインへの修正がお互いに影響しにくい(=保守が容易)
  • プログラマ/デザイナが並行して作業を行いやすい
  • 機能単位にテストを独立して実行できる(=テストを自動化しやすい)

  • 汎用的に再利用可能なビジネスロジック、データの操作とは?
  • 保守が容易とはどう言うことか?
  • 機能単位にテストができるとは?

Railsはフルスタックのフレームワーク

フルスタックとは、アプリケーション開発のためのライブラリはもちろん、コード生成のためのツール、動作確認のためのサーバなどをひとまとめにした、「全部入り」のフレームワークの開発・実行に必要な環境はすべて揃っています。ライブラリ同士の相性やバージョンの不都合を意識する必要も、基本的にはありません
 また、RailsではModularity(モジュール志向)が強化されており、必要に応じて目的に合ったコンポーネントへの差し替えが簡単に行えるようになっています。

  • モジュール思考とは?
  • コンポーネントの差し替えが簡単とは?

感想

rails、rubyの使い方を理解していなければその他の知識を活かすことができず発展できないのでこの2つの関して理解を深めたい。実践するために理解したい。
理解できていないこともあるがそのうちできると思う。
ディレクトリの意味やgem,bundleコマンドに関して知りたい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?