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
新規プロジェクトのリードエンジニアになるために
Search
Kaoru Hotate
December 14, 2019
Programming
6
2.4k
新規プロジェクトのリードエンジニアになるために
2019/12/14 平成Ruby会議#01 登壇資料
Kaoru Hotate
December 14, 2019
Tweet
Share
More Decks by Kaoru Hotate
See All by Kaoru Hotate
20240607_人を動かし続ける力_ピープルマネジメントへの内発的動機づけの工夫
hotatekaoru
1
270
20210528_MedPeer_事業成長を加速させたエンジニアリングのウラ側
hotatekaoru
0
1.2k
費用対効果の高いテストコードを書くために意識したこと.pdf
hotatekaoru
3
4.6k
リファクタリングチャンスを探せ
hotatekaoru
2
370
Dependabotからの脱却
hotatekaoru
0
370
Fat Modelに対処する 6つのリファクタリングパターン
hotatekaoru
13
3.7k
MobPro2Points
hotatekaoru
0
86
ViewModelをプロダクトに導入した🤖
hotatekaoru
1
190
僕らのリファクタリングは裏切らない
hotatekaoru
2
2.5k
Other Decks in Programming
See All in Programming
12年前の『型システム入門』翻訳の思い出話
mame
11
1.2k
How to use Macrobenchmark
veronikapj
0
160
Webエディタライブラリ 「CodeMirror」から学ぶ Webアプリ開発のテクニック
ryosukeigarashi
0
250
ぼっちを避けて楽しむためのアノテコノテ / Various Tips and Tricks to Avoid Loneliness and Have Fun
nrslib
3
1.7k
CSC307 Lecture 05
javiergs
PRO
0
210
最近追加した型の紹介とその振り返り
aki19035vc
0
170
Folding Cheat Sheet #7
philipschwarz
PRO
0
150
AWS CDKにおける「再利用性」を考える / aws-cdk-reusability
gotok365
6
1.3k
Namespace on read
tagomoris
2
370
Rustのweb開発を助ける 便利なツール紹介
yuki0418
1
190
Polarsの成長: v0.14からv1.0までの変遷と今後の展望
zerebom
1
350
Cloudflare Workers x AWS Lambdaの組み合わせユースケース / Cloudflare Workers x AWS Lambda Combination Use Case
seike460
PRO
2
310
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
248
20k
RailsConf 2023
tenderlove
16
720
Designing with Data
zakiwarfel
96
5k
What's new in Ruby 2.0
geeforr
338
31k
Git: the NoSQL Database
bkeepers
PRO
423
64k
Building Adaptive Systems
keathley
34
2k
Building Applications with DynamoDB
mza
89
5.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
399
65k
Making the Leap to Tech Lead
cromwellryan
127
8.7k
Leading Effective Engineering Teams 2024
addyosmani
3
300
Clear Off the Table
cherdarchuk
89
320k
WebSockets: Embracing the real-time Web
robhawkes
59
7.2k
Transcript
৽نϓϩδΣΫτͷ ϦʔυΤϯδχΞʹͳΔͨΊʹ ,BPSV)PUBUF!QVSVOLBPSV ฏ3VCZձٞ IFJTFJSVCZLBJHJ 1
อཱ֜ ,BPSV)PUBUF 5XJUUFS!QVSVOLBPSV ϝυϐΞͱ͍͏ձࣾͷ ΤϯδχΞͰ͢ ฏݩੜ·ΕͰ͢ ࣗݾհ 2
৽نϓϩδΣΫτͷϦʔυΤϯδχΞͷׂ 3 اըཱҊ༷࡞ αʔϏεاը༷࡞ ΫϥΠΞϯτͱͷΓऔΓ ٕज़બఆ1+5্ཱ͛ ٕज़બఆݟੵΓ SBJMTOFXίʔυͷن࡞ ϓϩδΣΫτཧ ਐḿ֬ೝใࠂ
վળҊͷཱҊόάͷཧ ϝϯόʔڭҭɾධՁ ϝϯόʔڭҭධՁ ৽ϝϯόʔͷΞαΠϯ
ࠓ͢͜ͱ 4 SBJMTOFXʙ։ൃͷيಓʹΔ·Ͱʹඞཁͳ͜ͱΛ͠·͢ ‣ ϓϩδΣΫτͷੑ࣭ʹΑΔ͕ࠩগͳ͍ͷͰɺ ࣄલ४උΛద༻͍ͤ͢͞ ‣ ͜ͷϑΣʔζͷɾਫ਼͕ɺޙʑେ͖͘Өڹ͕ग़Δ
5 ʮͳΜͰϦϑΝΫλϦϯά͖ͳΜͩΖ͏ʁʯ
6 ͖ͳՊ ࢉɹಛʹ߹ͷ ‣ ܾ·ͬͨղ͖ํɾߟ͑ํ͕͋Δʢύλʔϯʣ ‣ ύζϧײ֮Ͱɺʮ͋ͯΊΔʯʮ͘Έ͋ΘͤΔʯ ύλʔϯʹ͍࣋ͬͯͨ͘ΊʹʮͻΒΊ͖ʯʮ࣮ݧʯΛߦ͏ ࣗͳΓͷύλʔϯɾࢦΛߏங͢Δ ‣
ͨ͘͞ΜͷΛղ͍ͯɺ ৽͍͠ύλʔϯΛֶͿɾ͍ํΛशಘ͢Δ ͍͜ͳͨ͠ύλʔϯͷྔɺ͍࣋ͬͯΔࢦͷਫ਼ͷߴ͕͞ɺ ૉૣ͘ਖ਼֬ͳճΛಋ͘ ͷੲ͠·͢
ϦϑΝΫλϦϯά͍ۙͱ͜Ζ͕͋Δ 7 ‣ ͔֬Β͍͠ύλʔϯɾݪଇɾ੍͋Δ ྫ σβΠϯύλʔϯ40-*%ݪଇ-JOUFS ‣ ݪཧݪଇΛͦͷ··མͱ͠ࠐΊΔέʔεগͳ͍ ʮͻΒΊ͖ʯʮ࣮ݧʯ͕ඞཁ ࣗͳΓͷύλʔϯɾࢦΛߏங͢Δ
‣ ͨ͘͞ΜͷέʔεΛ௨ͯ͡ɺ ݪཧݪଇΛ͍͜ͳ͍ͯ͘͠ ͍͜ͳͨ͠ύλʔϯͷྔɺ͍࣋ͬͯΔࢦͷਫ਼ͷߴ͕͞ɺ ૉૣ͘ਖ਼֬ͳίʔυΛಋ͘
ύλʔϯΛ࡞ΔϝϦοτ 8 ‣ εϐʔυΛ্͛Δ ‣ ࣭Λ্͛Δ ψέɾϞϨΛ͛Δ ୭͕ͬͯಉ͡Α͏ʹͳΔ ʮ৽نϓϩδΣΫτͷ্ཱ͛ʯʹɺ ύλʔϯԽΛద༻Ͱ͖ΔͷͰͳ͍͔
৽نϓϩδΣΫτΛ يಓʹͤΔͨΊʹ४උ͢Δ͜ͱ 9
ϦʔυΤϯδχΞͷ͓ࣄ 10 ‣ ॳظஈ֊ʢνʔϜϝϯόʔ͕ಈ͖ग़͢લʹΔ͜ͱʣ ‣ SBJMTOFX ‣ ։ൃϧʔϧͷ࡞ ‣ ίʔσΟϯάن
‣ ੩తղੳνΣοΫͷϧʔϧ ‣ ϥΠϒϥϦΞοϓσʔτͷස νʔϜϝϯόʔ͕ಈ͖ग़͢લʹ͜͜·ͰऴΘΒͳ͍ͱɺ ͋ͱͰखΓ͕ൃੜ͢Δέʔε͕ଟ͍ SBJMTUFNQMBUF ࣗͳΓͷ ίʔσΟϯάن
ϦʔυΤϯδχΞͷ͓ࣄ 11 ‣ தظஈ֊ʢνʔϜϝϯόʔͱ։ൃதʹΔ͜ͱʣ ‣ ઃܭɾػೳ։ൃ ‣ ෛ࠴ʹͳΓͮΒ͍ίʔυ ϨϏϡʔϦϑΝΫλϦϯά ‣
͋ͱ͔Βࢀըͨ͠ਓʹ ୡͰ͖ΔΈͮ͘Γ ϦϑΝΫλϦϯά ύλʔϯͷ໌จԽ ෛ࠴ʹͳΓͮΒ͍ίʔυΛߏங͢ΔͨΊͷΈͮ͘Γ͕ඞཁ
৽͍͠ϓϩδΣΫτΛ࡞Δલʹߦ͏ͭͷ͜ͱ 12 ‣ SBJMTUFNQMBUF ‣ ࣗͳΓͷίʔσΟϯάن ‣ ϦϑΝΫλϦϯάύλʔϯͷ໌จԽ
SBJMTUFNQMBUF 13 UFNQMBUFSC 3BJMTΨΠυIUUQTSBJMTHVJEFTKQSBJMT@BQQMJDBUJPO@UFNQMBUFTIUNMࢀর generate(:scaffold, "person name:string") route "root to:
'people#index'" rails_command("db:migrate") after_bundle do git :init git add: "." git commit: %Q{ -m 'Initial commit' } end $ rails new project_name -m path/to/template.rb
SBJMTUFNQMBUF 14 ͷSBJMTUFNQMBUFͷհ IUUQTHJUIVCDPNIPUBUFLBPSVSBJMT@UFNQMBUF ‣ ෆཁͳϑΝΠϧͷআɾඞཁͳϑΝΠϧͷՃ ‣ ։ൃʹඞཁͳHFNΛɺ࠷ॳ͔Β(FNGJMFʹొ͢Δ ‣ ߹ΘͤͯɺඞཁͳઃఆϑΝΠϧσϑΥϧτͰՃ͢Δ
‣ ଘࡏ͢ΔDPOGJHϑΝΠϧʹɺՃ͍ͨ͠ઃఆΛͿͪ͜Ή ‣ ޙ͔Βઃఆ͕ඞཁͳͷUPEPNEʹ·ͱΊΔ
SBJMTUFNQMBUF 15 Rails.application.configure do (Ұ෦লུ) # N + 1ແ༻Ͱ500ը໘ʹભҠͤ͞Δ config.after_initialize
do Bullet.enable = true Bullet.console = true Bullet.rails_logger = true Bullet.raise = true end end DPOGJHFOWJSPONFOUTEFWFMPQNFOUSC # Install JavaScript dependencies system('bin/yarn') CJOTFUVQSC / ͕͋ΔͱʹͳΔઃఆΛՃ SBJMTOFXͰࣗಈͰ࡞ΒΕΔ CJOԼͷઃఆϑΝΠϧΛमਖ਼
SBJMTUFNQMBUF 16 UFNQMBUFͷϝϦοτ ‣ ʮരʯͰSBJMTͷ։ൃڥΛߏஙͰ͖Δ ‣ ࡞ۀͷൈ͚࿙Ε͕ͳ͘ͳΔ UFNQMBUFͷσϝϦοτ ‣ UFNQMBUFͷϝϯςίετ͕͔͔Δ
ʢSVCZSBJMTͷόʔδϣϯΞοϓ͝ͱʹඞཁʣ
SBJMTUFNQMBUF 17 طଘͷϓϩδΣΫτΛίϐϖ͢Ε͍͍ͷͰʁ ‣ Կ͕ඞཁɾෆඞཁ͔ผ͢Δͷ͕͍͠ ‣ قͷܦͬͨϓϩδΣΫτͷϧʔϧΛ ৽͍͠ϓϩδΣΫτʹ࣋ͪࠐΉͷةݥ
ࣗͳΓͷίʔσΟϯάنΛ࡞͓ͬͯ͘ 18 ίʔσΟϯάنΛ࡞ΔϝϦοτ ‣ ϨϏϡʔͰࢦఠ͢Δ༰ΛݮΒ͢ ‣ ίʔυͷ࣭ΛߴΊΔ ‣ ϦϑΝΫλϦϯάʹ͔͔Δ࣌ؒΛݮΒ͢
ࣗͳΓͷίʔσΟϯάنΛ࡞͓ͬͯ͘ 19 ωʔϜεϖʔεɾΫϥε໊Λ࠷ॳʹ౷Ұ͓͖͍ͯͨ͠ ‣ 3BJMTϓϩδΣΫτɺͨ͘͞ΜͷΫϥε͕Ͱ͖͍͢ ‣ ౷Ұ໋໊ͨ͠ϧʔϧ͕͋Δͱɺ ໊લ͚Λߟ͑Δίετ͕ݮΔɻ ·ͨɺྨࣅͷҙຯΛ࣋ͭΫϥεΛ୳͍͢͠ ‣
Ϋϥε໊Λݟ͚ͨͩͰɺதΛ༧Ͱ͖Δ )PHF$SFBUPSΫϥε%#ʹอଘ͢Δ )PHF'PSNΫϥεWBMJEBUJPOCVJME·ͰͰอଘ͠ͳ͍ ࢀߟIUUQTHJTUHJUIVCDPNIPUBUFLBPSVGBEEGFFBG ҎԼͷ0CKFDUͷϧʔϧΛهࡌͯ͠·͢ 7JFX0CKFDU $PMMFDUPS0CKFDU 2VFSZ0CKFDU 4FSWJDF0CKFDU $SFBUPS6QEBUFS0CKFDU 'PSN0CKFDU 7BMJEBUF0CKFDU 7BMVF0CKFDU 1PMJDZ0CKFDU
ϦϑΝΫλϦϯάύλʔϯͷ໌จԽ 20 ϦϑΝΫλϦϯάύλʔϯΛ໌จԽ͢ΔϝϦοτ ‣ ࠷ॳ͔ΒϦϑΝΫλϦϯά͕ෆཁͳίʔυΛ࣮͢Δ ‣ ϦϑΝΫλϦϯάʹ͔͔Δ࣌ؒΛݮΒ͢ ϦϑΝΫλϦϯά͕ಘҙʹͳΔͱɺʢதུʣѱ͍ίʔυΛॻ͘ͷΛΊɺ ѱ͍׳शʹै͏ͷΛΊɺϓϨϑΝΫλϦϯάΛ࢝ΊΔͷͩɻʢதུʣ ίʔυͷϦϑΝΫλϦϯάɺίʔυΛॻ͘ͱ͖ʹ͍͚ͯ͠ͳ͍͜ͱɺ
ΘΓʹ͖͢͜ͱΛֶͿ্Ͱ࠷ͷํ๏ͷͭͳͷͩɻ %BWJE4DPUU#FSOTUFJOஶʮϨΨγʔίʔυ͔Βͷ٫ʯΑΓ
ϦϑΝΫλϦϯάύλʔϯͷ໌จԽ 21 ϦϑΝΫλϦϯάύλʔϯͷྫ ‣ DPODFSOͷ͍ॴͱআڈ͢Δํ๏ !XJMMOFU͞Μʮ$PODFSOTBCPVU$PODFSOTʯ IUUQTTQFBLFSEFDLDPNXJMMOFUDPODFSOTBCPVUDPODFSOT ‣ 'PSN0CKFDUΛ͏ํ๏ ϝυϐΞ։ൃϒϩάʮGPSNPCKFDUΛͬͯΈΑ͏ʯ
IUUQTUFDINFEQFFSDPKQFOUSZ ‣ 'BU.PEFMΛ٫͢Δํ๏ ʮ'BU.PEFMʹରॲ͢ΔͭͷϦϑΝΫλϦϯάύλʔϯʯ IUUQTTQFBLFSEFDLDPNIPUBUFLBPSVGBUNPEFMOJEVJDIVTVSVUVGBMTFSJIVBLVUBSJOHVQBUBO
৽نϓϩδΣΫτͷϦʔυΤϯδχΞʹͳΔͨΊʹ ‣ SBJMTUFNQMBUF SBJMTOFXͷ͋ͱɺʮരʯͰʮϞϨͳ͘ʯඞཁͳઃఆ͕Ͱ͖Δ ‣ ࣗͳΓͷίʔσΟϯάن ‣ ϦϑΝΫλϦϯάύλʔϯͷ໌จԽ ϨϏϡʔʹॻ͚Δ࣌ؒΛݮΒ͠ɺίʔυͷ࣭Λ্͛Δ ·ͱΊ
22
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 23