用語集に戻る
データベース中級

ORM

おーあーるえむ

一言で言うと

プログラムのコードでデータベースを操作できるようにする仕組み。SQLを直接書かずに、プログラミング言語の書き方でデータベースを扱える。

もう少し詳しく

一言で言うと

プログラムのコードでデータベースを操作できるようにする仕組み。SQLを直接書かずに、プログラミング言語の書き方でデータベースを扱える。

もう少し詳しく

ORMは「Object-Relational Mapping」の略で、プログラミング言語のオブジェクトとデータベースのテーブルを自動的に対応づける仕組みです。

通訳さんに例えるとわかりやすいです。あなた(プログラム)は日本語(Python, JavaScriptなど)しか話せません。相手(データベース)はSQL語しか話せません。ORMは、あなたの日本語をSQLに翻訳し、相手の返答を日本語に翻訳してくれる通訳です。

たとえば、SQLでSELECT * FROM users WHERE age > 20と書く代わりに、ORMを使えばDrizzleならdb.select().from(usersTable).where(gt(usersTable.age, 20))のようにプログラミング言語の書き方で同じことができます。

代表的なORMには、Drizzle(JavaScript/TypeScript)、Prisma(JavaScript/TypeScript)、SQLAlchemy(Python)、ActiveRecord(Ruby)などがあります。

実務でどう使うか

  • マーケティング: 直接関わることは少ないですが、「データベースの変更がアプリに反映されるまでの流れ」を理解するうえで、ORMの存在を知っておくと良いでしょう

  • デザイン: データの構造(モデル)を理解するとき、ORMの定義ファイルを見ると「どんな項目があるか」が一目でわかります

  • PM: 「テーブルにカラムを追加する」という変更が、ORMの定義変更→マイグレーション実行というステップを経ることを理解しておくと、変更の工数見積もりに役立ちます
  • コードで見てみよう

    // Drizzle ORM(このプロジェクトで使用)での例

    // テーブルの定義(設計図)
    const usersTable = mysqlTable("users", {
    id: int("id").primaryKey(),
    name: varchar("name", { length: 255 }),
    email: varchar("email", { length: 255 }),
    });

    // データの取得(SQLを書かなくてOK)
    const users = await db.select().from(usersTable)
    .where(eq(usersTable.name, "田中"));
    // → 裏側で SELECT * FROM users WHERE name = '田中' が実行される

    関連する用語

    この用語を学べるコース

    この用語を実際に使ってみよう

    チョットデキルなら、5分のレッスンで実際にコードを書いて学べます。

    コース一覧を見る