Soumettre la recherche
Mettre en ligne
俺がモデルだ!問題に立ち向かう
•
2 j'aime
•
1,350 vues
Akira Suenami
Suivre
TDD Boot Camp Fukuoka 2013で発表したLTの資料です。 http://tddbc.doorkeeper.jp/events/3472
Lire moins
Lire la suite
Signaler
Partager
Signaler
Partager
1 sur 12
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
Shintaro Kurachi
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
Daisuke Tamada
WebエンジニアがXR業界へ転職した話
WebエンジニアがXR業界へ転職した話
Hiroshi Masuda
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
Daisuke Tamada
20131209_buildinsidermeetup
20131209_buildinsidermeetup
kumake
RDRA DDD Agile
RDRA DDD Agile
増田 亨
110707 java se7_lt_tanaka
110707 java se7_lt_tanaka
Takayoshi Tanaka
Recommandé
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
Shintaro Kurachi
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
Daisuke Tamada
WebエンジニアがXR業界へ転職した話
WebエンジニアがXR業界へ転職した話
Hiroshi Masuda
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
Daisuke Tamada
20131209_buildinsidermeetup
20131209_buildinsidermeetup
kumake
RDRA DDD Agile
RDRA DDD Agile
増田 亨
110707 java se7_lt_tanaka
110707 java se7_lt_tanaka
Takayoshi Tanaka
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
Drecom Co., Ltd.
サービスクラス、その前に
サービスクラス、その前に
Yasutomo Uemori
20170710 hifive-test-meetup
20170710 hifive-test-meetup
Naoya Kojima
Kaleidox
Kaleidox
Tomoharu ASAMI
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。
Yutaka Horikawa
Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
20150531 phpcon kansai
20150531 phpcon kansai
kumamidori
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
啓 小笠原
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
概観テキストマイニング
概観テキストマイニング
tod esking
Tech fun rails_workshop
Tech fun rails_workshop
OMEGA (@equal_001)
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩み
haljik Seiji
Softlayer_bluemix-summit
Softlayer_bluemix-summit
Shuichi Yukimoto
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
鹿駆動勉強会 青江発表資料
鹿駆動勉強会 青江発表資料
Takashi Aoe
ブラウザだけで学ぶWebアプリ開発【デザイン編】
ブラウザだけで学ぶWebアプリ開発【デザイン編】
schoowebcampus
モバイルアプリパフォーマンス向上の道を踏み出す前に知っておきたいコト!@andousan
モバイルアプリパフォーマンス向上の道を踏み出す前に知っておきたいコト!@andousan
Andrey Chernov
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Yoichi KIKUCHI
糖質とプログラミングと私
糖質とプログラミングと私
Akira Suenami
糖質制限超入門
糖質制限超入門
Akira Suenami
Contenu connexe
Similaire à 俺がモデルだ!問題に立ち向かう
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
Drecom Co., Ltd.
サービスクラス、その前に
サービスクラス、その前に
Yasutomo Uemori
20170710 hifive-test-meetup
20170710 hifive-test-meetup
Naoya Kojima
Kaleidox
Kaleidox
Tomoharu ASAMI
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。
Yutaka Horikawa
Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
20150531 phpcon kansai
20150531 phpcon kansai
kumamidori
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
啓 小笠原
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
概観テキストマイニング
概観テキストマイニング
tod esking
Tech fun rails_workshop
Tech fun rails_workshop
OMEGA (@equal_001)
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩み
haljik Seiji
Softlayer_bluemix-summit
Softlayer_bluemix-summit
Shuichi Yukimoto
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
鹿駆動勉強会 青江発表資料
鹿駆動勉強会 青江発表資料
Takashi Aoe
ブラウザだけで学ぶWebアプリ開発【デザイン編】
ブラウザだけで学ぶWebアプリ開発【デザイン編】
schoowebcampus
モバイルアプリパフォーマンス向上の道を踏み出す前に知っておきたいコト!@andousan
モバイルアプリパフォーマンス向上の道を踏み出す前に知っておきたいコト!@andousan
Andrey Chernov
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Yoichi KIKUCHI
Similaire à 俺がモデルだ!問題に立ち向かう
(20)
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
サービスクラス、その前に
サービスクラス、その前に
20170710 hifive-test-meetup
20170710 hifive-test-meetup
Kaleidox
Kaleidox
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。
Ruby on Rails 入門
Ruby on Rails 入門
20150531 phpcon kansai
20150531 phpcon kansai
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
概観テキストマイニング
概観テキストマイニング
Tech fun rails_workshop
Tech fun rails_workshop
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩み
Softlayer_bluemix-summit
Softlayer_bluemix-summit
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
鹿駆動勉強会 青江発表資料
鹿駆動勉強会 青江発表資料
ブラウザだけで学ぶWebアプリ開発【デザイン編】
ブラウザだけで学ぶWebアプリ開発【デザイン編】
モバイルアプリパフォーマンス向上の道を踏み出す前に知っておきたいコト!@andousan
モバイルアプリパフォーマンス向上の道を踏み出す前に知っておきたいコト!@andousan
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Plus de Akira Suenami
糖質とプログラミングと私
糖質とプログラミングと私
Akira Suenami
糖質制限超入門
糖質制限超入門
Akira Suenami
今年かかった麻疹まとめ2014
今年かかった麻疹まとめ2014
Akira Suenami
マジックビーンズ
マジックビーンズ
Akira Suenami
Symfony温泉2014 自己紹介LT
Symfony温泉2014 自己紹介LT
Akira Suenami
シュードキーニートフリーク
シュードキーニートフリーク
Akira Suenami
Tdd is really dead ?
Tdd is really dead ?
Akira Suenami
Wip prをやってみた
Wip prをやってみた
Akira Suenami
今年かかった麻疹まとめ
今年かかった麻疹まとめ
Akira Suenami
デザイナのためのGit講座
デザイナのためのGit講座
Akira Suenami
アジャイル開発振り返り
アジャイル開発振り返り
Akira Suenami
Xp祭りに行ってきた
Xp祭りに行ってきた
Akira Suenami
テストとの上手な付き合い方
テストとの上手な付き合い方
Akira Suenami
Plus de Akira Suenami
(13)
糖質とプログラミングと私
糖質とプログラミングと私
糖質制限超入門
糖質制限超入門
今年かかった麻疹まとめ2014
今年かかった麻疹まとめ2014
マジックビーンズ
マジックビーンズ
Symfony温泉2014 自己紹介LT
Symfony温泉2014 自己紹介LT
シュードキーニートフリーク
シュードキーニートフリーク
Tdd is really dead ?
Tdd is really dead ?
Wip prをやってみた
Wip prをやってみた
今年かかった麻疹まとめ
今年かかった麻疹まとめ
デザイナのためのGit講座
デザイナのためのGit講座
アジャイル開発振り返り
アジャイル開発振り返り
Xp祭りに行ってきた
Xp祭りに行ってきた
テストとの上手な付き合い方
テストとの上手な付き合い方
俺がモデルだ!問題に立ち向かう
1.
俺がモデルだ!問題 に立ち向かう 末並 晃 (
@a_suenami )
2.
お断り あまりテストの話はしません!
3.
自己紹介 • 株式会社ファクトリアル • Web系受託プログラマ •
RubyとかPHPとか(最近Scalaに興味) • 好きなもの • テスト • オブジェクト指向
4.
俺がモデルだ!問題とは? • システム開発においてビジネスロジックを記述するレイ ヤーがどこなのか問題 • 某アニメの有名な台詞をパロってこう呼ばれる完全な社 内用語 •
データベースエンジニアは自分の設計したRDBこそがビ ジネスロジックだと言い、アプリケーションエンジニア は自分の実装したドメインモデル/サービスこそがビジ ネスロジックだと主張する
5.
例1. 最新の記事 CREATE VIEW
latest_articles AS SELECT * FROM articles WHERE created_at >= CURRENT_DATE - INTERVAL 7 day def latest where(“created_at >= ?”, Date.today - 7) end データビューを作成 モデルにメソッドを実装
6.
例2. 管理者と一般ユーザ
7.
参考書籍
8.
EAV(エンティティ・アトリビュート・バリュー) EAV(エンティティ・アトリビュート・バリュー) • 可変属性をサポートするために、汎用的な属性テーブル を使用して拡張性を持たせておくアンチパターン。 • 属性を自由に追加可能にはなるが、その各属性に対して 制約を設定することができない。 •
このアンチパターンへの解決策としてサブタイプのモデ リング方法が紹介されている。 • シングルテーブル継承、具象テーブル継承、クラス テーブル継承 • メタデータはメタデータのために使いましょう
9.
マテリアライズド・ビュー • ビューの全レコードを実テーブルにキャッシュする • ビューを構成しているテーブルに挿入/更新があった場 合にはマテリアライズド・ビューをリフレッシュする •
マテリアライズド・ビューは実テーブルのため、以下の 特性を利用できる • インデックスの利用 • 主キーの存在 • その他(シャーディング等)
10.
仕様(Specification)パターン • あるオブジェクトの仕様を別オブジェクトの責務として 切り出すというデザインパターン • 仕様クラスは以下の振る舞いを持つ •
評価(オブジェクトが仕様を満たしているかどうか判 定する) • 選択(仕様を満たしているオブジェクトを抽出する) • 生成(仕様を満たすオブジェクトを新たに生成する) • ビジネスロジックを単一のクラスに閉じ込めることが
11.
結論 「俺が…俺たちが…モデルだ!」
12.
結論 • TDDを覚えるとコードを書くのが楽しくなる • たくさんテストを書きたくなるし、そのためにたくさん のプロダクトコードも書きたくなる •
不安のコントロールの方法としてデータベース派の人た ちのことがわかるといいのでは?
Télécharger maintenant