Model on Grails
-
Upload
yukei-wachi -
Category
Technology
-
view
106 -
download
0
description
Transcript of Model on Grails
Model On Grails~ DCIアーキテクチャへの道すじ ~
G * Work!op 2010.11.09
和智 右桂 @digitalsoul0124
和智 右桂
JavaEE勉強会 所属
InfoQ Japanでときどき翻訳
Yukei Wachi
@digitalsoul0124Digital Romanticism
http://d.hatena.ne.jp/digitalsoul
ネコ好き
Photo by @digitalsoul0124 All rights reserved.
思想系プログラマ
Photo by @digitalsoul0124 All rights reserved.
アジェンダ•導入•先駆者たちが遺したもの•オブジェクト指向の死角•DCIアーキテクチャ•サンプル
スライド中で使用されている画像について、その著作権の全部または一部は、 クレジットに示した著者によって保留されています。
また、スライド中で使用されている画像の著者、およびそこに登場する人物は、スライドの内容とは関係ありません。
導入
Introduction
DCIアーキテクチャSun Rise http://www.flickr.com/photos/umairmohsin/2068422156/ by Umair Mohsin
Jim Coplien and Trygve Reenskaug
Jim Coplien and Trygve Reenskaug http://www.flickr.com/photos/lassekoskela/2449622395/ by lassekoskela All rights reserved.
モデル・ビュー・コントローラ - Trygve Reeenskaughttp://d.hatena.ne.jp/digitalsoul/20100913/1284330448
組織パターン - James Coplienhttp://d.hatena.ne.jp/digitalsoul/20100913/1284330448
先駆者たちが遺したものHe"ta#
Object O"ented
1963
Doug EnglebartLet's play cat and mouse http://www.flickr.com/photos/sondyaustin/2238102441/ by Sandy Austin
マウスの発明
1972
Alan KayAlan Kay and the prototype of Dynabook, pt. 5 http://www.flickr.com/photos/mwichary/3010032738/ by Marcin Wichary
ダイナブック構想
1979
Trygve Reenskaug
Controller
View
Model
MVCの提唱
コンピュータとは
Ahchan and iPad http://www.flickr.com/photos/jetalone/4694268229/ by jetalone
人間精神を拡張したもの
グラフィカルユーザインタフェース と
MCD_Detailed_machine http://www.flickr.com/photos/31274959@N08/4968548272/ by Siemens PLM Software
GUI
Object-o"ented langua#オブジェクト指向言語
メンタルモデルを写し取るもの出典:http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html by Trygve M. H. Reenskaug
Mental ModelMVCとは
精神の構造を映し出すもの
モデルとは世界のとらえ方
Boston Atheneum-Astrolabe Light Fixture by Phil Manker http://www.flickr.com/photos/philmanker/3358357560/ by Phil Manker
インタフェースを通じて
モデルを操作するH2O Kansas / Installation view http://www.flickr.com/photos/topekalibrary/4598238661/ by Topeka & Shawnee County Public Library
Interface
直接操作メタファ
Direct manipulation metaphor
connection http://www.flickr.com/photos/mistoacrilico/4982964217/ by MistoAcrilico
構造によって思考をとらえる
Para%gm
NYC - MoMA: Design and the Elastic Mind - Emergent Surface http://www.flickr.com/photos/wallyg/2373587283/ by wallyg
オブジェクト指向の死角
Blind side
Readability
Red pen stuck between the pages of a book http://www.flickr.com/photos/horiavarlan/4289811229/ by Horia Varlan
via “The Common Sense of Object Orientated Programming”
“システムがどう機能するかということについて、コードが全てを明らかにしているわけではない。”
- Design Patterns
実行時の構成
コンパイル時の構成
Photo by @digitalsoul0124 All rights reserved.四尺玉 4-shaku dama http://www.flickr.com/photos/mmqb01/3644955925/ by alde
なぜ?
Weird and lost... http://www.flickr.com/photos/h-k-d/4806183950/ by h.koppdelaney
何が問題なのか?
思考 と 行動
構造 とふるまい
ikea hack cat tower http://www.flickr.com/photos/nrabinowitz/4416084196/ by nwrabinowitz
&inking
doing
構造をとらえ、表現することはできた
しかし...Modern Structures http://www.flickr.com/photos/ourcloset/4781534198/ by The Photography Factory
Structure
全体としてのふるまいをとらえることができなかった
Time Machine Clockwork http://www.flickr.com/photos/7969902@N07/476909988/in/photostream/ by Pierre J.
Behavi'r
その結果...
断片化されたアルゴリズムpuzzling http://www.flickr.com/photos/torisan3500/3837736087/ by torisan3500
継承による可変性の担保
Billiard Ball Blur http://www.flickr.com/photos/31572898@N06/4304781964/ by JAS_photo
DCIアーキテクチャ
Data
Interaction
Context
“全てがクラス”
ではなかったのかも?lego_relativity http://www.flickr.com/photos/skip/42288914/in/photostream/ by Skip The Budgie
思考 と 行動
異なる位相 異なる境界ML3K Series: 10 of 17 http://www.flickr.com/photos/jefharris/464574462/ by Jef Harris
構造を表現するのはデータ
Etcetera Domain Class Diagram http://www.flickr.com/photos/benkreeger/4356876712/ by Ben and Laura Kreeger
Data
ふるまいについて考える時...
Behavi'r
ペルソナ4 http://www.flickr.com/photos/hobby_blog/3340775781/ by hobby_blog
ペルソナ4
Role
僕らはクラスよりもロールのことを考えている
データはロールを演じるための能力を持つ
Fitness Model 1 http://www.flickr.com/photos/spunkinator/3474090193/ by ★ spunkinator
Capacity
データとロールを紐づけるもの
それが...Hands & Rings on Bible http://www.flickr.com/photos/gregkendallball/552440766/ by gregkendallball
コンテキスト
マクロスfrontier http://www.flickr.com/photos/hobby_blog/3340831827 by hobby_blog
マクロス frontierContext
ata
ontext
nteractionD wiDe - zinken welanD http://www.flickr.com/photos/evaekeblad/2131712842/ by Eva the Weaver
c http://www.flickr.com/photos/toofarnorth/1664666328/ by TooFarNorthSTAR WARS http://www.flickr.com/photos/hobby_blog/138259452/ by hobby_blog
課題は...
Challen#
コンパイル時の分離
実行時の融合Rings and Things http://www.flickr.com/photos/goldiekatsu/4768306645/ by goldiekatsu
Trait
Groovyならmixin.
public class RoleUtil {
static <T> T assign(assignee, Class<T> role) {
assignee.metaClass.mixin role
assignee.asType role
}
}
サンプル
Sample
給与計算システム
Mixed Cash http://www.flickr.com/photos/crazyneighborlady/415534472/ by stopnlook
仕様
基本は時給制
時給は従業員ごとに定められている
商品が売れれば、値段に応じたインセンティブが付く
インセンティブの割合は従業員ランクによって決まる
SENIOR : 3%
MEMBER : 2%
NOVICE : 1%
給与計算は月単位で行う
構造
従業員
ランク
売り上げ票タイムカード
商品
Data
HQLSELECT
sum(salesReceipt.item.price), salesReceipt.employee.id
FROM
SalesReceipt salesReceipt
WHERE
date >= :startOfMonth and :endOfMonth >= date
GROUP BY
salesReceipt.employee.id
データにロールを割り当てる
レコード1
○○合計取得
レコード2レコード3レコード4レコード5
ふるまい(給与計算)
給与計算給与計算サービス
時給合計
売り上げ合計
Role 従業員ごとに給与計算を行う
インセンティブ計算
Demoデモ
最後に
One more &ing...
単なるギミックではない
安定性と可変性
構造は安定し、ふるまいは変化する
清水寺 Kiyomizu Dera http://www.flickr.com/photos/chiszeo/4510636080/ by Chi (in Japan)
システムレベルのふるまいを考える
全体観flock of birds http://www.flickr.com/photos/marfis75/3279307888/ by marfis75
洞察
メンタルモデルとの整合性
"Girl before a mirror" by Picasso, MoMA http://www.flickr.com/photos/25730976@N06/3908069402/ by conxa.roda
ソフトウェアは一編の小説である
緻密に構築され美しく語られなければならない
ご質問はありますか?
ありがとうございました!Photo by @digitalsoul0124 All rights reserved.