SlideShare a Scribd company logo
1 of 56
Download to read offline
Aniki
〜たよりがいのあるORM〜
id:karupanerura
感謝とお詫び
参加頂きありがとうございます。
準備が滞り急な日程となってしまいすみま
せんでした。
皆様のお陰で無事開催することができました。
次回からはもうちょっと早く告知します。。
あばうとみー
id:karupanerura
Perl/Java/JS/elisp/etc..
Mobile Factory, Inc.
Gotanda.pm リーダー
#3 ご来場
まことに
ありがとうございます!
DBプログラミング入門
寄稿しました
Perl Hackers Hub 買ってください!!
2014/12/23 発売!!
あこがれのあのコーナーにぼくの記事が!
本題
O/R Mapper
Objectに
RDBを
Mapping
べんり
Perlの
ORM
DBIx::Class
特徴
でかい
複雑
高機能
イイトコ
リレーション
よしなになる
とにかく
べんり
ヤナトコ
なかで
なにやってるのか
ようわからん
IFが
なんか
古い気がする...
Teng
特徴
ちいさい
簡潔
低機能
イイトコ
かんたん
べんり
IFがモダン
ヤナトコ
リレーション
つらい
SearchJoinedも
あるけど
もうちょっと
直感的に
つかいたい
なんとか
したい
Aniki
特徴
そこそこちいさい
そこそこ簡潔
そこそこ高機能
Tengに
リレーションが
ついた
みたいなやつ
Schema
DBIx::Schema::DSL
を
採用
Schemaクラス生成
とか
煩わしいこと
しないで済む
Migrationも
かんたんに
実装できる
(未実装だけど…)
外部キー制約から
リレーション情報
を取得
制約だけ書けば
それを使って
関連する
レコードを取得可
Plugin
Mooを採用
Roleとして
Pluginが
書ける
必要な属性が
なければ
applyできない
とかできる
もちろん
RowのPluginも
書ける
ここから
まじめな
資料
シンプルにするために
DBIx::Schema::DSLを採用
Mooを採用
5.14.2以降のみをサポート
DBIx::Schema::DSLとは
id:songmuさん作
DSLでSchemaが書ける
DDL(CREATE TABLE)も生成できる
SQL::Translator::Schemaが取れる
スキーマの情報が得られる
スキーマの情報とは?
どんなテーブルがあるのか
テーブルにどんなカラムがあるのか
PRIMARY KEYはなにか
テーブルの制約条件はなにか
ほかもろもろが分かる
補足1: Tengの場合
Teng::Schema::Dumper
データベースからスキーマ情報を
dumpしてDSLにする
Teng::Schema::Loader
データベースから動的にスキーマ
情報を得る
補足2: DBICの場合
Schemaクラスをテーブル毎に定義
DBIx::Class::Coreを継承
アクセサにテーブル名とかセット
していく
DBIx::Class::Schema::Loader
dbicdump(1)とかで自動生成可
Mooとは
Mo[ou]seのちっちゃい版
さいきんはこれがナウいらしい
DSLでアクセサとか生やせる
Roleという機能でTraitみたいなこと
できる
Mooとは
meta object protocolがある
クラスのメタデータにアクセス可
メタプログラミングしやすい
ただし、Mooseが必要
AnikiはMouseにした
DEMO
まとめ
DBIx::ClassもTengもべんり
DBIx::Schema::DSLべんり
Moo/Mo[ou]seべんり
おわり

More Related Content

Viewers also liked

HAProxy tech talk
HAProxy tech talkHAProxy tech talk
HAProxy tech talk
icebourg
 

Viewers also liked (7)

HA Proxy logs - The Art of Logging
HA Proxy logs - The Art of LoggingHA Proxy logs - The Art of Logging
HA Proxy logs - The Art of Logging
 
ChinaNetCloud Training - HAProxy Intro
ChinaNetCloud Training - HAProxy IntroChinaNetCloud Training - HAProxy Intro
ChinaNetCloud Training - HAProxy Intro
 
HAProxy
HAProxy HAProxy
HAProxy
 
HAProxy tech talk
HAProxy tech talkHAProxy tech talk
HAProxy tech talk
 
HAProxy scale out using open source
HAProxy scale out using open sourceHAProxy scale out using open source
HAProxy scale out using open source
 
Keepalived & HA-Proxy as an alternative to commercial loadbalancer - August 2014
Keepalived & HA-Proxy as an alternative to commercial loadbalancer - August 2014Keepalived & HA-Proxy as an alternative to commercial loadbalancer - August 2014
Keepalived & HA-Proxy as an alternative to commercial loadbalancer - August 2014
 
Introduction to Haproxy
Introduction to HaproxyIntroduction to Haproxy
Introduction to Haproxy
 

More from karupanerura

モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤
karupanerura
 
mysqlcasual6-next-key-lock
mysqlcasual6-next-key-lockmysqlcasual6-next-key-lock
mysqlcasual6-next-key-lock
karupanerura
 

More from karupanerura (20)

Perl5 VS JSON
Perl5 VS JSONPerl5 VS JSON
Perl5 VS JSON
 
コンテキストと仲良く
コンテキストと仲良くコンテキストと仲良く
コンテキストと仲良く
 
The plan of Aniki 2.0
The plan of Aniki 2.0The plan of Aniki 2.0
The plan of Aniki 2.0
 
Aniki::Internal
Aniki::InternalAniki::Internal
Aniki::Internal
 
The Crystal language *recently* update
The Crystal language *recently* updateThe Crystal language *recently* update
The Crystal language *recently* update
 
KOWAZA for mackerel
KOWAZA for mackerelKOWAZA for mackerel
KOWAZA for mackerel
 
TIme::Moment+Time::Strptime=
TIme::Moment+Time::Strptime=TIme::Moment+Time::Strptime=
TIme::Moment+Time::Strptime=
 
DateTimeX::Moment
DateTimeX::MomentDateTimeX::Moment
DateTimeX::Moment
 
Aniki has come
Aniki has comeAniki has come
Aniki has come
 
Optimize perl5 code for perfomance freaks
Optimize perl5 code for perfomance freaksOptimize perl5 code for perfomance freaks
Optimize perl5 code for perfomance freaks
 
Technology for reduce of mistakes - うっかりをなくす技術
Technology for reduce of mistakes - うっかりをなくす技術Technology for reduce of mistakes - うっかりをなくす技術
Technology for reduce of mistakes - うっかりをなくす技術
 
router-simple.cr
router-simple.crrouter-simple.cr
router-simple.cr
 
Why we use mruby with Perl5?
Why we use mruby with Perl5?Why we use mruby with Perl5?
Why we use mruby with Perl5?
 
はかたの塩
はかたの塩はかたの塩
はかたの塩
 
Gotanda.pmの紹介
Gotanda.pmの紹介Gotanda.pmの紹介
Gotanda.pmの紹介
 
すいすいSwift
すいすいSwiftすいすいSwift
すいすいSwift
 
Perlにおけるclass実装パターン
Perlにおけるclass実装パターンPerlにおけるclass実装パターン
Perlにおけるclass実装パターン
 
モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤
 
Perl5 meta programming
Perl5 meta programmingPerl5 meta programming
Perl5 meta programming
 
mysqlcasual6-next-key-lock
mysqlcasual6-next-key-lockmysqlcasual6-next-key-lock
mysqlcasual6-next-key-lock
 

Aniki - The ORM as our great brother.