Active Recordで使われる用語

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

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

https://railsguides.jp/active_record_basics.html#:~:text=%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%90%8D%E3%81%A8%E3%81%97%E3%81%A6,%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82

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

https://gihyo.jp/book/2020/978-4-297-11462-6

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

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

https://ejje.weblio.jp/content/wrap#:~:text=(%E2%80%A6%E3%81%AB)%E5%8C%85%E3%82%80%E3%80%81%E3%81%8F%E3%82%8B%E3%82%80%E3%80%81(%E2%80%A6%E3%81%AB)%E3%81%8A%E3%81%8A%E3%81%84%E5%8C%85%E3%82%80%E3%80%81%E3%81%8A%E3%81%8A%E3%81%84%E9%9A%A0%E3%81%99%E3%80%81%E3%81%BE%E3%81%A8%E3%81%86%E3%80%81%E3%81%8B%E3%81%91%E3%82%8B%E3%80%81%E5%B7%BB%E3%81%8F%E3%80%81(%E2%80%A6%E3%81%AB)%E5%A4%A2%E4%B8%AD%E3%81%AB%E3%81%95%E3%81%9B%E3%82%8B%E3%80%81%E7%B5%82%E3%81%88%E3%82%8B%E3%80%81%E6%9B%B8%E3%81%8D%E4%B8%8A%E3%81%92%E3%82%8B
### カプセル化
>データ（属性）とそれを操作する手続き（メソッド）を一体化して、オブジェクトの実装の詳細をオブジェクトの内部に隠蔽（情報隠蔽）することをカプセル化といいます。カプセル化により、オブジェクトの内部の内部データ構造やメソッドの実装を変更しても、他のオブジェクトがその影響を受けにくくなるので、独立性が高まり、再利用がしやすくなります。

#### オブジェクト指向におけるオブジェクト
>単なるデータそのものではなく、データ（属性）とそのデータに対する手続き（メソッド）を一つにまとめたものを指す。

https://gihyo.jp/book/2023/978-4-297-13865-3

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

 https://gihyo.jp/book/2020/978-4-297-11462-6

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

https://railsguides.jp/active_record_basics.html#:~:text=1.2-,%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88/%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%EF%BC%88ORM%EF%BC%89,%E3%81%AE%E9%87%8F%E3%81%AF%E4%B8%80%E8%88%AC%E3%81%AB%E6%9C%80%E5%B0%8F%E9%99%90%E3%81%A7%E6%B8%88%E3%82%80%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82,-Active%20Record%E3%82%92

## ORMフレームワークとしてのActive Record
>Active Recordでは、Rubyオブジェクトを用いて以下を行えます。

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

https://railsguides.jp/active_record_basics.html#:~:text=1.3-,ORM%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AEActive%20Record,%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%A7%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B,-2%20Active%20Record


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

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

https://railsguides.jp/active_record_basics.html#:~:text=Active%20Record%E3%82%92%E5%AE%8C%E5%85%A8%E3%81%AB%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%80%81%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E7%AE%A1%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%EF%BC%88RDBMS%EF%BC%89%E3%82%84SQL%EF%BC%88%E6%A7%8B%E9%80%A0%E5%8C%96%E3%82%AF%E3%82%A8%E3%83%AA%E8%A8%80%E8%AA%9E%EF%BC%89%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E7%9F%A5%E8%AD%98%E3%81%8C%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A1%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%82%89%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%82%82%E3%81%A3%E3%81%A8%E6%B7%B1%E3%81%8F%E5%AD%A6%E3%81%B3%E3%81%9F%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%81%93%E3%81%AESQL%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%EF%BC%88%E3%81%93%E3%81%AERDBMS%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%82%E5%8F%AF%EF%BC%89%E3%82%92%E5%8F%82%E7%85%A7%E3%81%99%E3%82%8B%E3%81%8B%E3%80%81%E4%BB%96%E3%81%AE%E6%96%B9%E6%B3%95%E3%81%A7%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%E3%80%82

* ORMとはプログラミング言語のオブジェクトでRDBMSのテーブルに接続する
* 完全に理解するにはsQLやRDBMSのことを理解しなければならない。