---
title: ActiveRecord使いが知るべき世界：Kaigi on Rails 2025
tags:  #プログラミング  
author: [hirotaka kono](https://www.docswell.com/user/hk_it7)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GJ89WRDKED.jpg?width=480
description: 『Kaigi on Rails 2025』登壇資料  ActiveRecord使いが知るべき世界：Java/Go/TypeScriptのORMアプローチ比較  https://kaigionrails.org/2025/talks/tora-kouno/#day2  #kaigionrails  https://kouno-log.hkono.workers.dev/
published: September 27, 25
canonical: https://www.docswell.com/s/hk_it7/ZWMNJR-orm-kaigi-on-rails
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GJ89WRDKED.jpg)

TORANOANA Lab
ActiveRecord使いが知るべき世界
Java/Go/TypeScriptの
ORMアプローチ比較
虎の穴ラボ 通販チーム
河野 裕隆
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LJLWNKMP7R.jpg)

自己紹介
河野裕隆
2019/08入社
Hirotaka Kouno
新規開発チーム
クリエイティア（Rails）
=&gt; 通販チーム（Java）に異動しました
- Kashiwa.rb
-
東葛.dev主催
-
きのこカンファレンスコアスタッフ
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 3

![Page Image](https://bcdn.docswell.com/page/47M9X2Y2JW.jpg)

ActiveRecordでクエリを書く時、
もどかしく感じたことはありませんか？
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 4

![Page Image](https://bcdn.docswell.com/page/P7RGNM95J9.jpg)

例：想定したindexがうまく使われない
😭😭😭
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 5

![Page Image](https://bcdn.docswell.com/page/PJXXNVQXJX.jpg)

主題、今日伝えたいこと
他のORMを知ることで
ActiveRecordの特徴を理解し
設計の視野を広げよう
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 6

![Page Image](https://bcdn.docswell.com/page/3JKWNQ99JD.jpg)

注意事項
紹介するライブラリが
優れている/劣っているという話ではありません
各言語特性や文化を踏まえて伝えていきたい
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LE31VPW975.jpg)

話すこと
1
ORMとは
2
ActiveRecordとは
3
他のORMとの比較
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 8

![Page Image](https://bcdn.docswell.com/page/8EDX8LK8JG.jpg)

ORMとはなにか
● Object-Relational Mapping（オブジェクトリレーションマッピング）
O/Rマッパー
プログラム上の「オブジェクト」と
リレーショナルDB上のレコードの変換を簡略化する
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 9

![Page Image](https://bcdn.docswell.com/page/V7PP82KW78.jpg)

ORMとはなにか - 最も狭義のORM
● 最も狭義のORM
- DBから取得した結果一覧をプログラムの型に落とし込む
- クエリの発行の簡略化
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 10

![Page Image](https://bcdn.docswell.com/page/2JV2NDV9JQ.jpg)

ORMとはなにか - 最も狭義のORM
● DBから取得した結果一覧をプログラムの型に落とし込む
Railsで結果一覧を取得すると「ActiveRecord::Relation」インスタンスに
マッピングされる
さらにRelationの内部には各モデルにマッピングされている
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 11

![Page Image](https://bcdn.docswell.com/page/5EGRKYL4JL.jpg)

ORMとはなにか - Railsで見てみる
User.all
SQL：SELECT &quot;USERS&quot;.* FROM &quot;USERS&quot;
Return：ActiveRecord::Relation [#&lt;User id: 1, name: &quot;河野裕隆&quot;...]&gt;
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 12

![Page Image](https://bcdn.docswell.com/page/4JQVNMYR7P.jpg)

当たり前だろ！
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 13

![Page Image](https://bcdn.docswell.com/page/K74MGVWQJ1.jpg)

ORMとはなにか - Railsで見てみる
Mappingなしで実行
ActiveRecord::Base.connection.select_all
Return：#&lt;ActiveRecord::Result:
@columns=[&quot;id&quot;, &quot;name&quot;], @rows=[[1, &quot;河野裕隆&quot;]]&gt;
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 14

![Page Image](https://bcdn.docswell.com/page/LJ18D3YLEG.jpg)

ORMとはなにか - Railsで見てみる
@columns=[&quot;id&quot;, &quot;name&quot;], @rows=[[1, &quot;河野裕隆&quot;]]をモデルに
result = ActiveRecord::Base.connection.select_all
ちなみにmysql2やpgを直接使うと
result.columns.zip(row).to_h相当のHashが返ってきます
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 15

![Page Image](https://bcdn.docswell.com/page/GJWZYPGQJ2.jpg)

いやーORMって便利ですねー
パラメータの解析をしなくて良い
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 16

![Page Image](https://bcdn.docswell.com/page/4EZ1XKL373.jpg)

ORMとはなにか - 狭義のORMが解消するもの
● オブジェクトを生成する手間の解消（SELECT）
● オブジェクトのライフサイクルの管理（INSERT/UPDATE/DELETE）
● インピーダンスミスマッチ
DBの型と言語の型の差異の解消
Rubyの場合、mysql2やpgなどのDBクライアントレベルで実装
データ構造の不一致（テーブル構造とオブジェクト）
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 17

![Page Image](https://bcdn.docswell.com/page/Y76L4QWZJV.jpg)

ORMの類型
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 18

![Page Image](https://bcdn.docswell.com/page/G751QRM9E4.jpg)

ORMとはなにか - ORMの類型
大きく2種類にわかれる
● Active Recordパターン
LaravelのEloquentなど
● Data Mapperパターン
Entity（データ構造、格納先）とRepository（アクセス層）が分離
JavaのHibernate、PHPのDoctrineなど
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 19

![Page Image](https://bcdn.docswell.com/page/9J21PD957R.jpg)

ORMとはなにか - もっと広い定義
● SQLビルダー（オブジェクトのライフサイクル管理は範囲外）
クエリ発行の責務を強く持つ
JavaのMyBatisなど
● マイグレーションツール
DBのテーブル定義の更新等を管理する
RubyのridgepoleやJavaのFlywayなど
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 20

![Page Image](https://bcdn.docswell.com/page/DEYZ52467M.jpg)

Rubyで使えるORM
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 21

![Page Image](https://bcdn.docswell.com/page/VJN3N861J8.jpg)

ORMとはなにか - Rubyで使えるORM
● ActiveRecord：Active Recordパターン
あとで説明します！！
● Ruby Object Mapper：Data Mapperパターン
Hanamiで使われている、EntityとRepositoryが分離している
● Sequel：SQLビルダー、Active Recordパターン（？）
ActiveRecordっぽくも使えるがDBを直接いじるイメージ
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 22

![Page Image](https://bcdn.docswell.com/page/YE99RKLYE3.jpg)

話すこと
1
ORMとは
2
ActiveRecordとは ← イマココ
3
他のORMとの比較
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 23

![Page Image](https://bcdn.docswell.com/page/GE89WRXK7D.jpg)

ActiveRecordとは
● Active RecordパターンのORM
ってだけじゃない
● DB Migration（スキーマ管理）
● バリデーション機構
● コネクションプーリング etc...
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 24

![Page Image](https://bcdn.docswell.com/page/LELWNK8PJR.jpg)

ActiveRecordは
オールインワンなORM
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 25

![Page Image](https://bcdn.docswell.com/page/4JM9X262EW.jpg)

ActiveRecordが実現した世界
● 明示的なマッピングなしで直感的なデータ操作可能な世界
「設定より規約」の原則を適用、設定ファイルなしでDB操作
● データの取り扱いはこれさえいれれば大丈夫な世界
ORMだけでなく、バリデーション、スキーマ管理を内包
● SQLを覚えなくてもなんとかなる世界
DSLによる柔軟なクエリ発行が行える
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 26

![Page Image](https://bcdn.docswell.com/page/PJRGNMP5E9.jpg)

ActiveRecordとは - 影響を与えたライブラリ
Active RecordパターンのORMの代表格として他言語へ影響を与える
いわゆるRailsライクなフレームワーク（ORM）
● Laravel Eloquent (PHP) エロクエント
● Django ORM (Python)
● AdonisJS Lucid (Node.js)
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 27

![Page Image](https://bcdn.docswell.com/page/PEXXNV3XEX.jpg)

話すこと
1
ORMとは
2
ActiveRecordとは
3
他のORMとの比較 ← イマココ
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 28

![Page Image](https://bcdn.docswell.com/page/3EKWNQY9ED.jpg)

いろんな軸でORMを見ていきます
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 29

![Page Image](https://bcdn.docswell.com/page/L731VP99J5.jpg)

このセクションで話すこと
1
クエリ発行
2
スキーマ管理
3
多機能性
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 30

![Page Image](https://bcdn.docswell.com/page/87DX8LG8EG.jpg)

クエリ発行
紹介するライブラリ
● ActiveRecord
● TypeScript - Prisma
● Java - JPA
● Java - Doma2
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 31

![Page Image](https://bcdn.docswell.com/page/VJPP823WJ8.jpg)

クエリ発行 - ActiveRecordの場合
Modelクラス.where(条件).select(カラム配列)
シンプルな例だとこんな感じ
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 32

![Page Image](https://bcdn.docswell.com/page/2EV2ND49EQ.jpg)

クエリ発行 - ActiveRecordの場合
もう少し複雑に関連付け込みで検索する
joinsでINNER JOINを実現。status値はenum定義から値で検索
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 33

![Page Image](https://bcdn.docswell.com/page/57GRKY14EL.jpg)

振り返りはこのくらいにします
ActiveRecord便利！最高！！
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 34

![Page Image](https://bcdn.docswell.com/page/4EQVNMDRJP.jpg)

クエリ発行 - TypeScript - Prisma
TypeScript - Prisma
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 35

![Page Image](https://bcdn.docswell.com/page/KJ4MGVZQE1.jpg)

直感的で読みやすい！
ActiveRecordにも近い
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 36

![Page Image](https://bcdn.docswell.com/page/LE18D3RL7G.jpg)

クエリ発行 - Prisma 解説
何がすごいって型安全にDSLを扱えるところ
スキーマ定義と密接に紐づいてDSLが作られているから
スキーマ：statusは数値を受け付ける
DSL：statusの比較対象は数値しか入れられないようにしないとな！
Rubyは動的型付けなのでname: hogeのhogeにはどんな型でも入る......
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 37

![Page Image](https://bcdn.docswell.com/page/GEWZYP1QE2.jpg)

クエリ発行 - Java - JPA
Java - JPA（仕様名なので実装はSpring Data JPA）
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 38

![Page Image](https://bcdn.docswell.com/page/47Z1XKP3J3.jpg)

まぁ......
わからないですよね......
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 39

![Page Image](https://bcdn.docswell.com/page/YJ6L4QMZEV.jpg)

クエリ発行 - JPA 解説
JpaRepositoryクラスを継承した、interfaceクラスのメソッド名からSQL
を発行する仕組みがある
● ﬁndBy：「検索するクエリ」の開始キーワード
● User_CreatedAtGreaterThanEqual：UserプロパティのCreatedAtに
大して大小比較で検索（アンスコは孫プロパティであることを示す）
● OrderByCreatedAtAsc：順序の指定
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 40

![Page Image](https://bcdn.docswell.com/page/GJ51QRZ974.jpg)

クエリ発行 - DSLで発行する系
Java - JPA（仕様名なので実装はSpring Data JPA）
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 41

![Page Image](https://bcdn.docswell.com/page/LE31VP9275.jpg)

クエリ発行 - DSLで発行する系
Java - JPAの面白いところ
● SQLに近い記法（JPQL）での定義も可能（not SQL）
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 42

![Page Image](https://bcdn.docswell.com/page/8EDX8LG6JG.jpg)

DSLの欠点
実行するまでクエリがわからない！
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 43

![Page Image](https://bcdn.docswell.com/page/V7PP828Z78.jpg)

Rails consoleで試し打ちしてません？
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 44

![Page Image](https://bcdn.docswell.com/page/2JV2NDNMJQ.jpg)

とはいえ、
「パラメーター多くてちょっと辛い...」
みたいなことありませんか？
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 45

![Page Image](https://bcdn.docswell.com/page/5EGRKYKXJL.jpg)

クエリマッパーという考え方
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 46

![Page Image](https://bcdn.docswell.com/page/4JQVNMN57P.jpg)

クエリ発行 - Java - Doma2
Java -Doma2
アプローチ：2WaySQLを呼び出す
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 47

![Page Image](https://bcdn.docswell.com/page/K74MGVGVJ1.jpg)

クエリ発行 - Java - Doma2
/dao/TodoDao/selectTodos.sqlのようなpathにSQLファイルを配置
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 48

![Page Image](https://bcdn.docswell.com/page/LJ18D3D4EG.jpg)

クエリ発行 - Doma2 解説
2WaySQLは以下の両方が編集なしで実行できるSQLのこと
● プログラムから変数をバインドした実行
コメントアウト部分の定義にバインドし、後ろの実数は削除
● DBクライアント等からの直接実行
コメントアウト後ろの実数をもとにSQLを発行
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 49

![Page Image](https://bcdn.docswell.com/page/GJWZYPYZJ2.jpg)

クエリ発行 - Doma2 解説
Doma2のすごいところ
● Daoインターフェイスの型とSQLの型をコンパイル時にチェックする
Annotation ProcessingというJavaの仕組み
引数名の誤りや型の誤りはコンパイル時にエラーになる
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 50

![Page Image](https://bcdn.docswell.com/page/4EZ1XKXL73.jpg)

クエリ発行 - まとめ
● ActiveRecordやPrismaのDSLは読みやすい
● 型安全の実現にいろんな手法がとられている
事前コンパイル、スキーマ駆動
● 2WaySQLならデバッグ実行が楽
全部プログラム上で解決しないクエリマッパーというアプローチ
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 51

![Page Image](https://bcdn.docswell.com/page/Y76L4Q4MJV.jpg)

このセクションで話すこと
1
クエリ発行
2
スキーマ管理 ← イマココ
3
多機能性
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 52

![Page Image](https://bcdn.docswell.com/page/G751QRQQE4.jpg)

スキーマ管理とは（ここでの定義）
● DBのテーブル定義をコードで管理する技術
● テーブル定義とプログラム上の型のマッピングの管理
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 53

![Page Image](https://bcdn.docswell.com/page/9J21PDPW7R.jpg)

スキーマ管理
紹介するライブラリ
● ActiveRecord
● TypeScript - Prisma
=====越えられない壁（以下はマッピングの管理のみ）======
● Java - MyBatis
● Go - sqlc
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 54

![Page Image](https://bcdn.docswell.com/page/DEYZ52597M.jpg)

スキーマ管理 - ActiveRecordの場合
次のようなファイル作って db:migrateするだけ
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 55

![Page Image](https://bcdn.docswell.com/page/VJN3N8NDJ8.jpg)

スキーマ管理 - ActiveRecordの場合
● db:migrate
● schema_migrationsテーブルにてバージョン管理
● schema.rb（structure.sql）が生成される
ちなみにModelプロパティの型情報はDBのメタ情報を取得
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 56

![Page Image](https://bcdn.docswell.com/page/YE99RKR8E3.jpg)

スキーマ管理 - TypeScript - prisma
次のようなファイル作ってnpx prisma migrate devするだけ
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 57

![Page Image](https://bcdn.docswell.com/page/GE89WRWZ7D.jpg)

スキーマ管理 - TypeScript - prisma
prismaのすごいところ：宣言型マイグレーション
変更は次のようなファイル作って再度npx prisma migrate devする
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 58

![Page Image](https://bcdn.docswell.com/page/LELWNKN1JR.jpg)

スキーマ管理 - TypeScript - prisma
スキーマと型のマッピング：prisma generateすると型とクライアント
が生成される =&gt; 次のようなコードが使えるようになる
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 59

![Page Image](https://bcdn.docswell.com/page/4JM9X2X5EW.jpg)

スキーマ管理 - その他
FlywayやGooseといった3rd partyライブラリを使うことが多い
ActiveRecordやPrismaのように内包しているほうがレア（？）
ここからはテーブル情報とオブジェクトのマッピング方法を見ていく
⇔ データベーススキーマの変更とアプリケーションのコードを分離
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 60

![Page Image](https://bcdn.docswell.com/page/PJRGNMNZE9.jpg)

スキーマ管理 - Java - MyBatis
XML/アノテーションで設定する
右はXMLで定義する例
insertとかは省略
アノテーションはJavaクラスの
フィールドに対応を書く
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 61

![Page Image](https://bcdn.docswell.com/page/PEXXNVN1EX.jpg)

スキーマ管理 - Go - sqlc
● schema.sql：構造体の型の生成元
● リポジトリに対応するSQL：リポジトリ、インターフェイスの生成元
上記をもとにコマンドで実装を生成するアプローチ
=&gt; 柔軟なSQLが作れる、マッピングも自由にできる
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 62

![Page Image](https://bcdn.docswell.com/page/3EKWNQNMED.jpg)

スキーマ管理 - Go - sqlc
● schema.sql：構造体の型の生成元
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 63

![Page Image](https://bcdn.docswell.com/page/L731VPV2J5.jpg)

スキーマ管理 - Go - sqlc
● 自動生成される構造体の例
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 64

![Page Image](https://bcdn.docswell.com/page/87DX8L86EG.jpg)

スキーマ管理 - Go - sqlc
● リポジトリに対応するSQL：リポジトリ、インターフェイスの生成元
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 65

![Page Image](https://bcdn.docswell.com/page/VJPP82WZJ8.jpg)

スキーマ管理 - Go - sqlc
生成されるリポジトリクラス
引数になる構造体も同時生成
CreateTodoParams
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 66

![Page Image](https://bcdn.docswell.com/page/2EV2ND8MEQ.jpg)

スキーマ管理 - まとめ
● ActiveRecordやPrismaはORMと一体化させることで開発体験を向上
● Javaでは、あえて分離することによってアプリケーションコードがDB
に依存しないように考慮している感
● sqlcは熟練したSQL職人がいるならあり（？）
引数の型もschema.sqlを見て生成してくれるので型安全
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 67

![Page Image](https://bcdn.docswell.com/page/57GRKY5XEL.jpg)

このセクションで話すこと
1
クエリ発行
2
スキーマ管理
3
多機能性 ← イマココ
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 68

![Page Image](https://bcdn.docswell.com/page/4EQVNMZ5JP.jpg)

ActiveRecord=オールインワン
他言語、ライブラリでは？
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 69

![Page Image](https://bcdn.docswell.com/page/KJ4MGV3VE1.jpg)

多機能性の比較
ライブラリ
クエリのDSL発行
コネクションプール
スキーマ管理
ActiveRecord
⭕
⭕
⭕
Java - Spring Data JPA
⭕
🔺
✖
TypeScript - Prisma
⭕
⭕
⭕
Go - sqlc
✖
✖
✖
⭕が多いから優れているわけではない
例えばJavaのコネクションプーリングはHikariCPという定番ライブラリを組み合わせる
チームに合わせてカスタマイズ性があるという利点
柔軟に（好き勝手に）やることとのトレードオフ関係もある（※Rails way）
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 70

![Page Image](https://bcdn.docswell.com/page/LE18D3147G.jpg)

まとめていきます
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 71

![Page Image](https://bcdn.docswell.com/page/GEWZYP8ZE2.jpg)

まとめ①
Java：単機能のライブラリを組み合わせることが多い
アダプタパターン等で柔軟に使えるようになっている（標準化がやけに進
んでいる？）、分業への意識もありそう
脱出ハッチみたいな実装も多数（Hint句がかけたり）
=&gt; 大規模、toB向け開発での利用が多いという特性の反映
C#も似たようなところあります
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 72

![Page Image](https://bcdn.docswell.com/page/47Z1XK8LJ3.jpg)

まとめ②
Go：コードを逆生成するなど他言語にはあまりないアプローチを取ること
が多い
IaC的な感じで環境を整える文化
小規模な「わかっている」チームでの開発が良さそうで組み合わせによる
カスタマイズ性を重んじる傾向
=&gt; 特有の文化（Goに入ればGoに従え？）がある気がする
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 73

![Page Image](https://bcdn.docswell.com/page/YJ6L4QPMEV.jpg)

まとめ③
TypeScript：いろいろなところで親切
後発ライブラリならではの「いいとこ取り」感
=&gt; 趣味でも業務でも、みたいなRailsと同じような思想を感じる
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 74

![Page Image](https://bcdn.docswell.com/page/GJ51QRKQ74.jpg)

ActiveRecordを振り返る
● 設定より規約により「よしなに」してくれる部分が多く楽
● それゆえに逸脱したことがやりにくいところもある
やらなくて済むように設計をがんばろう！
● 直感的なDSLやオールインワンな管理等はやっぱり魅力的！
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 75

![Page Image](https://bcdn.docswell.com/page/9E21PDWWJR.jpg)

主題、今日伝えたいこと
他のORMを知ることで
ActiveRecordの特徴を理解し
設計の視野を広げよう
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 76

![Page Image](https://bcdn.docswell.com/page/D7YZ52L9JM.jpg)

全体を振り返る
● 実装範囲やアプローチの違いはライブラリの責務がどこまでか、何を担
保したいかという色でしかない：ライブラリの良し悪しではない
● アプローチの違いは言語特性や文化に依存することがある
Railsは？ =&gt; 設定より規約、考えなくていいことを増やす
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 77

![Page Image](https://bcdn.docswell.com/page/VEN3N84DE8.jpg)

全体を振り返る
● チームやプロダクト文化にあったライブラリ選定が必要
=&gt; そのために他の選択肢を知っておくと良いよね（このトーク）
全部 / SQLの発行責任のみ / 型安全 / 静的検査
● t_wadaさん「技術の進歩は「螺旋」である。」
他の言語の潮流を見ることも役にたつ（with AI文脈でも）
「dynamic!」：変化への順応と「修復」への事前キャッチアップ
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


# Page. 78

![Page Image](https://bcdn.docswell.com/page/Y799RKQ873.jpg)

なんだかんだ
ActiveRecord最高！！
Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.


