0
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?

Active Recordで使われる用語

Posted at

「Active Record」は、ソフトウェアアーキテクチャパターンを指すという用語でもあります。RailsのActive Recordは、「Active Record」パターンの実装でもあり、オブジェクトリレーショナルマッピングシステムとも呼ばれます。以下のセクションでは、これらの用語について説明します。

Active Recordパターンとはデータベースのレコードとオブジェクトを対応付けるもの

パターン名としてのActive Recordは、Martin Fowler『Patterns of Enterprise Application Architecture』という書籍で「データベーステーブル内の行をラップし、データベースアクセスをカプセル化し、そのデータにドメインロジックを追加するオブジェクト」と説明されています。Active Recordオブジェクトはデータと振る舞いの両方を保持します。Active Recordクラスは、背後のデータベースのレコード構造と非常に密接に対応します。これにより、以下の例でわかるように、ユーザーはデータベースの読み取りや書き込みを手軽に行えるようになります。

ドメインモデルは単にドメインの概念を抽出しただけのもので、ほとんどの場合、ドメインモデルの状態をデータとして保存する必要があります。Railsでは、データストアにリレーショナルデータベース(以降、特に必要ない限り単の「データベース」と言います)を用いることを想定しています。そして、アクティブレコードと呼ばれるアーキテクチャパターンを用いて、データベースのレコードとオブジェクトを対応付けています。そのため、モデルの実装で利用するライブラリの名前がActiveRecordなのです

パターン名とは

これは調べても良い記事を見つけることができなかった。

ラップ

(…に)包む、くるむ、(…に)おおい包む、おおい隠す、まとう、かける、巻く、(…に)夢中にさせる、終える、書き上げる

カプセル化

データ(属性)とそれを操作する手続き(メソッド)を一体化して、オブジェクトの実装の詳細をオブジェクトの内部に隠蔽(情報隠蔽)することをカプセル化といいます。カプセル化により、オブジェクトの内部の内部データ構造やメソッドの実装を変更しても、他のオブジェクトがその影響を受けにくくなるので、独立性が高まり、再利用がしやすくなります。

オブジェクト指向におけるオブジェクト

単なるデータそのものではなく、データ(属性)とそのデータに対する手続き(メソッド)を一つにまとめたものを指す。

ドメインロジックとは定義されたオブジェクトの振る舞い

質の高いアプリケーションを開発するには、対象の問題領域を構成する概念を抽出し、これらをもとに実装を進めていくことが重要です。この時、アプリけーションが対象とする問題領域のことをドメインと呼びます。また、ドメインを分析して構成概念を抽出することをモデリングと呼び、その結果得られた概念のことをドメインモデルと呼びます。
 ドメインモデルは、その概念に関連する属性と振る舞いを持ったオブジェクトとして定義されます。この振る舞いのことをドメインロジック、または、ビジネスロジックと呼びます。 れいるずのモデルは、ドメインモデルとドメインロジックを実装するレイヤーになります。
ドメインモデルは単にドメインの概念を抽出しただけのもので、ほとんどの場合、ドメインモデルの状態をデータとして保存する必要があります。Railsでは、データストアにリレーショナルデータベース(以降、特に必要ない限り単の「データベース」と言います)を用いることを想定しています。そして、アクティブレコードと呼ばれるアーキテクチャパターンを用いて、データベースのレコードとオブジェクトを対応付けています。そのため、モデルの実装で利用するライブラリの名前がActiveRecordなのです

オブジェクト/リレーショナルマッピング(ORM)とはプログラミング言語のオブジェクトでRDBMSのテーブルに接続する

オブジェクト/リレーショナルマッピング(一般にORMと呼ばれます)は、プログラミング言語のリッチなオブジェクトをリレーショナルデータベース管理システム(RDBMS)のテーブルに接続する技術です。Railsアプリケーションの場合、これらはRubyオブジェクトです。ORMによって、SQLステートメントを直接記述せずに、Rubyオブジェクトの属性やオブジェクト間の関係をデータベースに手軽に保存したり、データベースから取得したりできます。ORMによって、作成する必要があるデータベースアクセスコードの量は一般に最小限で済むようになります。

ORMフレームワークとしてのActive Record

Active Recordでは、Rubyオブジェクトを用いて以下を行えます。

  • モデルおよびモデル内のデータを表現する
  • モデル同士の関連付け(association: アソシエーション)を表現する
  • 関連付けられているモデル間の継承階層を表現する
  • データをデータベースで永続化する前にバリデーション(検証)を行なう
  • データベースをオブジェクト指向スタイルで操作する

感想

  • Active Recordパターンとはデータベースのレコードとオブジェクトを対応付けるもの

Active Recordを完全に理解するには、リレーショナルデータベース管理システム(RDBMS)やSQL(構造化クエリ言語)についての知識が役に立ちます。これらについてもっと深く学びたい場合は、このSQLチュートリアル(このRDBMSチュートリアルも可)を参照するか、他の方法で学習しましょう。

  • ORMとはプログラミング言語のオブジェクトでRDBMSのテーブルに接続する
  • 完全に理解するにはsQLやRDBMSのことを理解しなければならない。
0
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
0
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?