Blog ブログ

ActiveRecordの使い方

皆様はじめまして。

新入社員のプログラマの原です。
入社してから2ヶ月が経ち、仕事には慣れてきましたがまだまだ学ぶことが多く、失敗しながら学んでいます。
今回は、仕事で学んだActiveRecordを紹介しようと思います。

■ActiveRecordって何?

ActiveRecordを簡単に説明するとデータベースにアクセスして値を取得するためのインターフェイスの一つです。
いわゆる、O/Rマッピングと呼ばれるもので、データベースとのやり取りを簡単にしてくれるものです。

MVC(Model View Controller)で言うところのM(Model)に相当するものになります。

クラスとデータベースのテーブルは一対一の関係にあるため、アクセス先がどのテーブルなのかがわかりやすくなります。

■ActiveRecordの構成

ActiveRecordは、以下のような形に沿った動きをします。
  1. 1つのクラスが 基本的にデータベースの1つのテーブルに対応します。このクラスのことをモデルとも呼びます。
  2. クラスの属性は、テーブルの各カラムに対応します。
  3. オブジェクトが、データベースの1レコードに対応します。
  4. 各カラムの値は属性の値と同じになります

■ActiveRecordのメリット・デメリット

一般にテーブルにアクセスするためには、SQL文を直接書かなくてはいけません。
よって、常に修正漏れや修正間違いを意識しながら開発をおこなわなければなりません。
この問題を解決するために開発されたのがO/Rマッピングと呼ばれるもでのであり、ActiveRecordはこの一つになります。
例えば、SQLとActiveRecordの違いを見てみましょう。
ActiveRecordでは、SQLとは違い、SELECT等を呼び出す時に毎回テーブル名を記述する必要がありません。

SQLとActiveRecordでSELECTを指定した場合の処理
ActiveRecordは、モデルクラスにある$table_nameにテーブル名を設定することで
この名前のテーブルから検索する仕組みになっています。

さらに、データベースの種類によるSQL文の違いをライブラリが吸収してくれるので、特定データベースに合わせたアプリケーションコードを記述する必要がなくなり、依存を少なくすることができます。

しかし、SQL文を直接書かなくてもいいとは言ったものの、パフォーマンスチューニングやデバックをおこなうときにはSQL文を書かないといけません。

その他のデメリットとしては、モデルクラスの1オブジェクトが1つのレコードに対応するので、SELECTで全件取得など大量のレコードを取得する際はオブジェクトが大量に生成されるため管理が難しくなります。

■ActiveRecordのFindersのオプション

SQLのSELECTやWHEREと同じものが用意されています。
例えば、下記のようなものがあります。
ActiveRecord   SQL
・select ー SELECT
・conditions  ー WHERE
・group by ー GROUP
・order ー ORDER
※これ以外にも用意されています。

■まとめ
ActiveRecordは、SQL文の煩わしさを避けられ、データベーステーブルとの関係がわかりやすくなる便利なものです。
ActiveRecordは、PHPやRubyなど向けにライブラリが用意されているので、すぐ導入することが出来ます。
自分も使ってみて、理解しやすかったので、是非使ってみてください。

採用情報
クラウドクリエイティブスタジオでは、プログラマを募集しております。
ぜひ、一緒に面白いゲームを作っていきましょう。