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.6k
新規プロジェクトのリードエンジニアになるために
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
390
20210528_MedPeer_事業成長を加速させたエンジニアリングのウラ側
hotatekaoru
0
1.3k
費用対効果の高いテストコードを書くために意識したこと.pdf
hotatekaoru
3
4.8k
リファクタリングチャンスを探せ
hotatekaoru
2
470
Dependabotからの脱却
hotatekaoru
0
450
Fat Modelに対処する 6つのリファクタリングパターン
hotatekaoru
13
4.3k
MobPro2Points
hotatekaoru
0
110
ViewModelをプロダクトに導入した🤖
hotatekaoru
1
220
僕らのリファクタリングは裏切らない
hotatekaoru
2
2.6k
Other Decks in Programming
See All in Programming
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
340
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
220
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
0
250
A2A プロトコルを試してみる
azukiazusa1
2
1.3k
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
0
260
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
20
3.8k
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
620
Goで作る、開発・CI環境
sin392
0
180
WebViewの現在地 - SwiftUI時代のWebKit - / The Current State Of WebView
marcy731
0
100
Go1.25からのGOMAXPROCS
kuro_kurorrr
1
830
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
320
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
120
Featured
See All Featured
How to Ace a Technical Interview
jacobian
277
23k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Being A Developer After 40
akosma
90
590k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
800
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Raft: Consensus for Rubyists
vanstee
140
7k
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