aniki - the orm as our great brother

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

Upload: karupanerura-xmp

Post on 19-Jul-2015

393 views

Category:

Documents


0 download

TRANSCRIPT

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

おわり