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
360
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
2
2.6k
Bidirectional Quadratic Voting Leveraging Issue-Based Matching
kentaro
2
850
大高生へのメッセージ(令和6年度「大高未来塾」) / Messages to Current Students
kentaro
0
380
「始め方」の始め方 / How to Start Starting Things
kentaro
5
1.1k
Dynamic IoT Applications and Isomorphic IoT Systems Using WebAssembly
kentaro
1
1.7k
わたしがこのところハマっている「ライセンスフリー無線」のご紹介 / An Invitation to License-Free Radio
kentaro
1
820
先行きの見えなさを楽しさに変える ーVUCA時代のキャリア論と絶対他力主義ー / How to develop your career in the VUCA era
kentaro
8
7.1k
Other Decks in Technology
See All in Technology
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
1
310
Incremental HTTP
kazuho
5
2.1k
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
150
Futexes the good, the bad, the ugly
ennael
PRO
0
130
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
520
AI時代のAPI開発を加速する品質ガードレール / API Quality Guardrails in the AI Era
yokawasa
0
160
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
330
自分で立ててみるLLMサービス
y_sera15
0
130
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
150
「とりあえず動く」の先へ。 AI時代のチーム開発と内部設計/2026-slsdays
slsops
0
150
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
150
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
1
1.3k
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
540
Accessibility Awareness
sabderemane
1
240
Technical Leadership for Architectural Decision Making
baasie
3
590
The SEO identity crisis: Don't let AI make you average
varn
0
580
KATA
mclloyd
PRO
35
16k
The Curious Case for Waylosing
cassininazir
1
550
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
590
Faster Mobile Websites
deanohume
310
32k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
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͋ΔΑ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠