Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A Perl Monger in the Ruby World
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
340
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
2
2.6k
Bidirectional Quadratic Voting Leveraging Issue-Based Matching
kentaro
2
810
大高生へのメッセージ(令和6年度「大高未来塾」) / Messages to Current Students
kentaro
0
370
「始め方」の始め方 / 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
800
先行きの見えなさを楽しさに変える ーVUCA時代のキャリア論と絶対他力主義ー / How to develop your career in the VUCA era
kentaro
8
7k
Other Decks in Technology
See All in Technology
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.5k
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
0
150
Claude Codeで開発以外の業務も爆速化しよう!
minorun365
PRO
10
8.9k
暗号化?某ファイルストレージはどうなるの!? 3rd Partyとうまく付き合う秘密度ラベル設計
kasada
0
210
LLMアプリ、 雰囲気で運用してませんか? 〜LLMOpsの現在地〜
taka_aki
1
550
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
880
EUDIWの枠組みを出発点に民間エコシステムの在り方を考える(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
340
Cloudflare製品を活用した AIガバナンス実践入門 / AI governance with Cloudflare Service
delta_tech
1
120
The Django UUID Story - DjangoCon US 2026
pauloxnet
0
310
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
480
Digitization部 紹介資料
sansan33
PRO
2
7.8k
GopherCon @シアトル に行ってきました
logica0419
0
330
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
Become a Pro
speakerdeck
PRO
31
6.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Chasing Engaging Ingredients in Design
codingconduct
0
290
Building the Perfect Custom Keyboard
takai
2
850
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Fireside Chat
paigeccino
42
4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Mind Mapping
helmedeiros
PRO
1
340
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͋ΔΑ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠