Slide 1

Slide 1 text

Rubyistͷࠃͷ Perl࢖͍ @kentaro ܀ྛ݈ଠ࿠ paperboy&co.

Slide 2

Slide 2 text

@kentaro ,ZPUPQNॴଐ ΤϯδχΞ 1FSMFS ϧϏʔετ ฐࣾެࣜίϯςϯπ /FX ܀ྛ݈ଠ࿠ paperboy&co.

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

ٕज़ج൫੔උΤϯδχΞ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

ʊਓਓਓਓਓਓਓਓʊ ʼɹಥવͷRubyԽɹʻ ʉ^Y^Y^Y^Y^Y^Y^ʉ

Slide 7

Slide 7 text

ͷΜͨΜ ·͚ͭΜ mizzy

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Kyoto.pm͔Βདྷ·ͨ͠

Slide 10

Slide 10 text

Kyoto.pm΁Ҡ؅

Slide 11

Slide 11 text

Cinnamon A Minimalistic Deploy Tool

Slide 12

Slide 12 text

https://speakerdeck.com/u/kentaro/p/datamapper

Slide 13

Slide 13 text

࠷ۙ͸Perlશવॻ͍ͯ ͳ͍ ͨ·ʹίʔυϨ Ϗϡʔ͢Δ͙Β͍

Slide 14

Slide 14 text

YAPCͷ5γϟπΛ ணͯRubyͷձͰ rubygemsΛDISͬͯ Δࢲͷ༐࢟Ͱ͢ Emacsͷձͳͷʹ Subilme Text2ͷ࿩ ͷΈͷεϥΠυ

Slide 15

Slide 15 text

ͱ͍͏Θ͚Ͱɺࠓ೔ ͸Perlʹ͸ಛʹؔ܎ ͷͳ͍࿩Λ͠·͢ɻ

Slide 16

Slide 16 text

ϖύϘͰ͸࠷ ۙͳʹ΍ͬͯ ΔΜͰ͔͢ʁ ͏ʙΜʜͳΜͱ ͍͏͔ɺ͍Ζ͍ ΖͰ͢Ͷʜɻ

Slide 17

Slide 17 text

Ξ΢τϓοτͷେ੾͞ http://www.flickr.com/photos/timjoyfamily/532089575/

Slide 18

Slide 18 text

http://www.paperboy.co.jp/recruit/important/

Slide 19

Slide 19 text

ҰൠԽ ݕূՄ ૑ൃੑ Ξ΢τϓοτ ֎ʹग़͢͜ͱͰ಺෦ࣄ৘ ΛҰൠԽͰ͖Δ Ξ΢τϓοτ͞Εͳ͍͜ ͱʹ͸ݕূ͠Α͏͕ͳ͍ Ξ΢τϓοτͷॏͳΓ߹ ͍͕৽͍͠΋ͷΛੜΉ

Slide 20

Slide 20 text

಺޲͖ ֎޲͖ ։ൃ؀ڥ੔උ ։ൃίϛϡχέʔγϣϯ ΞδϟΠϧ։ൃ αʔϏεϦϦʔε ϦʔϯελʔτΞοϓ ٕज़తΞ΢τϓοτ

Slide 21

Slide 21 text

։ൃϓϩηεͷվળ http://www.flickr.com/photos/betsyweber/6719452305/

Slide 22

Slide 22 text

w/@hsbt ྡ੮ͷΔͼΓ͢ͱࢯ

Slide 23

Slide 23 text

ϦʔϯελʔτΞοϓ εΫϥϜ 91ϓϥΫςΟε ։ൃϓϩηεͷࡾ૚ߏ଄

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

http://www.flickr.com/photos/goodoldsparky/2716165693/ ίϯηϓτΛݻΊΔ

Slide 26

Slide 26 text

։ൃऀ ͷͨΊͷ ϖύϘձٞࣨ JEBOUJQPQ QBQFSCPZDP Ϧʔϯ ελʔτΞοϓ http://blog.kentarok.org/entry/2012/07/10/185408

Slide 27

Slide 27 text

Build Measure Learn

Slide 28

Slide 28 text

#.- #.- #.- #.- #.- #.- #VJME .FBTVSF -FBSO όοναΠζ

Slide 29

Slide 29 text

αʔϏε։ൃΛՊֶ ࣮ݧͷΑ͏ʹԾઆͱͦ ͷݕূΛ௨ͯ͡ߦ͏͜ ͱ ·ͣ͸Ծઆݕূͷͨ Ίͷඞཁ࠷খݶͷ੡඼ Λ࡞Δ͜ͱ ԾઆݕূϧʔϓΛͰ ͖Δ͚ͩ଎͘ճ͢͜ͱ

Slide 30

Slide 30 text

*OUSPEVDUJPOUP -FBO$BOWBT JEBOUJQPQ QBQFSCPZDP http://www.imi.ie/news-and-events/wp-content/uploads/2011/11/IMI-Ash-Maurya-Running-Lean-Presentation.pdf http://blog.kentarok.org/entry/2012/07/10/185408

Slide 31

Slide 31 text

http://www.imi.ie/news-and-events/wp-content/uploads/2011/11/IMI-Ash-Maurya-Running-Lean-Presentation.pdf ໰୊ ސ٬ Ձ஋ ղܾ ޿ใ ऩೖ ࢧग़ ༏Ґ ݕূ

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

http://d.hatena.ne.jp/nawoto/20111011/1318303619

Slide 34

Slide 34 text

https://speakerdeck.com/u/nawoto/p/head-first-inception-deck?slide=11

Slide 35

Slide 35 text

http://www.flickr.com/photos/cdm/2336025560/ νʔϜͰ։ൃ͢Δ

Slide 36

Slide 36 text

ϢʔβετʔϦऩू

Slide 37

Slide 37 text

ϖʔύʔϓϩτλΠϐϯά

Slide 38

Slide 38 text

εϓϦϯτܭը ϓϩμΫτόοΫϩά εϓϦϯτόοΫϩά

Slide 39

Slide 39 text

εϓϦϯτϨϏϡʔ

Slide 40

Slide 40 text

https://speakerdeck.com/u/nawoto/p/head-first-inception-deck?slide=11 ίʔυϨϏϡʔ

Slide 41

Slide 41 text

ϖΞϓϩάϥϛϯά

Slide 42

Slide 42 text

https://speakerdeck.com/u/hsbt/p/20120916-sappororubykaigi2012

Slide 43

Slide 43 text

https://speakerdeck.com/u/hsbt/p/20120916-sappororubykaigi2012?slide=59 αΠΫϧλΠϜ Λ୹ॖ͢Δ

Slide 44

Slide 44 text

http://www.slideshare.net/startuplessonslearned/2012-05-15-eric-ries-the-lean-startup-pwc-canada ੺ઢ͸։ൃऀʹͱͬͯಛʹॏཁͳࣄ߲

Slide 45

Slide 45 text

ඇ3VCZͳձࣾͰ ͭͷํ๏ !LFOUBSP ࢓ࣄʹΛ ࣋ͪࠐΉͨΊͷ ܀ྛ݈ଠ࿠ QBQFSCPZDP

Slide 46

Slide 46 text

ࣗಈԽ ࣮֬ੑ ҆શੑ ଎͍αΠΫϧ capistrano/webistrano chef/puppet tests, more tests continuous integration developer sandbox incremental deployment

Slide 47

Slide 47 text

։ൃϓϩηε͕ ઃܭΛม͑Δ http://www.flickr.com/photos/wolflawlibrary/4703808270/

Slide 48

Slide 48 text

໾ׂ ͱͯ͠ ΰʔϧ Λୡ੒ ͍ͨ͠ɻͦΕ͸ ཧ༝ ͷͨΊͩ ϢʔβετʔϦ

Slide 49

Slide 49 text

໾ׂ ͱͯ͠ ΰʔϧ Λୡ੒ ͍ͨ͠ɻͦΕ͸ ཧ༝ ͷͨΊͩ ໾ׂ ͱͯ͠ ΰʔϧ Λୡ੒ ͍ͨ͠ɻͦΕ͸ ཧ༝ ͷͨΊͩ ໾ׂ ͱͯ͠ ΰʔϧ Λୡ੒ ͍ͨ͠ɻͦΕ͸ ཧ༝ ͷͨΊͩ M V C

Slide 50

Slide 50 text

package Controller::Cart; sub create { user->add_cart(params{book_id}); # ... } controllers package Controller::Follow; sub create { user->add_follow(params{user_id}); # ... } package Controller::Blog; sub create { user->add_post(params{text}); # ... } package Model::User; sub add_cart { # ... } sub add_follow { # ... } sub add_post { # ... } model Too many methods.

Slide 51

Slide 51 text

ػೳͱ࣮૷ʹؔ ࿈ੑ͕ͳ͍ Կ͕໰୊͔ ετʔϦͷݟ͑ ͳ͍ઃܭ

Slide 52

Slide 52 text

“Slim Controller, fat model”, but it’s too fat to be a model. ࢀߟ http://lab.ursm.jp/blog/2012/09/17/sapporo-rubykaigi-2012/ Կ͕໰୊͔

Slide 53

Slide 53 text

DCI Data Context Interaction

Slide 54

Slide 54 text

“We can translate use case scenarios into algorithms, just in time, as new senarios enter the business process. We encode these algorithms directly as role methods.”

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

package Controller::Cart; sub create { my $res = Context::Cart->new( user, params{item_id}, )->call; # ... } controller package Context::Cart sub new { my ($class, $user, $item_id) = @_; $user->extend(“Role::Customer”); bless { user => $user, item_id => $item_id, }, $class; } sub call { my $self = shift; $self->{user}->add_cart( $self->{item_id} ); } { package Role::Customer; sub add_cart { ... } } context https://github.com/kentaro/Class-Extendable `$user->extend` is enabled by my experimental module, Class::Extendable.

Slide 57

Slide 57 text

໾ׂ ͱͯ͠ ΰʔϧ Λୡ੒ ͍ͨ͠ɻͦΕ͸ ཧ༝ ͷͨΊͩ ໾ׂ ͱͯ͠ ΰʔϧ Λୡ੒ ͍ͨ͠ɻͦΕ͸ ཧ༝ ͷͨΊͩ Data + Role context Data + Role ର ର

Slide 58

Slide 58 text

ετʔϦʔࢦ޲ ͷઃܭ͕Մೳ DCIʹΑͬͯ Too fat model໰ ୊΋ղܾ

Slide 59

Slide 59 text

։ൃϓϩηεͱ ੔߹͢Δઃܭɾ ࣮૷ख๏Λೖख DCIʹΑͬͯ

Slide 60

Slide 60 text

·ͱΊ

Slide 61

Slide 61 text

Ξ΢τϓοτॏཁ ·ͱΊ ։ൃऀͷΞ΢τϓοτΛ ߴΊΔ ։ൃϓϩηεΛվળ͢Δ DCI΋͋ΔΑ

Slide 62

Slide 62 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠