チケットシステムの設計と実装、『あのチーム』の運用
dRuby20प[email protected]
View Slide
ࠓͷ20 RWiki800ੜ͖݁ՌʢඪͰͳ͍ʣɻࠓͷੜ͖ͷൿ݃Ͱͳ͍Αʂੜ͖Ͱ͖ͨͷྑ͍ͱ͜Ζ͕͔͋ͬͨΒͩͱࢥ͏ͷͰհ͠·͢ɻ
ࠓͷΦνXP͋ͷνʔϜ͍͢͝ʂ
ࢲʹ͍ͭͯ- Ruby- XP!N@TFLJ
RubyͷίϛολERB, dRuby, RindaRubyKaigi&3#Θ͞Εͨਓ͍Δ͔͠Εͳ͍ɻ3VCZ,BJHJຖొஃʂϥοΩʔʂ֏
RWikiERB dRubyWikiWikiWebRDRubyOODB3%3VCZͷจॻͷͨΊͷॻࣜɻ1MBJOΛݟͳ͕ΒNBU[͕ߟ͑ͨʂʁ֏
eXtreme Programming2004 XPRWiki StoryCardݱࡏΠςϨʔγϣϯ91ࡇΓͰԿ͔ࣄྫΛհ͍ͯ͠Δ
͋ͷνʔϜͷಛΈࠐΈɾࣗࣾɾϛογϣϯΫϦςΟΧϧɾେنɾฒߦෳόʔδϣϯ8JLJͷنສϖʔδɻຖϖʔδ͕ฤू͞Ε͍ͯΔɻ
RWiki StoryCard֦ுRWikiࠓհ͢ΔγεςϜɻνέοτΛϖʔδͰදݱ͢ΔνέοτγεςϜɻલʹ#VH5SBDLJOH4ZTUFN֦ு͋ͬͨɻ :"31$Ͱͨ͠Α͏ͳؾ͢Δ
දੈل͔ΒੈلERb, dRuby 1999RWiki 20002001 BTS YARPC19101StoryCardKeynote 2004 (JaSST, XP )2008 ( )2014 XP / XP (XP )2017 ,ruby-1.8.7 2.6 2019
࣍͜ͷॱͰհ͠·͢
νέοτฤ
νέοτ൪߸prefix + 3 4prefix 54
ਖ਼نԽ͞Εͯͳ໊͍લͷૢ࡞String#succ్தͰ໋໊نଇΛ֦ு͢Δ͜ͱʹͳͬͯগ͠য͕ͬͨ4USJOHTVDDΛࢥ͍ग़ͯ͠ηʔϑͩͬͨ֏
νέοτͷstatusͳΜ͍ͯ͏ͷʁ
छྨstory bugtaskUBTL91తͳUBTLͰͳ͍ɻ͜ͷνʔϜͰೖΕࢠͷTUPSZӡ༻্ېࢭɻඞͣ୯ಠͰ͔݁֬͠ΊΒΕΔ୯Ґʹ͢Δɻ
ΠςϨʔγϣϯ999ͩΜͩΜλΠϜϘοΫεͱͯ͠ͷͩ͜ΘΓ͕ͳ͘ͳͬͯɺͨͩͷ൪ʹͳͬͨ
ঢ়ଶopen closedoneཱࢹʹΑͬͯΓ͍ͨঢ়ଶมΘͬͯ͘Δ͠ɺΑΓࡉ͔͍ঢ়ଶΛൃݟ͢Δέʔε͋ΔɻͰຖνέοτΛಡΜͰΕΘ͔ΔͷͰɺ݁ہऴΘͬͯΔ͔Ͳ͏͔͚ͩ໌ࣔ͢Εॆͳ͜ͱ͕Θ͔ͬͨɻ
ݟੵ1 1.0ॱௐͳͷ͔ɺࠔ͍ͬͯΔͷ͔ɺ͍ͭࢼͤΔͷ͔ɺͦ͏͍͏͜ͱʹڵຯ͕͋Δɻ࣮Ͳͷ͘Β͍ۤ࿑͔ͨ͠Θ͔Δ͚ͲɺࠓͰ΄ͱΜͲ͍ಓ͕ͳ͍ɻ
ݟੵೲظΛଋͤͨ͞ΓΛڝͬͨΓɺͦ͏͍͏͜ͱͲ͏Ͱ͍͍ɻʢͦ͠͏͍͏͜ͱٻΊΔͱݟੵΓ͓͔͘͠ͳΔྫ/͞ΜϕϩγςΟࣄ݅ʣ
statusมΘΓଓ͚ͯͨઐ༻ͷϑΥʔϜͷํ͕ϓϩάϥϚతʹ࡞Γ͍͢σʔλͷ੍ɺਖ਼نԽͳͲϓϩάϥϚͷ߹Λԡ͚ͯ͠ͳ͍
WikiϖʔδΛͦͷ··͏ࢴͷෆ۩߹ථཝ֎ʹϝϞॻ͍ͨΓɺෆશͩͬͨΓࣗ༝͕ͩཧղͰ͖Δɻ8JLJʹॻ͍ͨఆܕʗࣗ༝ͳهड़Λղऍ͢ΔΈΛ༻ҙͨ͠ɻ
จॻ͔ΒσʔλΛநग़RD: status3%EBUBͱ͍͏:".-Ҏલʹ3%ͷߏΛσʔλදݱʹ͏ࢼΈ͕ͨͿΜ͋ͬͨɻ38JLJ௨ৗͷจॻʹ3%EBUBΛࠞͥͯ͏Α͏ͳײ͡ʂ֏
จॻ͔ΒσʔλΛநग़JSC͔ΒE3VCZͰ38JLJͷ༰ΛݟΔͱ͜Μͳͷ֏
ऀࣜςετStory/Bug+B445ΑΓ
ऀࣜTDDͷࣗવͳ֦ுTDDνέοτސ٬͕৮ͬͯΘ͔ΔΑ͏ͳʮγεςϜʹର͢ΔมߋʯͰ͋Δͱ͍͏͜ͱɻϥΠϒϥϦͳͲ෦͚ͩ࡞ͬͯ৮Εͳ͍ͷνέοτͷ୯Ґʹ͠ͳ͍ɻ
ςετͱཤྺݱࡏཤྺͱɺϦεΫɺ։ൃͷςʔϚ͔Βܭࢉ͓ͨ͢͢͠ΊςετεΠʔτநग़ΞϧΰϦζϜʹΑΓɺςετͷසΛௐ͍ͯ͠Δʢ͔Βϲ݄ʹҰʣ
நग़͞Εͨςετͷར༻(('test:νέοτ໊'))֏
ཤྺͷ͍ͭ͢͝2003NG৽͍༷͠աڈͷ༷Λ্ॻ͖͢ΔͷͰ͠͠ໃ६ͪ͠Ό͏·࣮͕ͨมԽͨ͜͠ͱͰςετ͢Δҙຯ͕ͳ͘ͳͬͨͷ͋Δ࠷ۙɺͷνέοτͷςετ͕ෆཁʹͳ͍ͬͯΔͷʹؾ͍ͮͨ
ΠϯσοΫεฤ͍ͭͱͲΜͳ෩ʹҧ͏͔ͻͱͰΘ͔Δɻ
ΠϯσοΫεͷ࣮Iteration, ,શͯͷνέοτ͕DMPTFʹͳͬͨΠςϨʔγϣϯΛӅ͢ΞΫςΟϒͳΠςϨʔγϣϯ͚͕ͩදࣔ͞ΕΔ֏
νέοτͷछྨͰྨstory bug
αΠϯͷॳͷҙਤ
ࠓɾόʔδϣϯɾ୲ऀ
ேձฤ9:15-10:00
ேձϏϡʔStory
ேձϏϡʔyonezawa
yonezawaேձϏϡʔ
ேձϏϡʔ
yonezawaேձϏϡʔPC visitedclose
yonezawaேձϏϡʔ45 45bug story
45ؒ4591͔ΒֶΜͩͷͷͻͱͭʼλΠϜϘοΫε
ᝦࢴͱนΞΫςΟϒͳνέοτʢ͍·ͬͯΔνέοτʣʹ͍ͭͯᝦࢴෆ۩߹ථͳͲͷཧతνέοτʹࣅ͍ͤͯΔ
ࢴͰ͍͜͠ͱߋ৽͠ͳ͍ͳΒࣺͯͨ΄͏͕͍͍ɻຖνέοτಡΈฦͯ͠ߋ৽ͯ͠ΔͱυϦϧֶशͷΑ͏ͳޮՌ͕͋ͬͯɺϝϯόʔͷઢ͕ڧԽ͞ΕΔɻਓଆ͕ϓϥΠϚϦͷσʔλϕʔεʹͳΔɻ
͓·͚/͋͑ͯল͍ͨͷྲྀߦΓͷγεςϜʹ͍͍ͨͯ͋ΔͭɻͦΕͧΕཧ༝͕͋ͬͯল͍ͨɻ
͓·͚/͋͑ͯল͍ͨͷ࡞͔ͬͯΒফ͞Εͨͷଟ͍ɻͨͱ͑௨ܥ༻ҙ͕ͯ͋ͬͨ͋ͬͯͨ͠͠ํ͕͍࣮֬͠ͳͷͰӅ͞Εͨɻʢπʔϧ࡞Δํָ͍͠ʣ