Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Aniki - The ORM as our great brother.

1,483 views

Published on

https://github.com/karupanerura/Aniki

  • Be the first to comment

  • Be the first to like this

Aniki - The ORM as our great brother.

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

×