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
モブプログラミングという働き方 #DevLOVE
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
TAKAKING22
June 18, 2017
Technology
160k
47
Share
モブプログラミングという働き方 #DevLOVE
2017年6月18日(日)DevLOVE 200 Bridgeにて。
TAKAKING22
June 18, 2017
More Decks by TAKAKING22
See All by TAKAKING22
自分のハンドルは自分で握れ! ― 自分のケイパビリティを増やし、メンバーのケイパビリティ獲得を支援する ― / Take the wheel yourself
takaking22
1
1.1k
モブプログラミング再入門 ー 基本から見直す、AI時代のチーム開発の選択肢 ー / A Re-introduction of Mob Programming
takaking22
5
2.3k
AI時代のアジャイルチームを目指して ー スクラムというコンフォートゾーンからの脱却 ー / Toward Agile Teams in the Age of AI
takaking22
11
10k
AI時代だからこそ考える、僕らが本当につくりたいスクラムチーム / A Scrum Team we really want to create in this AI era
takaking22
11
7.9k
スクラムガイドに載っていないスクラムのはじめかた - チームでスクラムをはじめるときに知っておきたい勘所を集めてみました! - / How to start Scrum that is not written in the Scrum Guide 2nd
takaking22
7
2.4k
スクラムというコンフォートゾーンから抜け出そう!プロジェクト全体に目を向けるインセプションデッキ / Inception Deck for seeing the whole project
takaking22
6
3.4k
受託開発でもアジャイル開発できました / Agile in Contract Development
takaking22
19
9k
AI時代のアジャイル開発(XP祭り2024版) / Agile Development in the AI Era in XPJUG
takaking22
16
5.9k
我々はなぜテストを書くのか / Why we write test codes
takaking22
7
1.4k
Other Decks in Technology
See All in Technology
Spring AI × MCP 入門〜AIエージェントへのツール公開、境界設計から始める最小構成 〜
yuyamiyamoto
0
120
Harnessing the Power of Mocks and Stubs in PHPUnit / #laravellivejp
asumikam
0
700
APIテストとは?
nagix
0
110
「使われるデータ基盤」を目指してデータアナリストとワークショップをやった話
jackojacko_
2
900
Geek Woman の育ち方 〜コミュニティとAIと〜
chicaco
0
430
権限管理設計を完全に理解した
rsugi
2
220
脅威をエンジニアリングの糧にして:恐怖を乗り越えた先にあったもの / Turn threats into fuel for engineering: what lay beyond overcoming fear
nrslib
1
330
OpenID Connectによるサービス間連携
takesection
0
130
AI駆動開発でなんでもハンズオン環境をつくってみた
yoshimi0227
0
160
JEP 522 Deep Dive - G1 GC同期コスト削減によるスループット向上を徹底検証&解説
tabatad
1
190
Gradle×GitHub_ActionsでCI時間を約50%短縮 ジョブ分割の設計と落とし穴 / Cutting CI Time by ~50% with Gradle and GitHub Actions: Job-Splitting Design and Pitfalls
takatty
0
440
ポスター発表&デモと総括 / Poster Presentations & Demonstrations and Summary
ks91
PRO
0
140
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
How to build a perfect <img>
jonoalderson
1
5.5k
The Curious Case for Waylosing
cassininazir
1
360
Automating Front-end Workflow
addyosmani
1370
210k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
290
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
400
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
210
Embracing the Ebb and Flow
colly
88
5k
The untapped power of vector embeddings
frankvandijk
2
1.7k
Being A Developer After 40
akosma
91
590k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Transcript
!5",",*/( Ϟϒϓϩάϥϛϯάͱ͍͏ಇ͖ํ ϞϒϓϩάϥϛϯάΛ௨ͯ͠ݟͨΞδϟΠϧͷਅ 2017/06/18 DevLOVE 200 Bridge Takao Oyobe (@TAKAKING22)
Rakuten, Inc.
!5",",*/( ݩؾ ࠓͷ͓࢈
!5",",*/( ҙࣄ߲ 0, ࣸਅࡱӨ0,Ͱ͢ γϟολʔԻʹ͝ҙΛ εϥΠυެ։ࡁͰ͢ ձࣾશମͷ͠·ͤΜ ࢲୡͷͰ͢ʢυϯʣ ڭՊॻͷ͠·ͤΜ ࢲୡͷͰ͢ʢυϯʣ
Ϟϒϓϩάϥϛϯά ۜͷؙͰ͋Γ·ͤΜ ແԻΧϝϥΞϓϦ͕͋Δͦ͏Ͱ͢
!5",",*/( ճ͓ΊͰͱ͏͍͟͝·͢
!5",",*/( ॳΊͯͷίϛϡχςΟࢀՃˍൃද%FW-07&Ͱͨ͠ IUUQTXXXTMJEFTIBSFOFUEBJQSFTFOUTEFWMPWFIBOHBSGMJHIUTOPXCBSSBHF
!5",",*/( !5",",*/( ٴ෦ܟ༤ ָఱגࣜձࣾΠϯΩϡϕʔγϣϯ։ൃ෦ Ұൠࣾஂ๏ਓΞδϟΠϧνʔϜΛࢧ͑ΔձΛࢧ͑Δձ ۭલઈޙͷΞδϟΠϧϞϯελʔ ઈౖ౭ͷے୲ ਪ͠ϝϯɿࢁຊ࠼
!5",",*/( ΤϯδχΞྺ ΞδϟΠϧྺ
!5",",*/( ࢲͷΞϓϩʔνํ๏ ΤϯδχΞͷཱͰ lϓϩμΫτͷޭͷͨΊz νʔϜͱҰॹʹվળ׆ಈΛͯ͠Ұॹʹ͢Δ CZ64"SNZ$PSQTPG&OHJOFFST IUUQTHPPHM38+QK
!5",",*/( Α͘Δ͜ͱ ✓ ;Γ͔͑Γ ✓ 4DSVN ✓ 91 ✓ %FW0QT
✓ ৫վળʢະདྷձٞʣ
!5",",*/( େͩͱࢥ͏͜ͱ 8IZ 8IBU )PX 4501 $0/5*/6& )PXͷલʹ 8IZͱ8IBUΛߟ͑Δ
ͷৎʹ߹Θͤͨ վળΛண࣮ʹ౿Ή ΊΔ͜ͱɾଓ͚Δ͜ͱ Λৗʹҙࣝ͢Δ νʔϜશһͰ νʔϜͷͨΊʹߟ͑ͯ νʔϜͷखʹΑͬͯਐΊΔ
!5",",*/( IUUQTTQFBLFSEFDLDPNUBLBLJOH IUUQTXXXTMJEFTIBSFOFU5BLBP0ZPCFQSFTFOUBUJPOT
!5",",*/( ෳͷݱͰ܁Γฦ͠࠶ݱ͖ͯͯ͠ ͜Ε͔ΒͨͿΜͰ͖ΔͰ͋Ζ͏ࣗ৴͋Δ ݱঢ়ΛΓɺ Λચ͍ग़͢ ༏ઌॱҐΛ͚ͭΔ ࣮ͭͣͭ֬ʹ ղܾΛ͢Δ νʔϜͷͱ Ϗδωεͷߩݙ
!5",",*/( ΤϯδχΞϦϯά νʔϜ Ϗδωε ϓϩμΫτ։ൃʹ͓͚Δཁૉ
!5",",*/( ΤϯδχΞϦϯά νʔϜ Ϗδωε ϓϩμΫτ։ൃʹ͓͚Δཁૉ ͜ͷ͋ͨΓ͔Βೖͬͯ
!5",",*/( ΤϯδχΞϦϯά νʔϜ Ϗδωε ϓϩμΫτ։ൃʹ͓͚Δཁૉ গ͍ͣͭ͛ͯ͘͠ Πϝʔδ
!5",",*/( ͕͔͔ͦͦ࣌ؒ͜͜Δ͠ɺ ຊͷಆ͍ͦͷઌʹ͋Δ 1IPUPCZ4QFODFS)BSSJT IUUQTHPPHMJ)C3O
!5",",*/( IUUQRJJUBDPN5",",*/(JUFNTFEGCFBCBE
!5",",*/( ࠓͷ͓ ΞδϟΠϧ։ൃΛ௨ͯ͡ ݱͷղܾͱ͖߹͍ଓ͚͖ͯͨࢲ͕ɺ Ϟϒϓϩάϥϛϯάͱ͍͏ಇ͖ํΛ ͡ΊͯΈͯಘΒΕֶͨͼؾ͖ͱɺ ͦͷதͰݟͨΞδϟΠϧͷਅʹ͍͓ͭͯ͠·͢ɻ
!5",",*/( Ϟϒϓϩάϥϛϯάͱ ✓ νʔϜશһ͕Օॴʹू·ͬͯɺ ͭͷը໘ɾͭͷ1$Ͱ࡞ۀΛߦ͏͜ͱ ✓ ࠒʹ)VOUFS͕ࣾऔΓΈ࢝Ίͨ ✓ "HJMFͰ8PPEZ;VJMM͕հͨ͠ ✓
݄ʹॳΊͯͷ.PC1SPHSBNNJOH $POGFSFODF͕։࠵͞Εͨ
!5",",*/( IUUQTXXXZPVUVCFDPNXBUDI WQ@QWTM4H&*
!5",",*/( )VOUFSࣾͷϞϒϓϩάϥϛϯά ✓ ͭͷ෦ॺʢਓʣ͕ಋೖΛ͍ͯ͠Δ ✓ ͭͷϞϒʹ͖ʙਓ͕ଟ͍ ✓ ৗʹϞϒϓϩάϥϛϯάΛ͍ͯ͠Δ ✓ Ϟϒͷग़ೖΓࣗ༝
✓ ߩݙͰ͖ͳ͔ͬͨΒྡͷϞϒʹҠಈͯ͠Α͍
!5",",*/( )VOUFSࣾͷ൴Βɺ ϓϥΫςΟεͱͯ͠Ͱͳ͘ ಇ͖ํͱͯ͠Ϟϒϓϩάϥϛϯά Λ͍ͬͯΔײ͡ )VOUFSࣾΛ๚ͨ͠ޱ͞Μᐌ͘
!5",",*/( ॳΊͯͷϞϒϓϩάϥϛϯά
!5",",*/( :ͬͨ͜ͱ ✓ (8୩ؒͷؒͰ͓ࢼ͠Ϟϒϓϩάϥϛϯά ✓ ̐ਓνʔϜ ✓ ৽نࣄۀ্ཱͪ͛ͷͨΊͷ10$ ✓
ٕज़ݕূΛ݉ͶͯϑΝʔετϓϩτλΠϓΛ࡞ ˎ10$1SPPG0G$PODFQUʢ֓೦࣮ূʣ
!5",",*/(
!5",",*/( σΟεϓϨΠ 1$
!5",",*/( υϥΠόʔ φϏήʔλʔ φϏήʔλʔ φϏήʔλʔ φϏήʔλʔ (6&45
!5",",*/( ϓϩςΠϯ ).#
!5",",*/( ఆΑΓ͏·͍ͬͨ͘ͷͰʜ ✓ ؒͯ͠࠷ऴʹϏδωεϝϯόʔ͚ʹ σϞΛ൸࿐ͨ͠ ✓ σϞ൸࿐·Ͱʹࣾʹ͍ΔఆϢʔβʔʹ ෳճϑΟʔυόοΫΛΒͬͯଈ࣌ө
!5",",*/( 8Θ͔ͬͨ͜ͱɾͰ͖ͨ͜ͱ ✓ ϋϚͬͨΓ͠ͳ͕Β࣮֬ͳखԠ͑ΛಘΒΕͨ ✓ ؒͰϑΟʔυόοΫϧʔϓΛճճͤΒΕͨ ✓ ఆϢʔβʔɾϏδωεϝϯόʔΛεϐʔυײͰ ڻ͔ͤΔ͜ͱ͕Ͱ͖ͨ Ϟϒϓϩάϥϛϯάୡײ͕͋ͬͯർΕΔ͚Ͳָ͍͠
!5",",*/( 5࣍ʹΔ͜ͱ ✓ ಇ͖ํͱͯ͠ͷϞϒϓϩάϥϛϯάΛଓ͚ͯΈΔ
!5",",*/( ࢲͨͪͷϞϒϓϩάϥϛϯά ʲܧଓதʳ
!5",",*/( ࢲͨͪͷϞϒϓϩάϥϛϯά ✓ ৗʹϞϒϓϩάϥϛϯά ✓ Ϟϒͷग़ೖΓࣗ༝ ✓ ϧʔϧࡉ͔ܾ͘ΊͣʹΓͳ͕Βม͍͑ͯ͘ ✓ ϦʔϯελʔτΞοϓ
✓ ։ൃӦۀͳΜͰϞϒͰߦ͏ ಇ͖ํͱͯ͠ͷϞϒϓϩάϥϛϯάΛऔΓೖΕΔ
!5",",*/( ݸਓͷ׆ಈ࣌ؒ લ;Γ͔͑ΓˍࠓΔ͜ͱ Ϟϒϓϩάϥϛϯά ன৯ Ϟϒϓϩάϥϛϯά Ϟϒ;Γ͔͑Γ ҰͷྲྀΕ
!5",",*/( ϞϒϓϩάϥϛϯάΛϲ݄ܦͬͨͷͰৼΓฦͬͯΈͨ
!5",",*/( ੜ࢈ੑɾεϐʔυ ৺ཧత҆શੑ ϓϩμΫτ։ൃ ϊϋɾεΩϧൖ
!5",",*/( ੜ࢈ੑɾεϐʔυ ৺ཧత҆શੑ ϓϩμΫτ։ൃ ϊϋɾεΩϧൖ
!5",",*/( ✓ ఆϢʔβʔɾϏδωεϝϯόʔʹ εϐʔυͰڻ͖Λ༩͑ΒΕͨ ✓ ٕज़తʹϋϚΔ͕࣌ؒ࠷খݶʹͳΔ ✓ ޙ͍ίϛϡχέʔγϣϯ͕ෆཁʹͳΔ ✓ ಇ͘͜ͱʹूதͰ͖Δ
ੜ࢈ੑɾ։ൃεϐʔυ
!5",",*/( ✓ ேྱ ✓ υΩϡϝϯτ ✓ ϨϏϡʔ ✓ (JU'MPX ✓
Χϯόϯ ✓ εϓϦϯτϓϥϯχϯά ✓ εϓϦϯτόοΫϩά ✓ ݟੵΓ ϞϒΛ࢝Ίͯͳ͘ͳͬͨͷ ˰࡞ۀใࠂෆཁ ˰ඞཁ࠷ݶͷΈ ˰ෆཁ ˰࡞ۀϒϥϯνෆཁ ˰ΧονϦͨ͠ͷෆཁ ˰ࠓͷϑΣʔζͰෆཁ ˰ࠓͷϑΣʔζͰෆཁ ˰ࠓͷϑΣʔζͰෆཁ
!5",",*/( ୲࡞ۀͷ߹ ࡞ۀͷ༰Λਂ۷Γͯ͠ΈΔͱʜ ୲ͨ͠࡞ۀͷಉظ ୲͢ΔͨΊͷίϛϡχέʔγϣϯ ͷ͕࣌ؒҙ֎ͱଟ͍ FY ✓ ϨϏϡʔ ✓
ೝࣝ߹Θͤ ✓ ใࠂձ ✓ ேྱ
!5",",*/( ୲࡞ۀͷ߹ ࡞ۀͷ༰Λਂ۷Γͯ͠ΈΔͱʜ ͪΖΜϛείϛϡχέʔγϣϯʹ ΑͬͯखΓΛ͢ΔՄೳੑ͋Δ
!5",",*/( Ϟϒͷ߹ ࡞ۀͷ༰Λਂ۷Γͯ͠ΈΔͱʜ ✓ ୲͢ΔͨΊͷίϛϡχέʔγϣϯඞཁͳ͍ ✓ νʔϜͷϛείϛϡχέʔγϣϯʹΑΔ खΓجຊతʹͳ͍
!5",",*/( Ϟϒͷ߹ ࡞ۀͷ༰Λਂ۷Γͯ͠ΈΔͱʜ ʮͬͯͳ͍ʯͰͳͯ͘ৗʹʮ͍ͬͯΔʯঢ়ଶ ;Γ͔͑ΓɺϨϏϡʔɺઃܭɺೝࣝ߹ΘͤɺݟੵΓɺܭըʜ
!5",",*/( ੜ࢈ੑɾεϐʔυ ৺ཧత҆શੑ ϓϩμΫτ։ൃ ϊϋɾεΩϧൖ
!5",",*/( ✓ ͓ޓ͍ͷಘҙΛิ͠߹͑Δ ✓ Θ͔Βͳ͍͜ͱΛڭ͑߹͑Δ ✓ ॻ͖ํਐΊํʹର͢Δߟ͑ํ͍Λ ৗʹ͢Γ߹ΘͤΔ͜ͱ͕Ͱ͖Δ ✓ શһͰμϝͳΒ͠ΐ͏͕ͳ͍ͱࢥ͑Δ
✓ ୡײΛڞ༗Ͱ͖Δ ৺ཧత҆શੑ
!5",",*/( ʮͬͨʔʂʂʯΛڞ༗Ͱ͖Δ
!5",",*/( ੜ࢈ੑɾεϐʔυ ৺ཧత҆શੑ ϓϩμΫτ։ൃ ϊϋɾεΩϧൖ
!5",",*/( ✓ ৗʹશһ͕͍ͬͯΔঢ়ଶΛ࡞ΕΔ ✓ ݁Ռ͚ͩ͡Όͳ͘աఔɾܦҢ͕Θ͔Δ ✓ ํΛৗʹ͢Γ߹ΘͤΒΕΔ ϊϋɾεΩϧൖ
!5",",*/( νʔϜͷࣝൣғͱͯ͠ͷϕετ #͞Μ $͞Μ "͞Μ
!5",",*/( νʔϜͷࣝൣғͱͯ͠ͷϕετ #͞Μ $͞Μ "͞Μ ୲࡞ۀͷ߹ "͞Μͷࣝൣғ ͳͷͰରԠՄೳ "͞Μͷࣝൣғ֎Ͱɺ #͞ΜʹϨϏϡʔͯ͠
Βͬͨ߹ͷΈ ϑΥϩʔՄೳ "͞Μͷࣝൣғ֎Ͱɺ $͞ΜʹϨϏϡʔͯ͠ Βͬͨ߹ͷΈ ϑΥϩʔՄೳ
!5",",*/( νʔϜͷࣝൣғͱͯ͠ͷϕετ #͞Μ $͞Μ "͞Μ Ϟϒͷ߹ ରԠՄೳ
!5",",*/( ੜ࢈ੑɾεϐʔυ ৺ཧత҆શੑ ϓϩμΫτ։ൃ ϊϋɾεΩϧൖ
!5",",*/( ✓ ৗʹνʔϜʹର͕ੜ·Ε͍ͯΔ ✓ ಈ͘ϓϩμΫτ͕νʔϜͷத৺ʹ͋Δ ✓ िϖʔεͰސ٬ʹձ͍͑ͯΔ ✓ ܭըৗʹมԽ͍ͯ͠Δ ϓϩμΫτ։ൃ
!5",",*/( ͦͦৗʹରΛ͠ͳ͍ͱࣄ͕ਐ·ͳ͍
!5",",*/( ಈ͘ϓϩμΫτ ϝλϑΝͱͯ͠ಈ͘ϓϩμΫτ͕ৗʹνʔϜͷத৺ʹ͋Δ
!5",",*/( ✓ ৗʹνʔϜʹର͕ੜ·Ε͍ͯΔ ✓ ಈ͘ϓϩμΫτ͕νʔϜͷத৺ʹ͋Δ ✓ िϖʔεͰސ٬ʹձ͍͑ͯΔ ✓ ܭըৗʹมԽ͍ͯ͠Δ ϓϩμΫτ։ൃ
͜Εͬͯɾɾɾʂʁ
!5",",*/( IUUQBHJMFNBOJGFTUPPSHJTPKBNBOJGFTUPIUNM
!5",",*/( ࠓࣄྫͷΛத৺ʹͨ͠ͷͰ Ϟϒϓϩάϥϛϯάͷίπ)PXUPͷΛ͍ͯ͠·ͤΜ
!5",",*/( ࢲୡͱҰॹʹಇ͖·ͤΜ͔ʁ Ϟϒ͠ ✓ ϞϒݟֶˍମݧπΞʔ ✓ Ϟϒϓϩάϥϛϯάษڧձ $POUBDUNF!5",",*/(
!5",",*/( ·ͱΊ
!5",",*/( IUUQTTQFBLFSEFDLDPNUBLBLJOH IUUQTXXXTMJEFTIBSFOFU5BLBP0ZPCFQSFTFOUBUJPOT ࠷ऴతʹʮͬͱҰॹʹಇ͚͍͍ʯ ͱ͍͏݁ʹͳΔ͜ͱ͕ଟ͍
!5",",*/( ✓ ͳͥࣄΛ୲͢Δඞཁ͕͋Δͷ͔ ✓ ҰॹʹΔΑΓࣄΛ୲͢Δํ͕ޮతͳͷ͔ ✓ ͳͥόʔδϣϯཧ͕ඞཁͳͷ͔ ઌೖ؍ʹͱΒΘΕ͍ͯͳ͔͔ͬͨʁ
!5",",*/( ιϑτΣΞ։ൃ্ͷͷଟ͘ɺ ٕज़తͱ͍͏ΑΓࣾձֶతͳͷͰ͋Δ τϜɾσϚϧίςΟϞγʔɾϦελʔʢϐʔϓϧΣΞʣ
!5",",*/( ୲͢Δ͜ͱΛલఏʹɺ ͦͷͨΊͷίϛϡχέʔγϣϯΛ ͏·͘Ζ͏ͱ͍͗ͯ͢͠ͳ͔ͬͨͩΖ͏͔
!5",",*/( %FW -07&
!5",",*/( ϓϩμΫτ͕ಈ͍ͨ࣌ɺ ϓϩμΫτΛ͓ͬͨ٬͞Μ͕تΜͰ͘Εͨ࣌ɺ ؒͱҰॹʹʮͬͨʔʂʂʯͱݴ͍ͬͯ·͔͢ʁ
!5",",*/( IUUQBHJMFNBOJGFTUPPSHJTPKBNBOJGFTUPIUNM ΞδϟΠϧͷਅͦ͜ʹ͋ΔΜ͡Όͳ͍͔ͳʁ
!5",",*/( ࢥ͍ग़ͤͯ͘͞Εͨͷ͕Ϟϒϓϩάϥϛϯάͩͬͨ
!5",",*/( ୭͕͜ͷಇ͖ํΛؾʹೖΔΘ͚Ͱͳ͍ ҙ
!5",",*/( 1IPUPCZ5IF64"SNZ IUUQTHPPHM:F7VX ೃΕ߹͍Ͱͳܹ͘͠߹͑Δ ᪳͏͜ͱͳ͘ڞʹӽڥͰ͖Δ ઓ༑
!5",",*/( ͦ͏͍͏ਓୡͱࢲҰॹʹϞϒ͍ͨ͠ ͨΒ͖
!5",",*/( %FW -07&Ͱ͔͢ʁ !5",",*/(