📼

【Rails】ORM(Active Record)とは何か

2023/10/04に公開

Railsではデータベースとの連携が不可欠で、その中でも、秘密武器とも言えるのが「Active Record」と呼ばれるORM(Object-Relational Mapping)機能です。では、ORMとActive Recordとは一体何なのか、解説していきます。

データベースとは何か?

まず、データベースについてのおさらい。データベースは、情報を効率的に格納、管理、取得するための仕組みです。通常、データベースはテーブルと呼ばれる表形式のデータを持ち、データは行と列に整理されます。例えば、ユーザー情報を格納するテーブルでは、名前、年齢、メールアドレスなどの情報が列に保存されます。

データベースとプログラムの対応

プログラムを開発する際、データベースとの連携が必要です。プログラムでデータを読み書きし、データベースに格納します。ただ、データベースはテーブルという形式でデータを保存し、プログラムはオブジェクト(例: ユーザーオブジェクト、商品オブジェクト)を使用してデータを扱います。この違いをどう扱うかが問題となります。

ORMとは何か?

ここで、ORM(オブジェクト-リレーショナル マッピング)が登場します。ORMは、データベースとのやり取りを簡単にするための仕組みです。
データベースとプログラムの間の「翻訳者」として機能し、データベース内のテーブルをプログラミング言語で扱いやすいオブジェクトに変換します。

データベースはテーブルと呼ばれる表形式のデータを格納し、通常、SQL(Structured Query Language)という言語を使用して操作します。でもSQLを使うのは勉強していないとハードルが高いですよね、、、

ORMは、このSQLを書かずにデータベースを操作できるようにします!

例えば、ユーザーテーブルに対応するユーザーオブジェクトを作成することで、ユーザー情報をプログラム内で扱えます。ORMを使えば、プログラムでデータベースの操作を行う際に、データベースの詳細な操作(SQLクエリ)を直接書く必要がありません。代わりに、プログラムのコードでデータベースの操作を行えます。

ORMのメリット

ORMを使用する主なメリットは次の通りです。

  1. SQL知識不要: SQLクエリを直接書かずにデータベース操作ができるため、SQLを学ばなくても大丈夫です。

  2. オブジェクト指向: プログラム内でデータベースをオブジェクト指向スタイルで操作できます。

  3. 再利用性: クラスとオブジェクトを再利用して、データベース操作を簡単に行えます。

  4. 保守性: データベーススキーマの変更に対応しやすく、コードの保守性が向上します。

Active Recordとは

Active RecordはRailsにおけるORMの実装です。
データベースのテーブル(Table)とアプリケーション内のモデル(Model)を関連付けます。例えば、Userモデルはusersテーブルと対応します。
この対応付けにより、データベースのテーブルとデータをRubyのオブジェクトとして扱えるようになります。

例として、データを取得する場合、SQLの代わりに以下のようなRubyコードを使用します。

users = User.where(age: 18..30)

このコードは、年齢が18から30歳までのユーザーをデータベースから取得するためのものです。SQLを知らなくても、このようなコードを書くことでデータベース操作が可能です。

データの作成、読み取り、更新、削除

Active Recordを使うと、データベースに対する基本的な操作(CRUD)を簡単に行えます。

  • Create(作成): 新しいレコードをデータベースに挿入。

    user = User.new(name: "Ganmo")
    user.save
    
  • Read(読み取り): データベースからデータを取得。

    users = User.where(age: 18..30)
    
  • Update(更新): データベース内の既存のデータを変更。

    user = User.find(1)
    user.update(name: "Ganmo")
    
  • Delete(削除): データベースからレコードを削除。

    user = User.find(1)
    user.destroy
    

これらの操作は、Rubyのコードで簡単に行え、データベースとのやり取りがシンプルになります。

まとめ

  • データベース: データベースは情報を格納、管理、取得する仕組みで、通常はテーブルと呼ばれる形式でデータを保存します。

  • ORM(Object-Relational Mapping): データベースとプログラムの連携を助けるもので、データベース内のテーブルをプログラムで扱いやすいオブジェクトに変換します。SQLクエリを直接書かずにデータベースを操作できます。

  • Active Record: RailsにおけるORMの実装で、データベース操作をRubyのコードで行え、データベースのテーブルとデータをオブジェクトとして扱えます。

参照

↓↓↓とても分かりやすくまとめていて勉強になりました。
https://zenn.dev/airiswim/articles/ef689b9d94f3f8


ポートフォリオでは、Active Recordを使用しデータベースとの連携をとったコードを書いているため解説しました。
最後までお読みいただきありがとうございました。

Discussion