Aniki - The ORM as our great brother.

56
Aniki 〜たよりがいのあるORM〜 id:karupanerura

Transcript of Aniki - The ORM as our great brother.

Page 1: Aniki - The ORM as our great brother.

Aniki 〜たよりがいのあるORM〜

id:karupanerura

Page 2: Aniki - The ORM as our great brother.

感謝とお詫び

参加頂きありがとうございます。

準備が滞り急な日程となってしまいすみませんでした。

皆様のお陰で無事開催することができました。

次回からはもうちょっと早く告知します。。

Page 3: Aniki - The ORM as our great brother.

あばうとみー

id:karupanerura

Perl/Java/JS/elisp/etc..

Mobile Factory, Inc.

Gotanda.pm リーダー

#3 ご来場

まことに

ありがとうございます!

Page 4: Aniki - The ORM as our great brother.

DBプログラミング入門寄稿しました

Perl Hackers Hub 買ってください!!

2014/12/23 発売!!

あこがれのあのコーナーにぼくの記事が!

Page 5: Aniki - The ORM as our great brother.

本題

Page 6: Aniki - The ORM as our great brother.

O/R Mapper

Page 7: Aniki - The ORM as our great brother.

Objectに

Page 8: Aniki - The ORM as our great brother.

RDBを

Page 9: Aniki - The ORM as our great brother.

Mapping

Page 10: Aniki - The ORM as our great brother.

べんり

Page 11: Aniki - The ORM as our great brother.

Perlの ORM

Page 12: Aniki - The ORM as our great brother.

DBIx::Class

Page 13: Aniki - The ORM as our great brother.

特徴

Page 14: Aniki - The ORM as our great brother.

でかい 複雑 高機能

Page 15: Aniki - The ORM as our great brother.

イイトコ

Page 16: Aniki - The ORM as our great brother.

リレーション よしなになる

Page 17: Aniki - The ORM as our great brother.

とにかく べんり

Page 18: Aniki - The ORM as our great brother.

ヤナトコ

Page 19: Aniki - The ORM as our great brother.

なかで なにやってるのか ようわからん

Page 20: Aniki - The ORM as our great brother.

IFが なんか

古い気がする...

Page 21: Aniki - The ORM as our great brother.

Teng

Page 22: Aniki - The ORM as our great brother.

特徴

Page 23: Aniki - The ORM as our great brother.

ちいさい 簡潔 低機能

Page 24: Aniki - The ORM as our great brother.

イイトコ

Page 25: Aniki - The ORM as our great brother.

かんたん べんり

Page 26: Aniki - The ORM as our great brother.

IFがモダン

Page 27: Aniki - The ORM as our great brother.

ヤナトコ

Page 28: Aniki - The ORM as our great brother.

リレーション つらい

Page 29: Aniki - The ORM as our great brother.

SearchJoinedも あるけど

もうちょっと 直感的に つかいたい

Page 30: Aniki - The ORM as our great brother.

なんとか したい

Page 31: Aniki - The ORM as our great brother.

Aniki

Page 32: Aniki - The ORM as our great brother.

特徴

Page 33: Aniki - The ORM as our great brother.

そこそこちいさい そこそこ簡潔 そこそこ高機能

Page 34: Aniki - The ORM as our great brother.

Tengに リレーションが

ついた みたいなやつ

Page 35: Aniki - The ORM as our great brother.

Schema

Page 36: Aniki - The ORM as our great brother.

DBIx::Schema::DSL を 採用

Page 37: Aniki - The ORM as our great brother.

Schemaクラス生成 とか

煩わしいこと しないで済む

Page 38: Aniki - The ORM as our great brother.

Migrationも かんたんに 実装できる

(未実装だけど…)

Page 39: Aniki - The ORM as our great brother.

外部キー制約から リレーション情報

を取得

Page 40: Aniki - The ORM as our great brother.

制約だけ書けば それを使って 関連する

レコードを取得可

Page 41: Aniki - The ORM as our great brother.

Plugin

Page 42: Aniki - The ORM as our great brother.

Mooを採用

Page 43: Aniki - The ORM as our great brother.

Roleとして Pluginが 書ける

Page 44: Aniki - The ORM as our great brother.

必要な属性が なければ

applyできない とかできる

Page 45: Aniki - The ORM as our great brother.

もちろん RowのPluginも

書ける

Page 46: Aniki - The ORM as our great brother.

ここから まじめな 資料

Page 47: Aniki - The ORM as our great brother.

シンプルにするために

DBIx::Schema::DSLを採用

Mooを採用

5.14.2以降のみをサポート

Page 48: Aniki - The ORM as our great brother.

DBIx::Schema::DSLとは

id:songmuさん作

DSLでSchemaが書ける

DDL(CREATE TABLE)も生成できる

SQL::Translator::Schemaが取れる

スキーマの情報が得られる

Page 49: Aniki - The ORM as our great brother.

スキーマの情報とは?

どんなテーブルがあるのか

テーブルにどんなカラムがあるのか

PRIMARY KEYはなにか

テーブルの制約条件はなにか

ほかもろもろが分かる

Page 50: Aniki - The ORM as our great brother.

補足1: Tengの場合

Teng::Schema::Dumper

データベースからスキーマ情報をdumpしてDSLにする

Teng::Schema::Loader

データベースから動的にスキーマ情報を得る

Page 51: Aniki - The ORM as our great brother.

補足2: DBICの場合

Schemaクラスをテーブル毎に定義

DBIx::Class::Coreを継承

アクセサにテーブル名とかセットしていく

DBIx::Class::Schema::Loader

dbicdump(1)とかで自動生成可

Page 52: Aniki - The ORM as our great brother.

Mooとは

Mo[ou]seのちっちゃい版

さいきんはこれがナウいらしい

DSLでアクセサとか生やせる

Roleという機能でTraitみたいなことできる

Page 53: Aniki - The ORM as our great brother.

Mooとは

meta object protocolがある

クラスのメタデータにアクセス可

メタプログラミングしやすい

ただし、Mooseが必要

AnikiはMouseにした

Page 54: Aniki - The ORM as our great brother.

DEMO

Page 55: Aniki - The ORM as our great brother.

まとめ

DBIx::ClassもTengもべんり

DBIx::Schema::DSLべんり

Moo/Mo[ou]seべんり

Page 56: Aniki - The ORM as our great brother.

おわり