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
Shape Up
Search
kawasita
November 28, 2020
Research
1
370
Shape Up
Shape Up という Basecamp社の開発手法に関する個人的なまとめと見解。
kawasita
November 28, 2020
Tweet
Share
Other Decks in Research
See All in Research
なめらかなシステムと運用維持の終わらぬ未来 / dicomo2025_coherently_fittable_system
monochromegane
0
2.8k
多言語カスタマーインタビューの“壁”を越える~PMと生成AIの共創~ 株式会社ジグザグ 松野 亘
watarumatsuno
0
120
When Submarine Cables Go Dark: Examining the Web Services Resilience Amid Global Internet Disruptions
irvin
0
300
最適化と機械学習による問題解決
mickey_kubo
0
170
MIRU2025 チュートリアル講演「ロボット基盤モデルの最前線」
haraduka
15
7.9k
GPUを利用したStein Particle Filterによる点群6自由度モンテカルロSLAM
takuminakao
0
250
PhD Defense 2025: Visual Understanding of Human Hands in Interactions
tkhkaeio
1
180
集合間Bregmanダイバージェンスと置換不変NNによるその学習
wasyro
0
140
言語モデルの地図:確率分布と情報幾何による類似性の可視化
shimosan
5
1.4k
Galileo: Learning Global & Local Features of Many Remote Sensing Modalities
satai
3
220
EarthSynth: Generating Informative Earth Observation with Diffusion Models
satai
3
250
日本語新聞記事を用いた大規模言語モデルの暗記定量化 / LLMC2025
upura
0
180
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Agile that works and the tools we love
rasmusluckow
330
21k
GraphQLとの向き合い方2022年版
quramy
49
14k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Designing for Performance
lara
610
69k
Code Reviewing Like a Champion
maltzj
525
40k
Transcript
Shape Up ͔Θͨ͠ - 10Ҏ্ϦϞʔτϫʔΫܦӦ͍ͯ͠Δձࣾͷ։ൃख๏հ -
ಈػ ϦϞʔτϫʔΫͰεΫϥϜϕʔεͷ։ൃΛߦͳ͍ͬͯΔ͕ɺ ݸਓతʹ͍·͍ͪͬ͘͠Γ͖ͯͳ͍ɻ ̍ਓͷ࡞ۀ͍࣌ؒ͠ɺಉۭؒ͡ʹ͍Δ͜ͱͰิ͞ΕΔใ ͕ɺνʔϜίχϡχέʔγϣϯΛத৺ʹஔ͘εΫϥϜͩͱେࣄ ͳؾ͕͢Δɻ͜ͷล͕ෆ͢ΔͭΒΈΛײ͡Δɻ ͬͱɺϦϞʔτϫʔΫʹదͨ͠։ൃϓϩηεͬͯͳ͍͔ ͳʁͦ͏͍͑ϦϞʔτϫʔΫͰͬͯΔձࣾ͋ͬͨ ͳɻௐͯΈΔ͔ɻ
Shape Upͱ Shape Up Basecamp ͱ͍͏ձࣾͰ ࠾༻͞Ε͍ͯΔɹΞδϟΠϧͳ։ൃख๏ɹͰ͢ ͦͦBasecampࣾͬͯ
Basecampࣾͱ WebΞϓϦέʔγϣϯΛ࡞͍ͬͯΔಠࣗੑͷߴ͍ձࣾ ɾΞϝϦΧͷγΧΰʹຊ͕ࣾ͋Δ30ਓ͘Β͍ͷখ͞ͳձࣾ ɾࣗͨͪͷಇ͖ํͷϊϋΛWebຊͰൃ৴͍ͯ͠Δ ɾ Ruby on Rails ͱ͍͏༗໊ͳϑϨʔϜϫʔΫΛੜΈग़ͨ͠ খ͞ͳձࣾɺେ͖ͳࣄ
ڧ͍νʔϜΦϑΟεΛࣺͯΔ 2010/2 ग़൛ 2004ͷొҎޙɺRuby on Railsͷίϯηϓτ ଞͷϑϨʔϜϫʔΫʹେ͖ͳӨڹΛ༩͍͑ͯ Δ 2014/1 ग़൛
વͷΑ͏ʹɺ։ൃϓϩηεWebͰެ։͞Εͯ·͢ Ͱɺͦͷલʹ ͦͯ͠ɺͦͷதɺεΫϥϜXPͱ͍ͬͨ ϝΠϯετϦʔϜͷΞδϟΠϧ։ൃϓϩηεͱશવҧ͏໘ന͍ͷͰͨ͠ Ұൠతͳ։ൃΛྲྀΕΛ͓͞Β͍ Ҿ༻IUUQTCBTFDBNQDPNTIBQFVQ
Α͋͘ΔΞδϟΠϧ։ൃϑϩʔ όοΫϩά ϫΠϠʔ σβΠϯ ࠓճΔ͜ͱ ݟੵΓ ϨϏϡʔ िؒఔͷ͍։ൃαΠΫϧ Կपճ͠ΛߴΊͯϦϦʔε اը10
ϦϦʔε ։ൃνʔϜ ※εϓϦϯτXPͳͲͰɺࡉ͔͍ख๏ͷࠩ͋Δͱࢥ͍·͕͢ɺେ·͔ͳྲྀΕͰઆ໌͍ͯ͠·͢
Α͋͘ΔΞδϟΠϧ։ൃϑϩʔ όοΫϩά ϫΠϠʔ σβΠϯ ࠓճΔ͜ͱ ݟੵΓ ϨϏϡʔ िؒఔͷ͍αΠΫϧ Կपճ͠ΛߴΊͯϦϦʔε اը10
ϦϦʔε ։ൃνʔϜ ͰͲ͏͍ͯ͠Δʁ ˞৭෦໌֬ʹͳ͍ͱنఆ͍ͯ͠Δͷ
εΩϧͷߴ͍ਓ͕ՌͷେΛܾΊΔ ॏཁͳͷɺ۩ମత͗͢ͳ͍͜ͱ ͍͘ΒϦιʔεΛṌ͚͍͍͔ͯΛܾΊΔ ͲΕ͚͔͔ͩΔʁˠͲΕ͚ͩ͑Δ͔ ͍͔ʹࡉ͔͘νέοτղ͠Α͏ͱɺ৽نੑͷߴ͍࡞ۀͷ ݟੵΓͷਫ਼ͷ՝ͰΔɻ੍࣌ؒͷΈͰυϥΠϒ͢Δ΄͏͕ τʔλϧͰྑ͍ͱ͍͏ׂΓͬͨஅɻ ͋͑ͯநతͳ෦Λ͢͜ͱͰɺσβΠφʔ։ൃௐ ͷ༨Λ͢ɻ࣮ࡍʹ࡞ۀ͢Δલͷૣ͗͢Δ۩ମԽɺ ؒҧͬͨࡉ෦ͷίϛοτΛੜΈग़ͯ͠͠·͏ɻ
ϓϩδΣΫτʹԠͨ͡ਓࡐΛຖճॊೈʹΉ ׂΓࠐΈͷͳ͍ͻͱ·ͱ·ΓͷظؒΛ༩͑Δ શྗͰΓଓ͚ΒΕͳ͍ ։ൃऀࡋྔͰ͑Δ࣌ؒɻܰඍͳόάରԠɺ ϦϑΝΫλͳͲϓϩδΣΫτͷ՝ΛফԽͨ͠Γɺ εΩϧΛߴΊͨΓͳͲɻ TIBQJOH CFUUJOH CVJMEJOH ̒िؒͰඞͣϦϦʔε ̎िؒͷٳଉ
·ͱΊ Shape Up ΞδϟΠϧͷຊ࣭Λମݱͨ͠։ൃख๏ ࣗͨͪͰߟ͑ɺࣗͨͪͰϓϩηεΛ࠷దԽ͍ͯ͘͠ Ҿ༻: ΞδϟΠϧϚχϑΣετ (ݪଇ)ΑΓ νʔϜ͕ͬͱޮΛߴΊΔ͜ͱ͕Ͱ͖Δ͔ΛৼΓฦΓɺ
ͦΕʹج͍ͮͯࣗͨͪͷΓํΛ࠷దʹௐ͠·͢ɻ ։ൃϓϩηεʹɺ৫ͷจԽ͕ө͞Ε͍ͯΔ ͜ͷ࢟ݟश͏͖͕ଟ͍
ࠓճͷൃදͰ͋·Γ৮ΕΒΕͳ͔ͬͨ෦ 4IBQJOH #FUUJOH #VJMEJOH ݸਓతݟղ 1SPT$POT XFFLXFFLͷཧ༝ͳͲ ֻ͚ςʔϒϧͷத ͳͥɺ͋͑ͯ۩ମԽ͠ͳ͍͔ νʔϜͱϚωδϝϯτͳͲ
Ͳ͜ʹྑ͞Λײ͡Δ͔ɺͲ͕͜ؾʹͳΔ͔ ݟੵΓ͠ͳ͍ख๏ όοΫϩάΛ࣋ͨͳ͍ͳͲ ώϧνϟʔτͷ׆༻ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 4IBQJOHͷ࣮ྫͳͲ
͓·͚
<4IBQJOH>ͦͷத ٕज़తͳௐࠪɺσβΠϯͷେɺԿΛ࡞Δ͔໌֬ ͋͑ͯநతʹ͢Δ ϥϑεέονͰΞτϓοτ Ҿ༻IUUQTCBTFDBNQDPNTIBQFVQDIBQUFSDBTFTUVEZUIFEPUHSJEDBMFOEBS ૣ͗͢Δ۩ମԽɾ࠷దԽؒҧͬͨࡉ෦ͷίϛοτΛ༗Ή ̒िؒͷ੍ͷதͰίεττϨʔυΦϑʹ͔͚ͯࡉ෦۩ମԽ͢Δ ੑௐͷ༨Λͨ͢Ίʹ۩ମత͗͢ͳ͍͜ͱ
Ṍ͚ͷςʔϒϧ ΫʔϧμϯͰ։࠵ɻ࣍̒िؒͰԿΛΔ͔ͱϦιʔεͷׂΓͯɻ όοΫϩάͳ͍ɻ٫Լ͞Εͯେࣄͳͷຊਓ͕͓֮͑ͯ͘ɻ <#FUUJOH>ͦͷத $&0 $50 ্ڃٕज़ऀ ετϥςδετ͕੮ʹͭ͘ ˞࣍ͷṌ͚ͷʹ࠶ग़͢ͷຊਓͷཧɻ͗͢ΔόοΫϩάऴΘΒͳ͍͠શһͰཧ͢Δ࣌ ؒແବͳ͚ͩɻຖճɺਅͬ৽ͳςʔϒϧͰԿΛΔ͖͔Λ͢ɻ
˞࠷ߴݖྗ͕͋Δਓ͕ࢀՃ͢ΔͷͰҙࢥܾఆ͕̍ճͰܾ·Δɻผ࡞ۀͷׂΓࠐΈͳ͍ɻਓ Ϧιʔεͷ૪ୣઓͳ͍ɻܦӦଆϋϯυϧΛѲ͍ͬͯΔײ֮ΛಘΔ͜ͱ͕Ͱ͖Δɻ Ṍ͚ͱଋɻϦϦʔεͷʹׂΓࠐΈͷͳ͍िؒΛඞͣ༩͑Δɻ ˞͚ͩผ࡞ۀͳͲ͠ͳ͍ɻͦΕͰҎ্ͷϚΠφε͕ͰΔͷΛཧղ͍ͯ͠Δ͔Β िؒαʔΩοτϒϨʔΧʔͱͯ͠͏ɻ ˞िؒͷՁ͔͠ͳ͍߹̒ि͔ؒ͠Θͳ͍ɻԆجຊ͠ͳ͍ɻͰ͖ͳ͍߹ࢭΊΔɻ ˞͜ͷ߹ɺ4IBQJOHͰؒҧ͍ͬͯΔՄೳੑ͕͋ΔͷͰɺ͔ͦ͜Βݟ͢
Կͬͨ࡞ۀʹରͯ֬͠ߴ͘༗ޮɺҰํɺ৽نͷ࡞ۀͷ͔࣌ؒ͠Εͳ͍ɻ <#FUUJOH>ݟੵΓ ࣮ࡍʮ͔Βͳ͍ʯ͕ਖ਼͍͕͠ݴ͑ͳ͍ͷͰɺԽͯ͠ܭըʹ৫ΓࠐΈܭը͕ڰ͏ɻ ݟੵΓରʹΑͬͯҙຯ߹͍Λม͑ͯ͠·͏ ݟੵΓͷଊ͑ํΛม͑Δ Ͱͳ͘ώϧνϟʔτʹΑΔࢹ֮ཧ ࡞ۀٰΛొΔΑ͏ͳͷɻٰͷ্ʹཱͯશ͕ݟ͑ͯ͋ΔఔΘ͔Δɻ Ҿ༻IUUQTCBTFDBNQDPNTIBQFVQDIBQUFS ֤ػೳʹ͖ͭɺࠓͲͷҐஔʹ͍Δ͔ΛͰͳ͘ഽײͷఆظϓϩοτͰࢹ֮Խ͢Δɻ ͳ͔ͳٰ͔ͷ্ʹཱͯͳ͍߹ɺγεςϜ௨͢ΔΑ͏ʹͯ͠ةػཧ͍ͯ͠Δɻ
ΨϯτνϟʔτϚΠϧετʔϯमਖ਼ΛԿ܁Γฦ͍ͯͨ͠Βͦ͏͍͏͜ͱɻ ʮ͋ͱͲΕ͘Β͍͔͔ΔʁʯͰͳͯ͘ɺ͜ͷํِ͕͑͘͢Γ͕গͳ͍ɻ
ݟ͔͚ͷਐḿΛՔ͕ͳ͍ɻ࠷ৗత ѲࡁΈ ͰؾʹͳΒͳ͍ͷ࠷ޙʹճ͢ɻ <#FUUJOH>ݟੵΓ ॏཁͷͷͷ͏ͪɺ࠷ॳʹະͷͷΛٰͷ্·Ͱ͍࣋ͬͯ͘͜ͱ ॏཁͰະͷ͔Βઌʹย͚Δ͜ͱ ੍ͷதͰ#FTUͳҊΛܾఆ͢Δ σβΠφʔͱΤϯδχΞ࠷ળΛࢦ͢ɻࡉ͔͍νέοτͰݟੵΓΛԽ͢Δ ͱɺͦͷΛݶք·ͰͬͯϚΫϩʹίʔυΛඒ͘͠ᘳʹͨ͠ΓσβΠϯ ʹৼΓ͕ͪɻ
˞ࢲݕࡧػೳ͚ͩແବʹϦονʹͨ͠ܦݧ͕͋Δɻɻ ̒िؒͱ͍͏େ͖ͳࡋྔΛ͍͋ͨ͑ͯΔͷͦͷͨΊɻͦͷେ͖ͳࢹ࠲ͱ੍ͷத ͰɺτϨʔυΦϑΛਤΓͭͭɺಛఆͷػೳʹͲ͜·ͰίετΛ͔͚Δ͔Λ࡞ۀऀࣗ ͕ܾΊΔɻ ωδΛకΊ͢λΠϛϯά ະͷͷ͕શٰͯͷ্ۙʹདྷͨΒɺωδΛకΊ͢ ظݶ̒िؒͰݻఆͳͷͰඞཁػೳΛऔࣺબɺݟੵΓ֬ߴ͘ௐͰ͖Δɻ
Βͳ͍ ͬͯΔ Ͳ͏ͬͯΔͷʁ ԿΔͷʁ λεΫશମͷ૾͕ݟ͑Δ ͻͨ͢Β࡞ۀΛফԽத <ิ>ώϧνϟʔτ ݟੵΓ֬
కΊΓ͕ϦΞϧͳͷͰ࣌ؒΛݡ͘͏ ࣮ઓͷ݁ՌׂΓग़ͨ͠ҙຯͷ͋ΔͷΛ࡞Γ্͛Δͷ࠷దͳ͞ ՌͷํΛिؒʹϦϦʔεͰ͖ΔαΠζʹௐ͢Δ िؒ िؒຖͷεϓϦϯτΛ࠾༻͠ͳ͍ཧ༝ ͗ͯ͢ҙຯ͕͋ΔࣄΛ͛͠ΒΕͳ͔ͬͨ िؒʹճܭըͷΦʔόʔϔουίετ͕େ͖͗͢Δ िؒͷΫʔϧμϯΛ࠾༻ͨ͠ཧ༝ αΠΫϧऴ൫ଟͳͷͰɺ࣍ͷܭըΛ͢༨༟͕ͳ͍ ࣗͨͪͷΞΠσΟΞΛࢼͨ͠ΓόάରԠ͢Δ࣌ؒͱͯ͠׆༻
<#VJMEJOH>XFFLXFFLϑϩʔ αΠΫϧͷඪ४Խࣗମඞཁ ϦιʔεΧϨϯμʔςτϦεαΠΫϧඪ४ԽͰۃྗճආ ଉΛ͢Δ༨༟Λ༩͑Δ ϑϩʔʹ༧ΊΈࠐΉ ࡞ۀʹۃྗ࣌ؒΛ͍͍ͨ ۩ମԽ͗͢͠ͳ͍4IBQFௐʹ༗ޮ
<#VJMEJOH>νʔϜͱϚωδϝϯτ ɾϚΠΫϩϚωδϝϯτ͠ͳ͍ɻ ɾʑͷձٞͤͣɺݸผͷػೳʹԿ࣌ؒ͏͔ཧ͠ͳ͍ɻ ɾηϧϑϚωδϝϯτ͕جຊɻߴ͍ͱ͜ΖʹඪΛஔ͘ɻ ɾϓϩάϥϚσβΠφʔͷਓ͔ΒͳΔεϞʔϧνʔϜ͕ओମ ɾνʔϜϦϦʔεΛෛ͍ɺػೳείʔϓΛࣗΒఆΊΔɻ ɾϚωʔδϟ͕λεΫΛΓࠁΈɺϝϯόʔ͕νέοτ ͱͯ͠ৼΔ͏ํ๏ͱશʹҟͳΔɻ ߏͱׂ Ϛωδϝϯτ
جຊϦϞʔτ৫ͳͷͰͰ͖ͳ͍ʁ ɾཧʹ͏࣌ؒΛۃྗݮΒ͠ɺΑΓࣗతͳ৫ɻ ਓʹࣄΛৼΔ͚ͩͷਓෆཁɺօ͕Կ͔ΛੜΈग़͢͜ͱɻ݁ՌΛͩ͢͜ͱɻ
ݸਓతݟղ ɾΤϯδχΞࢹͰݟΔͱٻΊΒΕΔϋʔυϧ݁ߏߴ͍ ɾຖճνʔϜ͕มΘΔͷύϑΥʔϚϯεؾʹͳΔ ɾηϧϑϚωδϝϯτͰ͖ͳ͍ͱͭΒ͍ ɾׂΓࠐΈͷͳ͍࣌ؒΛ͑Δͷ࡞ۀʹूதͰ͖Δ ɾࡋྔͷ෯͕େ͖͘ձࣾશମͷࣗݾ৫Խ͕ਐΈͦ͏ ɾϝϦϋϦ͕͋Δͷݸਓతʹ͖ ྑ͍ͱײͨ͡ ؾʹͳͬͨ ɾن͕େ͖͍৫ʹͲ͜·ͰదԠͰ͖Δ͔ٙ
ɾϚωδϝϯτίετԼ͕Γͦ͏ ͏·͘ػೳ͢Ε ɾόοΫϩάΛগͳ͘ཧ͢Δͷྑ͍ ˞࣮ࡍʹಋೖ্ͨ͠ͰͷݟղͰ͋Γ·ͤΜɻ͋͘·Ͱײɻ