DCIã¨DDD DCIã¢ã¼ããã¯ã㣠- Trygve Reenskaug and James O. Coplien - Digital Romanticismãèªãã ããDCI meetup w/ @jcoplien for Rubyistsã«åå ããããã¦ãDCIã¢ã¼ããã¯ãã£ã«ã¤ãã¦èãã¦ããã DCIã¯ã¡ãã»ã¼ã¸ããã·ã³ã°æåã ããã®Smalltalkçãªãªãã¸ã§ã¯ãæåã®åçã¯ãããã©ãå®è£ ãå«ã ã ãããããDCIã¢ã¼ããã¯ãã£æå±ã®ç®çã¯ãã¡ã³ã¿ã«ã¢ãã«ã®ã»ãã³ãã£ã¯ã¹ã»ã®ã£ãããåãããã¨ã ãDDDã®ãã¦ããã¿ã¹è¨èªãããã¡ã³ã¿ã«ã¢ãã«ã®ã»ãã³ãã£ã¯ã¹ã»ã®ã£ãããåããããã®è¦ç´ ã§ããææ³ã ãã ããããµã¤ãã«DDDï¼ãã¡ã¤ã³é§åè¨è¨ï¼ãããã°ããã¨æã£ãã DCIã¸ã®çå DCIã§ã¯ãããªãã¸ã§ã¯ãã®ã¢ã¤ãã³ãã£ãã£ãã«ãã ããããã¦ãããã¨ã§ãã¢ã¼ããã¯ãã£ãè¤éã«ãªã£ã¦
uninclude ã使ã£ã¦ DCI ãããã¨ãã¦ãç¾å®çãªã®ãã¨ãã話ã«ãªã£ã¦ããã®ã ãã©ããããã¾ãæ²è ã ãªãã¨æã£ã¦ãããã ã³ã¼ãçãªå¯èªæ§ã¨ãã¯ä¸æ¦ç½®ãã¨ãã¦ãé度ã¯ã©ããªã®ã£ã¦ãã¨ã ãã¨ããããèããã ç¾ç¶ã extend åã³ unextend ã¯ãããå®è¡ããç¬éã« Ruby VM ä¸ã®ã¡ã½ãããã£ãã·ã¥ãå ¨é¨é£ã°ã(ããèªèãã£ã¦ãããªãå¤åãã£ã¦ã)å ¨é¨ã¨ããã®ã¯æ¬å½ã«å ¨é¨ã§ã class A; end class B; end module C; end a = A.new b = B.new b.extend(C) ã¨ããã¨ãã A ã®ã¯ã©ã¹ã®ã¡ã½ãããã£ãã·ã¥ããé£ã¶ã¯ã(èªèéããããããªããã©)ãããã¯çµæ§ãã«ã«ãªããªãã¦ãåé¡ã ã¨æããã§ã SimpleDelegator ã Forwardable ã使ã£ã¦ã©ããã¼ãã¯ããã°ããã ããã¨ããçµè«ã«ããã£ã¦
NOTE: æä¸é¨ã«è¿½è¨ãããã¾ãã ããè¨ããã話ã¨ãã¦ã DCI ãªãã¦å®è£ ãé¢åãªä¸ã«å¤¢ã®å®è£ ã®è©±ããã¦ãããç¾å®è§£ã¨ãã¦ã¯ Service ã¯ã©ã¹ãç¨ãã¦å®è£ ããã°ã·ã³ãã«ãªå®è£ ã«ãªãã®ã ããããããã£ããã®ã¯å¿ è¦ãªãã®ã ãã¨ãããæè¦ã¸ã®è¿çã§ãã ãããã£ãæ¹å¤ã®æèã®éã Service ã¯ã©ã¹ã¨ããã®ãã©ãã® Service ã¯ã©ã¹ãæãã¦ããã®ãããåé¡ãªã®ã§ããã DDD ã«ããã Service ã§ã¯ãªãããã«æããã®ã§ããããã PofEAA ãªã©ã§èªããã Service Layer ãªã©ãæãã¦ããã¨æããã¾ã(éããªãããè¨ã£ã¦ãã ãã)ã PofEAA ã«ããã Service Layer(以å¾ã Service ã¨å¼ã¶ãã®ã¯ãã® PofEAA ã«ããã Service ã§ã)ã¯ãã¡ã¤ã³ãªãã¸ã§ã¯ãããã¢ããªã±ã¼ã·ã§ã³ãã¸ãã¯ãåãé¢ããã¨ã主ç®çã¨ãã¦ãã¾
ãã®ãã¼ãã§ã¯ãåäººã§æºå¸¯å¯è½ãªæ å ±æä½æ©å¨ã®åºç¾ã¨ãåä¾ãã¡ã¨å¤§äººãã¡ããã®å©ç¨ã«ãã£ã¦åããå½±é¿ã«ã¤ãã¦ã®èå¯ãè¡ãªãã¾ããã¾ãã§ç©ºæ³ç§å¦å°èª¬ã®ããã ã¨æãããã§ãããããã©ãç¾å¨ã®ä¸ã®ä¸ã®å°ååã¨ä½ä¾¡æ ¼åã®è¶¨å¢ãæãã°ãããã§è°è«ãããå¤ãã®æ¦å¿µãè¿ããã¡ã«ç¾å®åãããã¨ã¯ãã»ã¼ç¢ºå®ãªãã¨ã§ãã é·å¹´ã«ããããæè¡ãæ´»ç¨ãã¦ç¤¾ä¼åé¡ãæããã¨ããã®ãã²ã¨ã¤ã®ä¼çµ±ã§ãã:ãã¹ã©ã ãåé¡ï¼ãªãã°ä½ã³ã¹ãã®ä½å® ãä½ãã¾ãããï¼ãããã¬ããè²·ãä½è£ããªãï¼ã§ã¯æ¬²ããæã«è²·ããããã«ãå®ä¾¡ãªãã®ãä½ãã¾ãããããã¨ãæ¯æããæ¸ãåã«å£ããã¨ãã¦ããï¼ããåä¾ãã¡ã¯å¦ãã§ããªãããæè²ã³ã¹ããé«ãããï¼ã§ã¯ãããªãã®åä¾ãã¡ããã¹ãã«åæ ¼ããã®ãä¿è¨¼ãããæè²ã¡ã«ãä½ãã¾ãããï¼ã æ®å¿µãªããããããã®ãæããã®ã»ã¨ãã©ã¯ãåã«ãµãã®ä¸ã«ãã³ããå¡ã£ã¦ããã ãã§ããæåã®åé¡ã®åå ã¯æ®ãããã¾ã¾
Use-Case 2.0 re-focuses on the essentials and offers a slimmed down, leaner way of working, for software teams seeking the benefits of iterative, incremental development at an enterprise level. use-case 2.0 provides an adaptable, lean and scalable approach Use-Case 2.0 is ideal to work with Agile frameworks like Scrum at Scale, Disciplined Agile and SAFe. You see the big picture and help your team
以ä¸åå¼·ä¼(DCI hansei meetup)ç¨ã®ã¡ã¢ã§ãã èªåã®ç«å ´ å顿èã¯çè§£ã§ãããããããã®åé¡ã¯ä»¥åããçè§£ããã¦ãããã®ã§ãããããããã®æ¹æ³è«çã§å¸¸ã«åé¡ã«ãªã£ã¦ãããã®ã§ãããDCIã§è§£æ±ºçã¨ãã¦ç¤ºããã¦ãããã®ãããã以å¤ã®æ¹æ³ã«æ¯ã¹ã¦ç¹ã«ãããã¦ããã¨ã¯æããªãã DCIã«é¢ããèªåã®çè§£ DCIã¨ã¯ ã¹ããªãã¥ã¢ã«ãªãã¨ãå¥ã¨ããã°MVCã¨åæ§ã®ã¢ã¼ããã¯ãã£ãã¿ã¼ã³ã http://d.hatena.ne.jp/digitalsoul/20100131/1264925022 ã³ã³ããã¹ã ã¦ã¼ã¶ã¼ã¨ã®ç¸äºä½ç¨ãããã½ããã¦ã§ã¢ãã¤ããéã«ã¯ãã¦ã¼ã¶ã®æå³ã¨ã½ããã¦ã§ã¢ã®å é¨ã§èµ·ãã¦ãããã¨ãåæãããå¿ è¦ããããå ·ä½çã«ã¯GUIã¢ããªã±ã¼ã·ã§ã³ã®æ§ç¯æãªã©ã DCIã解決ãããã¨ãã¦ããåé¡ å¾æ¥ã®MVVã®éå ·(ãªãã¸ã§ã¯ãæåã®éå ·)ã§ã¯ãããããããªä¸å ·
è¶ éè¦è¿½è¨ ã¾ãã§é³©ããã®ã¹ã©ã¤ãã§DCIã«ã¤ãã¦çè§£ããã¤ããã«ãªãã®å±éºã ãããããæ¹ãããã§ãããã㦠d.hatena.ne.jp/digitalsoul/20⦠ãèªã¿ã¾ããããDCIã¯ã¨ã³ãã¦ã¼ã¶ã®ã¡ã³ã¿ã«ã¢ãã«ãå®è£ ã«è½ã¨ãè¾¼ãããã®è¨è¨ãã©ãã¤ã ã§ãâ Naoto Takai (@takai) December 27, 2012 ã¨ã®ãã¨ãªã®ã§ããã®ã¹ã©ã¤ããåèã«ããã®ã¯ããã¦ãã ããã å è¨äº ä¼ç¤¾ã§ DCI ã®è©±ããã¾ããã è³æã¯ãã¡ãã§ãã ããããªäººããå ¨ç¶ä¾¿å©ãããããªãã¨è©å¤ã§ããã俺ã®ä¼ãæ¹ãæªãâ¦â¦
æè¿DDDãDCIãªã©ã®ãã¼ã¯ã¼ããæ°ã«ãªã£ã¦ããã®ã§ããããããªæã«ä¸è¨ã®ãããªåå¼·ä¼ãéãããã®ãç¥ã£ãã®ã§åå ãã¦ã¿ã¾ããã 10æ26æ¥ è±ãã¤ãï¼ãã¡ã¤ã³å± é å±ï½ã¢ãã«é§åããã°ã©ãã³ã°ã®éãï½(æ±äº¬é½) DDDãDCIãæ°ã«ãªã£ã¦ããã®ã¯ããRailsã§ âskinny controller, fat modelâ ãæèãã¦æ¸ãã¨ã¢ãã«ã«ã¡ã½ãããéã¾ãã¾ãããã®ããªãã¨ãããããªã¨æã£ã¦ãã¦ããã®è§£æ±ºæ¹æ³ã¨ãã¦DDDãDCIãæå¹ãªã®ã§ã¯ãªããã¨èãã¦ããããã§ãã å 容çã«ã¯ãæåã«çºè¡¨ãããå¢ç°ããã®ã¹ã¢ã¼ã«ãªãã¸ã§ã¯ãããã°ã©ãã³ã°ã®è©±ãã¨ã¦ãé¿ãã¾ããããã®ã¹ã©ã¤ãã§æ¸ããã¦ããã¢ã³ããã¿ã¼ã³ãã²ã¨ã¤ã®é¨å(ã¯ã©ã¹)ãããããç¥ã£ã¦ãã¦ããªãã§ãããããããã£ã¦ã¾ãã«Railsã®modelãªããããªãã®ããªãã ã¡ãããªãªãã¸ã§ã¯ãã§ãã¡ã¤ã³ã¢ãã«ãçµã¿ç«ã¦ã fr
http://clean-ruby.com/ The classes that we begin to define should represent data or model the behavior of the data object, but *not both* æå¹ã§ãã£ããã£ã½ã人éãDCIãDCIã£ã¦è¨ã£ã¦çãä¸ãã£ã¦ããããæè¿DCIã«ã¤ãã¦è§¦ããããã«Clean Rubyã£ã¦æ¬ããã£ããèªãã§ã¿ã¦ããã ãã©ãçè ããããã主張ããã¦ã¦ããã«ããã£ã¦ã¹ããã«ããã£ã¦ã¹ã§ããã¼ã£ã¦æã£ã¦ããã©ãå¨ããã¨ããã®ã¨ãã©ãæ¯èããã¨ããã®ã¯ãããããå¥ã®ç®æã§ã¾ã¨ãã¦å®ç¾©ããã¦ããã¹ãã¨ã®ãã¨ãå®è£ ã¨ãã¦ã¯ãUserã¿ãããªclassããã¼ã¿(=ã©ãå¨ãã:be)ãå®ç¾©ãã¦ãã¦ãXXXableã¨ãXXXerã¿ãããªmoduleãå¦ç(=ã©ãæ¯ãèãã:do)ãå®ç¾©ãã¦ãã¦ãUs
The following is an example of file importing and parsing in Ruby using object-oriented techniques such as duck typing and dependency injection. Inject a CSVParser dependency into a the Importer # app/controllers/contact_imports_controller.rb: class ContactImportsController < ApplicationController def new @importer = Importer.new end def create @importer = Importer.new( parser: CSVParser.new(impor
Object-oriented programming was supposed to unify the perspectives of the programmer and the end user in computer code: a boon both to usability and program comprehension. While objects capture structure well, they fail to capture system action. DCI is a vision to capture the end user cognitive model of roles and interactions between them. Objects are principally about people and their mental mode
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ã¡ã³ããã³ã¹
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}