Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
A Perl Monger in the Ruby World
Search
Kentaro Kuribayashi
September 29, 2012
Technology
16k
16
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
A Perl Monger in the Ruby World
@yapcasia 2012
Kentaro Kuribayashi
September 29, 2012
More Decks by Kentaro Kuribayashi
See All by Kentaro Kuribayashi
あとはAIに任せて人間は自由に生きる
kentaro
5
2.3k
社会人力と研究力ー博士号をキャリアの武器にするー
kentaro
3
350
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
2
2.6k
Bidirectional Quadratic Voting Leveraging Issue-Based Matching
kentaro
2
840
大高生へのメッセージ(令和6年度「大高未来塾」) / Messages to Current Students
kentaro
0
380
「始め方」の始め方 / How to Start Starting Things
kentaro
5
1k
Dynamic IoT Applications and Isomorphic IoT Systems Using WebAssembly
kentaro
1
1.7k
わたしがこのところハマっている「ライセンスフリー無線」のご紹介 / An Invitation to License-Free Radio
kentaro
1
810
先行きの見えなさを楽しさに変える ーVUCA時代のキャリア論と絶対他力主義ー / How to develop your career in the VUCA era
kentaro
8
7k
Other Decks in Technology
See All in Technology
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
760
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
270
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
420
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
280
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
0
840
クロスボーダーM&AのValue Upを支えるプロダクト開発。日米チームのハブになったプロダクトエンジニアの実践 / Product Engineering Conference 2026
genda
0
120
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
300
GoCon2026 - Open Source, Open World
sanposhiho
4
3.5k
20260912_スクラムにジェネラリストは必要か
ryugen04
0
390
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
670
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
140
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
830
Featured
See All Featured
Scaling GitHub
holman
464
140k
Skip the Path - Find Your Career Trail
mkilby
1
230
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Producing Creativity
orderedlist
PRO
348
41k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Side Projects
sachag
456
43k
A Tale of Four Properties
chriscoyier
163
24k
Transcript
Rubyistͷࠃͷ Perl͍ @kentaro ܀ྛ݈ଠ paperboy&co.
@kentaro ,ZPUPQNॴଐ ΤϯδχΞ 1FSMFS ϧϏʔετ ฐࣾެࣜίϯςϯπ /FX ܀ྛ݈ଠ paperboy&co.
None
ٕज़ج൫උΤϯδχΞ
None
ʊਓਓਓਓਓਓਓਓʊ ʼɹಥવͷRubyԽɹʻ ʉ^Y^Y^Y^Y^Y^Y^ʉ
ͷΜͨΜ ·͚ͭΜ mizzy
None
Kyoto.pm͔Βདྷ·ͨ͠
Kyoto.pmҠ
Cinnamon A Minimalistic Deploy Tool
https://speakerdeck.com/u/kentaro/p/datamapper
࠷ۙPerlશવॻ͍ͯ ͳ͍ ͨ·ʹίʔυϨ Ϗϡʔ͢Δ͙Β͍
YAPCͷ5γϟπΛ ணͯRubyͷձͰ rubygemsΛDISͬͯ Δࢲͷ༐࢟Ͱ͢ Emacsͷձͳͷʹ Subilme Text2ͷ ͷΈͷεϥΠυ
ͱ͍͏Θ͚Ͱɺࠓ Perlʹಛʹؔ ͷͳ͍Λ͠·͢ɻ
ϖύϘͰ࠷ ۙͳʹͬͯ ΔΜͰ͔͢ʁ ͏ʙΜʜͳΜͱ ͍͏͔ɺ͍Ζ͍ ΖͰ͢Ͷʜɻ
Ξτϓοτͷେ͞ http://www.flickr.com/photos/timjoyfamily/532089575/
http://www.paperboy.co.jp/recruit/important/
ҰൠԽ ݕূՄ ൃੑ Ξτϓοτ ֎ʹग़͢͜ͱͰ෦ࣄ ΛҰൠԽͰ͖Δ Ξτϓοτ͞Εͳ͍͜ ͱʹݕূ͠Α͏͕ͳ͍ ΞτϓοτͷॏͳΓ߹ ͍͕৽͍͠ͷΛੜΉ
͖ ֎͖ ։ൃڥඋ ։ൃίϛϡχέʔγϣϯ ΞδϟΠϧ։ൃ αʔϏεϦϦʔε ϦʔϯελʔτΞοϓ ٕज़తΞτϓοτ
։ൃϓϩηεͷվળ http://www.flickr.com/photos/betsyweber/6719452305/
w/@hsbt ྡ੮ͷΔͼΓ͢ͱࢯ
ϦʔϯελʔτΞοϓ εΫϥϜ 91ϓϥΫςΟε ։ൃϓϩηεͷࡾߏ
None
http://www.flickr.com/photos/goodoldsparky/2716165693/ ίϯηϓτΛݻΊΔ
։ൃऀ ͷͨΊͷ ϖύϘձٞࣨ JEBOUJQPQ QBQFSCPZDP Ϧʔϯ ελʔτΞοϓ http://blog.kentarok.org/entry/2012/07/10/185408
Build Measure Learn
#.- #.- #.- #.- #.- #.- #VJME .FBTVSF -FBSO όοναΠζ
αʔϏε։ൃΛՊֶ ࣮ݧͷΑ͏ʹԾઆͱͦ ͷݕূΛ௨ͯ͡ߦ͏͜ ͱ ·ͣԾઆݕূͷͨ Ίͷඞཁ࠷খݶͷ Λ࡞Δ͜ͱ
ԾઆݕূϧʔϓΛͰ ͖Δ͚ͩ͘ճ͢͜ͱ
*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
http://www.imi.ie/news-and-events/wp-content/uploads/2011/11/IMI-Ash-Maurya-Running-Lean-Presentation.pdf ސ٬ Ձ ղܾ ใ
ऩೖ ࢧग़ ༏Ґ ݕূ
None
http://d.hatena.ne.jp/nawoto/20111011/1318303619
https://speakerdeck.com/u/nawoto/p/head-first-inception-deck?slide=11
http://www.flickr.com/photos/cdm/2336025560/ νʔϜͰ։ൃ͢Δ
ϢʔβετʔϦऩू
ϖʔύʔϓϩτλΠϐϯά
εϓϦϯτܭը ϓϩμΫτόοΫϩά εϓϦϯτόοΫϩά
εϓϦϯτϨϏϡʔ
https://speakerdeck.com/u/nawoto/p/head-first-inception-deck?slide=11 ίʔυϨϏϡʔ
ϖΞϓϩάϥϛϯά
https://speakerdeck.com/u/hsbt/p/20120916-sappororubykaigi2012
https://speakerdeck.com/u/hsbt/p/20120916-sappororubykaigi2012?slide=59 αΠΫϧλΠϜ Λॖ͢Δ
http://www.slideshare.net/startuplessonslearned/2012-05-15-eric-ries-the-lean-startup-pwc-canada ઢ։ൃऀʹͱͬͯಛʹॏཁͳࣄ߲
ඇ3VCZͳձࣾͰ ͭͷํ๏ !LFOUBSP ࣄʹΛ ࣋ͪࠐΉͨΊͷ ܀ྛ݈ଠ QBQFSCPZDP
ࣗಈԽ ࣮֬ੑ ҆શੑ ͍αΠΫϧ capistrano/webistrano chef/puppet tests, more tests continuous
integration developer sandbox incremental deployment
։ൃϓϩηε͕ ઃܭΛม͑Δ http://www.flickr.com/photos/wolflawlibrary/4703808270/
ׂ ͱͯ͠ ΰʔϧ Λୡ ͍ͨ͠ɻͦΕ ཧ༝ ͷͨΊͩ ϢʔβετʔϦ
ׂ ͱͯ͠ ΰʔϧ Λୡ ͍ͨ͠ɻͦΕ ཧ༝ ͷͨΊͩ ׂ ͱͯ͠ ΰʔϧ
Λୡ ͍ͨ͠ɻͦΕ ཧ༝ ͷͨΊͩ ׂ ͱͯ͠ ΰʔϧ Λୡ ͍ͨ͠ɻͦΕ ཧ༝ ͷͨΊͩ M V C
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.
ػೳͱ࣮ʹؔ ࿈ੑ͕ͳ͍ Կ͕͔ ετʔϦͷݟ͑ ͳ͍ઃܭ
“Slim Controller, fat model”, but it’s too fat to be
a model. ࢀߟ http://lab.ursm.jp/blog/2012/09/17/sapporo-rubykaigi-2012/ Կ͕͔
DCI Data Context Interaction
“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.”
None
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.
ׂ ͱͯ͠ ΰʔϧ Λୡ ͍ͨ͠ɻͦΕ ཧ༝ ͷͨΊͩ ׂ ͱͯ͠ ΰʔϧ
Λୡ ͍ͨ͠ɻͦΕ ཧ༝ ͷͨΊͩ Data + Role context Data + Role ର ର
ετʔϦʔࢦ ͷઃܭ͕Մೳ DCIʹΑͬͯ Too fat model ղܾ
։ൃϓϩηεͱ ߹͢Δઃܭɾ ࣮ख๏Λೖख DCIʹΑͬͯ
·ͱΊ
Ξτϓοτॏཁ ·ͱΊ ։ൃऀͷΞτϓοτΛ ߴΊΔ ։ൃϓϩηεΛվળ͢Δ DCI͋ΔΑ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠