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.5k
新規プロジェクトのリードエンジニアになるために
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
300
20210528_MedPeer_事業成長を加速させたエンジニアリングのウラ側
hotatekaoru
0
1.2k
費用対効果の高いテストコードを書くために意識したこと.pdf
hotatekaoru
3
4.6k
リファクタリングチャンスを探せ
hotatekaoru
2
380
Dependabotからの脱却
hotatekaoru
0
380
Fat Modelに対処する 6つのリファクタリングパターン
hotatekaoru
13
3.8k
MobPro2Points
hotatekaoru
0
87
ViewModelをプロダクトに導入した🤖
hotatekaoru
1
190
僕らのリファクタリングは裏切らない
hotatekaoru
2
2.5k
Other Decks in Programming
See All in Programming
Why Prism?
kddnewton
4
1.7k
dRuby 入門者によるあなたの身近にあるdRuby 入門
makicamel
4
350
Swift Concurrencyとレースコンディション
objectiveaudio
1
410
開発を加速する共有Swift Package実践
elmetal
PRO
0
390
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
140
The Future of Frontend i18n : Intl.MessageFormat
sajikix
1
2.5k
rbs-inlineを導入してYARDからRBSに移行する
euglena1215
1
260
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
240
【TID2024】模擬講義:プログラマと一緒にゲームをデザインしてみよう!
akatsukigames_tech
0
560
令和トラベルにおけるLLM活用事例:社内ツール開発から得た学びと実践
ippo012
0
120
Rubyのobject_id
qnighy
6
1.3k
Jakarta EE meets AI
ivargrimstad
1
300
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
23
1.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
34
1.7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
88
16k
RailsConf 2023
tenderlove
27
800
Designing with Data
zakiwarfel
98
5k
The Cost Of JavaScript in 2023
addyosmani
41
5.2k
Intergalactic Javascript Robots from Outer Space
tanoku
268
26k
Atom: Resistance is Futile
akmur
261
25k
How GitHub (no longer) Works
holman
310
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Building Your Own Lightsaber
phodgson
101
6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
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