XP祭り2017 の発表資料です。 https://yuzutas0.hatenablog.com/entry/2017/09/20/083000 に補足を記載しています。
৽ถΤϯδχΞ͕ϨΨγʔγεςϜΛ ࢮʹڰ͍ͰάϩʔεϋοΫͨ͠2017-09-16 (Sat) XPࡇΓ2017 presented by @yuzutas0
View Slide
ɹSho Yokoyamaɹ@yuzutas0ɹɹ ● ϦΫϧʔτςΫϊϩδʔζ● ೝఆεΫϥϜϚελʔ● ࣮͏৽ถͰͳ͍
࣮͏৽ถͰͳ͍ ↓࣌ΛৼΓฦΔͱ ʮ݁ՌతʹΞδϟΠϧϓϥΫςΟεΛ ద༻͍ͯͨ͠ͷͰʁʯ ↓ ͜ͷػʹࡇΔ
ɹຊ͢༰৽ถΤϯδχΞ ͍εΩϧϨϕϧ19νʔϜ͔Βಉ࣌ґཔ ଟ༷ͳεςʔΫϗϧμʔ10ɾେن ϨΨγʔγεςϜ4ϲ݄Ͱ120Ҋ݅Λ͘͞ ϢʔβʔΞΫγϣϯ2.8ഒࢼߦࡨޡ ϘτϧωοΫΛ1ͭ1۪ͭʹղফ x ݁ՌతʹΞδϟΠϧϓϥΫςΟε
੍͕ଟ͍ͱ͖ͦ͜● ϘτϧωοΫͷಛఆͱղফ● ثʢΞδϟΠϧϓϥΫςΟεʣ→ ظؒͰՌΛ্͛Δ͜ͱ͕Ͱ͖Δɹ͍͑ͨ͜ͱ
1. ʲഎܠʳάϩʔεϋοΫͩʂ2. ʲ՝ʳεςʔΫϗϧμʔ͕Ϡό͍ʂ3. ʲ՝ʳ։ൃεΩϧ͕Ϡό͍ʂ4. ʲ՝ʳγεςϜ͕Ϡό͍ʂ5. ʲ·ͱΊʳΞδϦςΟͩʂɹΞδΣϯμ
ɹϦϘϯϞσϧͷϝσΟΞΫϥΠΞϯτاۀΧελϚʔϢʔβʔࠂΛग़͢ใΛ୳͢ ࢠɹ8αΠτʢ1$εϚϗΨϥέʔʣɹϞόΠϧΞϓϦʢJ04ɺ"OESPJEʣIUUQGSFFJMMVTUSBUJPOTHBUBHOFUIUNM
ڝ߹ͷ಄↓ظؒͰϢʔβʔΞΫγϣϯΛ૿ͦ͏↓ଟͷνʔϜ͕ಠࣗͰPDSαΠΫϧΛճ͢ɹάϩʔεϓϩδΣΫτ
ɹAPج൫Λ୲͜͜ͷ
ɹAPج൫Λ୲͜͜ͷ͜͜ͷ
ɹAPج൫Λ୲͜͜͜͜ͷ͜͜ͷ
ɹWebAPI։ൃ
ɹ19νʔϜ͔Βґཔ͕ͳͩΕࠐΉ
ɹWebAPI͕શγεςϜͷதܧͩͬͨ50+ ͷαϒγε 3500+ tables 100,000+ columns‘00ͷSEOରࡦͷ໊ ίϯςϯπྔͷଟ͞Ͱ্Ґදࣔ ෳαΠτͷ༰Λޓ͍ʹܝࡌ͋͠͏༷
ɹࢪࡦΛࢧ͑Δׂࢪࡦࢪࡦࢪࡦ
ɹࢪࡦྫ࣌·ͩະख़ͩͬͨ ϞόΠϧΞϓϦʹը૾Λग़͢ϝϧϚΨͷ࠷దԽϨίϝϯυʢ৴όον → WebAPI → SolrʣIUUQTTVQQPSUUNPCJMFDPNDPNNVOJUZQIPOFTUBCMFUTEFWJDFTBQQMFJQIPOF IUUQTQJYBCBZDPNFOMFUUFSNBJMNBJMJOHFNBJMNBJMCPY
ɹԹײ1ՕॴͰӨڹ֬ೝΛଵͬͯ ͕ى͖ͨΒɺؔ࿈γεςϜશମ͕μϯ͠͏Δ1ͭͰ։ൃҊ͕݅ΕͨΒ ۄಥ͖ͰଞͷҊ݅·ͰΕͯ શνʔϜͷܭը͕Ԇ͢ΔΫΦϦςΟ ΞδϦςΟ
ɹॳ݄࣮6ରԠ /27ґཔ
ɹͲͷνʔϜࢪࡦ͕ଧͯͳ͍ࢪࡦࢪࡦࢪࡦBlocker❌
ɹεςʔΫϗϧμʔ͕ଟ͗͢Δ
νʔϜͰʮޒ݄ӍߴΥʔλʔϑΥʔϧʯͱݺͿϓϩηε͕ࣗવͱߏங͞Εͨɹΰʔϧɹํ๏ɹ։ൃϓϩηεߏங҆ఆԽ ߴԽηϨϞχʔيಓमਖ਼ΞΠςϜՄࢹԽ
ɹࣾͷ։ൃඪ४ɾςϯϓϨ͋ͬͨ● େͳϧʔϧ܈ ʹ ͙͢ʹ͑ͳ͍ɹɹɹɹɹɹɹɹɹʮ뱌ʯʹֻ͕͔࣌ؒΔ ● ͦͷ࣌ʑͰඞཁͳͷ ʹ ϓϧϕʔεͰඋɹɹɹɹɹɹɹɹɹʢͤ͟ΔΛಘͳ͔ͬͨʣIUUQTQJYBCBZDPNFOMJCSBSZCPPLTNPOUFTTPSJTIFMG
νʔϜͰʮޒ݄ӍߴΥʔλʔϑΥʔϧʯͱݺͿϓϩηε͕ࣗવͱߏங͞Εͨɹΰʔϧɹํ๏ɹ։ൃϓϩηεߏங҆ఆԽ ߴԽηϨϞχʔيಓमਖ਼ΞΠςϜՄࢹԽ҆ఆԽΞΠςϜՄࢹԽ
ɹ՝ཧ● Excel্Ͱ՝ϦετΛཧ ɹɹগ͠Ͱʮͩʂʯͱࢥͬͨ͜ͱىථ● εΫϥϜʹ͓͚ΔোϦετ[email protected]
ɹҊ݅ཧ● ಉ༷ʹExcel্ͰҊ݅ϦετΛཧ ɹɹཁ݅ɺɺظݶɺ༏ઌɺଞνʔϜӨڹ● εΫϥϜʹ͓͚ΔϓϩμΫτόοΫϩά
ɹλεΫཧ● νʔϜڞ༗ͷςΩετϑΝΠϧͰTODOཧ ɹɹ“िͷλεΫҰཡ” ͱ “ணखத࡞ۀͷ୲ऀ” ΛՕॻ͖ ● εΫϥϜʹ͓͚ΔεϓϦϯτόοΫϩά[email protected]
͙͢ಡΈʹ͘͘ͳΔ → KISSͷపఈ → ݁Ռͱͯ͠τϤλΣΠɹʲλεΫཧʳ“.txt” for Leanকདྷ·Ͱશ෦ॻ͘ͷ× = ͦͷिͷλεΫ͚ͩʢλΠϜϘοΫεͷ֓೦ʣϚϧνλεΫ× = ্͔ΒॲཧʢWIP੍ݶɾҰݸྲྀ͠ʣTODOTODOTODOTODOTODO
νʔϜͰʮޒ݄ӍߴΥʔλʔϑΥʔϧʯͱݺͿϓϩηε͕ࣗવͱߏங͞Εͨɹΰʔϧɹํ๏ɹ։ൃϓϩηεߏங҆ఆԽ ߴԽηϨϞχʔيಓमਖ਼ΞΠςϜՄࢹԽ҆ఆԽηϨϞχʔيಓमਖ਼
ɹҊ݅ͷ༏ઌॱҐ● 19νʔϜͱͷݸผௐˍݴήʔϜΧΦεʹͳͬͨ● શମϛʔςΟϯάͰिʹ1ճ͚ͩ༏ઌॱҐΛશһͰೖΕସ͑ɹɹɹۄҊ݅ ʼ ͕খ͍͞Ҋ݅ ʼ ͕େ͖͍Ҋ݅● εΫϥϜʹ͓͚ΔόοΫϩάϦϑΝΠϝϯτ
ɹνʔϜͷঢ়گڞ༗● ͜·Ίʹ෦ڞ༗͍ͨ͠ 㱻 ઌͷ࡞ۀʹूத͍ͨ͠● ස৭ʑࢼͯ͠11-2ճ͕ఆண● εΫϥϜʹ͓͚ΔσΠϦʔϛʔςΟϯά[email protected]
ɹଞγεςϜӨڹͷ֬ೝ● ϦϦʔεલʹվम༰Λिʹ1ճͷԣஅϛʔςΟϯάͰ࠷ऴ֬ೝɹɹͦͷࡍʹ֤ؔҐ͔Βʮ͜ͷΛҙࣝ͢ΔͱΑΓྑ͘ͳΔʯͷϑΟʔυόοΫ● εΫϥϜʹ͓͚ΔεϓϦϯτϨϏϡʔ ϦϦʔεԆظ ͦͷ··GoʂӨڹʹݒ೦͕͋ΔʁYesNo
ɹϚΠϧετʔϯཧ● ଞνʔϜͷܭը͕ࠞཚ → ീํ͔Βʮ͍ͭͰ͖ͦ͏Ͱ͔͢ʁʯ ● िʹ1ճ “ͦͷिΔ͜ͱ” ͱ “ࠓޙͷݟ௨͠” Λཱͯͨ͠ɹɹҊ݅ͷݟੵΓࣗવͱʮ0.5ɺ1ɺ2…ʯͷ૬ରʹͳͬͨ● εΫϥϜʹ͓͚ΔεϓϦϯτϓϥϯχϯάʢୈ1෦ʣ0.5[email protected]1 2 3 5 8
ɹʲϚΠϧετʔϯʳݟੵΓ 㱻 ࣮ଶ● ϕʔεͷܭը͕ʹཱͨͳ͍● ࡉ͔͘ϞχλϦϯάͨ͠ ʹ 1िؒͰѻ͑Δྔ͕ݟ͑ͨɹɹʲ݁ՌʳҊ݅։ൃʹ͏࣌ؒ1ͷ2ׂʙ4ׂʹऩଋͨ͠ɹɹʲ׆༻ʳݟཱ͕ͯ2࣌ؒ → ظ3ഒͷ6࣌ؒʢ㲈1ʣ● εΫϥϜʹ͓͚ΔϕϩγςΟ[email protected]
νʔϜͷશһͰ࠷ॳʹೝࣝΛἧ͑Δɹ“खΓ” 1 / 4ઃܭ ࢼݧ ϦϦʔεཁ݅ఆٛཁ݅ఆٛ● Ϟϒ ϓϩάϥϛϯά ϗϫΠτϘʔυίʔσΟϯά - “ઃܭํ” “ॻ͖ํ”● Ϟϒ ϓϩάϥϛϯά TODOચ͍ग़͠ - 1ͭ20ఔͷ࡞ۀΛશͯՄࢹԽ
લఔΛॏࢹ͢Δɹ“खΓ” 2 / 4ઃܭ ࢼݧ ϦϦʔεཁ݅ఆٛ● ޙ͔Βͷʮ͜ΕͳΜ͚ͩͬʁʯʮͲ͏͢ΔΜ͚ͩͬʁʯ → “Γ͠” ࠷ѱ● ࣗͰεέδϡʔϧΛίϯτϩʔϧ͍ͯ͠Δ҆৺ײ● εΫϥϜʹ͓͚ΔεϓϦϯτϓϥϯχϯάʢୈೋ෦ʣ
ʢࠩ͠ࠐΈґཔͱಉ͡Ͱʣఆ֎࡞ۀ = ܭը͕ཚΕΔɹ“खΓ” 3 / 4ઃܭ ࢼݧ ϦϦʔεཁ݅ఆٛϨϏϡʔʮͲΜͳҊ݅Ͱ͚ͨͬ͠ʁʯ ʮͬͱྑ͍ॻ͖ํ͕͋Γͦ͏ʯଞνʔϜͰγεςϜো ʮAPI༷Λڭ͍͑ͯͩ͘͞ʯόά͕ݟ͔ͭΔ → ࡞Γ͠ ࢼݧ ϦϦʔε
ૣ͘͢ΔͨΊʹɿલఔʹ࣌ؒΛֻ͚࣭ͯ୲อ - Doneͷఆٛɹ“खΓ” 4 / 4ઃܭ ࢼݧ ϦϦʔεཁ݅ఆٛ ઃܭ ࢼݧίʔυΛॻ͘લʹଞνʔϜڞ༗ো࣌ʮAPIͰͳ͍ʯΓ͚ࢼݧϑΣʔζμϝԡ͠1݅Ͱόά͕ग़ͨΒ࠶ൃࢭίʔυΛॻ͖ͳ͕Β͏ҟৗܥ·Ͱςετ
νʔϜͰʮޒ݄ӍߴΥʔλʔϑΥʔϧʯͱݺͿϓϩηε͕ࣗવͱߏங͞Εͨɹΰʔϧɹํ๏ɹ։ൃϓϩηεߏங҆ఆԽ ߴԽηϨϞχʔيಓमਖ਼ΞΠςϜՄࢹԽߴԽηϨϞχʔيಓमਖ਼
ɹ՝ϦετΛͱʹվળ● िʹ1ճ͚ͩվળͷ࣌ؒΛઃ͚ͨ● ͕ଟ͗͢Δ → 1͚ͭͩબͿɹɹʲ࣭ʳ࣌ؒΛֻ͚ͯ୲อࡁΈʢ୲ՕॴͷγεςϜো2݅ / 120Ҋ݅ʣɹɹʲʳ - ϦʔυλΠϜΛ્͢ΔϜμΛऔΓআ͘● εΫϥϜʹ͓͚ΔϨτϩεϖΫςΟϒIUUQTXXXTDSVNBMMJBODFPSHDPNNVOJUZBSUJDMFTNBZTQSJOUJTNPSFUIBOKVTUBUJNFCPY
ɹվળΞΫγϣϯʢྫʣʲBeforeʳূॏࢹͷಡΈ߹Θͤ༻จॻʲAfterʳ ཁ݅ಛԽͷϖϥ1ϑΥʔϚοτɹɹձٞΛ 60min → 5min ʹॖ● ଞνʔϜͷσΠϦʔϛʔςΟϯάʹࢀՃ● νʔϜؒͰޓ͍ͷίϯςΩετΛѲ ɹɹؾܰʹ૬ஊ → ϦʔυλΠϜॖ[email protected]แׅతͳυΩϡϝϯτΑΓ ಈ͘ιϑτΣΞΛϓϩηεπʔϧΑΓ ݸਓͱରΛ
͜ΕΒͷΞΠςϜΠϕϯτ ↓͋ͬͯ “ͨΓલ” ʹࢥ͑Δʁ ↓࠷ॳ͔Β༻ҙ͢Δͷ͕ ”વ”ʁ
ɹʮͨΓલʯΛੵͨࣾ͠ඪ४ɾςϯϓϨ● େͳϧʔϧ܈ ʹ ͙͢ʹ͑ͳ͍ɹɹɹɹɹɹɹɹɹʮ뱌ʯʹֻ͕͔࣌ؒΔ ● ͦͷ࣌ʑͰඞཁͳͷ ʹ ϓϧϕʔεͰඋɹɹɹɹɹɹɹɹɹʢͤ͟ΔΛಘͳ͔ͬͨʣIUUQTQJYBCBZDPNFOMJCSBSZCPPLTNPOUFTTPSJTIFMG
ɹϓϧϕʔεඞཁͳͷΛɺඞཁͳͱ͖ʹɺඞཁͳ͚ͩϘτϧωοΫͷಛఆͱղফΛ܁Γฦ͢՝ղܾ՝ൃݟ݁ՌతʹPull݁ՌతʹPull
ɹޒ݄ӍΥʔλʔϑΥʔϧ ͱνʔϜͰݺͿͷʹͳͬͨ։ൃͷʮྲྀΕʯʹͤΔखΓτϥϒϧʹΑΔʮٯྲྀʯʢʹϜμɾϜϥɾϜϦʣΛ͙1ݸྲྀ͠ʹΑΔϑΥʔΧεɹɹόοναΠζΛখׂ͘͞ɹɹ࣭ΛલఔͰ୲อɹɹܧଓతͳʮྲྀΕʯͷվળޒ݄Ӎͷґཔґཔґཔґཔઃܭ ࢼݧ ϦϦʔεཁ݅ఆٛ[email protected] [email protected]
ɹ19νʔϜ͔ΒͷґཔʹରԠ͢Δ
WEBαΠτͷޭࢪࡦϞόΠϧΞϓϦͰΕ͍͍ͷʹىҊ → ࢪࡦͱͯ͠࠾༻ʂʲ+αʳྲྀΕ͕ՄࢹԽ → ਫݯʹϑΟʔυόοΫ
ɹຊ͢༰ʢ࠶ܝʣ৽ถΤϯδχΞ ͍εΩϧϨϕϧ19νʔϜ͔Βಉ࣌ґཔ ଟ༷ͳεςʔΫϗϧμʔ10ɾେن ϨΨγʔγεςϜ4ϲ݄Ͱ120Ҋ݅Λ͘͞ ϢʔβʔΞΫγϣϯ2.8ഒࢼߦࡨޡ ϘτϧωοΫΛ1ͭ1۪ͭʹղফ x ݁ՌతʹΞδϟΠϧϓϥΫςΟε
੍͕ଟ͍ͱ͖ͦ͜● ϘτϧωοΫͷಛఆͱղফ● ثʢΞδϟΠϧϓϥΫςΟεʣ→ ظؒͰՌΛ্͛Δ͜ͱ͕Ͱ͖Δɹ͍͑ͨ͜ͱʢ࠶ܝʣ
ɹ৽ถΤϯδχΞWebAPIͷϨεϙϯεʹ ύϥϝʔλΛ1ͭՃ͢Δ͚ͩͷҊ݅࠷ॳ1िؒඅ͍ͯͨ͠
ɹʮॆ࣮ͨ͠ʯֶशϝχϡʔ͋ͬͨ● 3ϲ݄ͰҰਓલʹͳΔڭࡐ ʹ ͙͢ʹ͑ͳ͍ɹɹɹɹɹɹɹɹɹʢ3ϲ݄ޙ·Ͱઓྗ֎ʣ ● ͦͷ࣌ʑͰඞཁͳࣝ ʹ ϓϧϕʔεͰशಘɹɹɹɹɹɹɹɹɹʢͤ͟ΔΛಘͳ͔ͬͨʣIUUQTQJYBCBZDPNFOMJCSBSZCPPLTNPOUFTTPSJTIFMG
ɹTDDͷΑ͏ʹֶͿΞʔΩςΫτٕज़ྗϓϩμΫτΦʔφʔ༷ɾࢪࡦϦʔμʔνʔϜঢ়گͱͯ͠ৼΔ͏ - ςετίʔυ࣮ߦฉ͍ͨΓௐͨΓPullϕʔεͬஏΛ͔͘REDΘ͔ͬͨʂͰ͖ͨʂGREEN
ɹTDDͷΑ͏ʹֶͿΞʔΩςΫτٕज़ྗϓϩμΫτΦʔφʔ༷ɾࢪࡦϦʔμʔνʔϜঢ়گͱͯ͠ৼΔ͏ - ςετίʔυ࣮ߦฉ͍ͨΓௐͨΓPullϕʔεͬஏΛ͔͘REDΘ͔ͬͨʂͰ͖ͨʂGREENΞʔΩςΫτٕज़ྗ
ɹγεςϜઃܭΞʔΩςΫτͱͯ͠ࣄલʹઃܭ͕ݟ௨͍ͤͯΔʁ ˠ Noʂ ˠ ॲཧػೳهड़γʔέϯεਤΛॻ͘ͱ͜Ζ͔Βʂ
ɹ༷ѲΞʔΩςΫτͱͯ͠ઃܭલʹαΠτ༷ΛѲ͍ͯ͠Δʁ ˠ Noʂ ˠ ը໘ભҠਤΛ࡞ͬͯΈΔʂ
ɹؔ࿈γεςϜΒͳ͍ٕज़ཁૉ → 30ͷษڧձΛ։͍ͯΒ͏● SolrͱͳΜͧ ● ϩʔΧϧڥͰApacheͷઃఆΛ͍͡Ζ͏● ࣾͷϞόΠϧΞϓϦج൫ʹ͍ͭͯ ● γεςϜશମͷσʔλϑϩʔʢӦۀͷݪߘೖྗ͔Βʣ
ɹͱʹ͔͘ฉ͘● ϗϫΠτϘʔυΛ1ͭڌ ● ʢຊͷʣΞʔΩςΫτʹֆͰͷղઆΛґཔ[email protected]
ɹલఏࣝͷඞཁੑΛ࣮ײ● ʮҰྲྀͷΞʔΩςΫτͳΒશਖ਼ղͰ͖ΔͣʯͰৼΔ͏ ● ςετۦಈֶशɿΛղ͘ˠϛεˠ͑ΛݟΔˠͳΔ΄Ͳ
ɹͲΜͲΜಡΉ - ؾ͘……οʂ͜Ε༗ӹ……οʂ● ҰྲྀͷΞʔΩςΫτ͖ͪΜͱຊΛಡΉʢଟʣ ● ඞཁʹۦΒΕͯಡΉ → ͍Ͱཧղ͢ΔࠨͭҰྲྀͷΞʔΩςΫτ͕ಡΉຊͬͯײ͡͠ͳ͍͚ͲIUUQCPPLJNQSFTTDPKQCPPLTɹɹIUUQCPPLJNQSFTTDPKQCPPLTɹɹIUUQTXXXPSFJMMZDPKQCPPLT
ɹTDDͷΑ͏ʹֶͿΞʔΩςΫτٕज़ྗϓϩμΫτΦʔφʔ༷ɾࢪࡦϦʔμʔνʔϜঢ়گͱͯ͠ৼΔ͏ - ςετίʔυ࣮ߦฉ͍ͨΓௐͨΓPullϕʔεͬஏΛ͔͘REDΘ͔ͬͨʂͰ͖ͨʂGREENϓϩμΫτΦʔφʔ༷ɾࢪࡦ
ɹࣄۀߏϓϩμΫτΦʔφʔͱͯ͠ϏδωεߏΛѲࡁΈʁ→ Noʂ→ ϐΫτਤΛॻ͘ʂ
ɹࣈɾنײϓϩμΫτΦʔφʔͱͯ͠ࣈΛѲࡁΈʁ→ Noʂ→ ΞΫηεղੳπʔϧΛͬͯΈΔʂ
ɹࣄۀߏϓϩμΫτΦʔφʔͱͯ͠ӦۀͷചΓํΛ͍ͬͯΔʁ→ Noʂ→ ӦۀࣾһͷݚमʹࠞͥͯΒ͏ʂ
ɹϓϥΠϕʔτ·Ͱ৵৯……ϓϩμΫτΦʔφʔͱͯ͠ϓϩμΫτΛ͍࣋ͬͯΔʁ→ Noʂ→ ݸਓαʔϏεΛ࡞Δʂ
ɹશ෦1ਓͰΔ → શମ૾͕ݟ͑Δ● ϓϩηεɿاը͔Βอकӡ༻·Ͱ● ٕज़ཁૉɿϑϩϯτ͔ΒΠϯϑϥ·Ͱ
ɹશ෦1ਓͰΔ → ࡉ෦͕ݟ͑Δ ● αʔόઃఆσϑΥϧτͰ͍͍ͷ͔ ● ձࣾͩͱར༻نͲ͏ͳ͍ͬͯΔͷ͔IUUQHJIZPKQCPPL
ɹϢʔβʔͷ → ඇػೳཁ͕݅ؾʹͳΓͩ͢ʲύϑΥʔϚϯεʳ ● ઌഐʹฉ͖ͳ͕ΒJMeterΛࢼͯ͠ΈΔʂ ● ͜ͷΞΫηεྔͰ͜ͷॲཧͳͷ͔ʂʲηΩϡϦςΟʳ ● HTTPϔομʔͷઃఆɺେৎ͚ͩͬʂ ● େৎͩͬͨʂ͜͜Ͱઃఆ͍ͯ͠Δͷ͔ʂ
ɹTDDͷΑ͏ʹֶͿΞʔΩςΫτٕज़ྗϓϩμΫτΦʔφʔ༷ɾࢪࡦϦʔμʔνʔϜঢ়گͱͯ͠ৼΔ͏ - ςετίʔυ࣮ߦฉ͍ͨΓௐͨΓPullϕʔεͬஏΛ͔͘REDΘ͔ͬͨʂͰ͖ͨʂGREENϦʔμʔνʔϜঢ়گ
ɹܗ͔ΒೖΔ● ʮ͑ʁݺΕ·͚ͨ͠ͲʁʯΈ͍ͨͳإͰձٞʹࢀՃ● νʔϜϦʔμʔͷΘΓʹνʔϜͷใࠂΛ͢Δ[email protected]
ɹѹతϑΟʔυόοΫྔ● ࿅शɿϦʔμʔʹ͓ࢼ͠ใࠂ → ؒҧ͍Λࢦఠͯ͠Β͏● ࣮ફɿଞνʔϜͷϦʔμʔʹ΅͜΅͜ʹ͞ΕΔ[email protected]
ɹϝϯλʔͱͷ1on1● ҰྲྀͷϦʔμʔʹϝϯλʔ͕͍ΔͷΒ͍͠ʢଟʣ● ผ෦ॺͷઌഐʹ͓ئ͍ͯ͠ɺຖ30ͷ1on1Λߦ͏[email protected]
Ϧʔμʔʢࣗশʣͱͯ͠νʔϜͷݱঢ়Λઆ໌͢Δ→ Θ͔Βͳ͚ΕௐΔɾฉ͘ɹQ1. νʔϜ͍·ͲΜͳঢ়گ͔ʁ by ϝϯλʔ
ɹQ2. ࠷େ͖ͳԿ͔ʁ by ϝϯλʔϦʔμʔʢࣗশʣͱͯ͠νʔϜ๊͕͑ΔΛઆ໌͢Δ→ ຊʹͦΕ͕1൪ͷʁ by ϝϯλʔ→ σΟεΧογϣϯͰཧ
ɹQ3. ʹରͯ͠Ͳ͏ͨ͠Β͍͍͔ʁ by ϝϯλʔϦʔμʔʢࣗশʣͱͯ͠ղܾΞϓϩʔνΛఏҊ͢Δ → ຊʹͦΕ͕ϕετͷํ๏ʁ by ϝϯλʔ→ աڈͷࢀߟࣄྫΛฉ͘ˍࠓճͷέʔεͲ͏͖͔ٞ͢
ɹʮॆ࣮ͨ͠ʯֶशܭը͚͕ͩਖ਼ղͰͳ͍● 3ϲ݄ͰҰਓલʹͳΔڭࡐ ʹ ͙͢ʹ͑ͳ͍ɹɹɹɹɹɹɹɹɹʢ3ϲ݄ޙ·Ͱઓྗ֎ʣ ● ͦͷ࣌ʑͰඞཁͳࣝ ʹ ϓϧϕʔεͰशಘɹɹɹɹɹɹɹɹɹʢͤ͟ΔΛಘͳ͔ͬͨʣIUUQTQJYBCBZDPNFOMJCSBSZCPPLTNPOUFTTPSJTIFMG
ɹʮ࠷ڧͷҭϝχϡʔʯଘࡏ͠ͳ͍ʁ ৽ถΤϯδχΞ͕뱌͖͠Εͳ͍ࣝ ʹ ·ͩඞཁͳ͍ػೳΛ࡞Δͷͱಉ͔͡IUUQXXXQSPKFDUDBSUPPODPN
ɹ“࣮ફ” Λ௨ͯ͠ “ࣗ” ͢ΔҰྲྀͱͯ͠ৼΔ͏↓વ͏·͍͔͘ͳ͍↓͕ࠩݟ͑Δ↓Ұྲྀͷઢʹۙ͘IUUQTXXXQFYFMTDPNQIPUPDBSFGSFFDIJMEDIJMEIPPEDPVOUSZTJEF
ɹΠϯΫϦϝϯλϧͳֶशʮ͔Δ͜ͱʯ͕૿͑Δʹʮ͔Βͳ͍͜ͱʯ͕͕͍ͬͯͦ͘ΕΒΛશ෦ɺௐΔʂࢼ͢ʂฉ͘ʂֶͿʂIUUQTXXXQFYFMTDPNQIPUPCBMMTIBQFECMVSDMPTFVQGPDVT
ɹϨΨγʔγεςϜͱ͍͔ʹ͖߹͏͔50+ ͷαϒγε 3500+ tables 100,000+ columnsߴ։ൃʹ͑ΒΕΔ෦࣭Ͱͳ͍
“ΠςϨʔγϣϯ” ͱ “ਖ਼͍͠ϑΥʔΧε”ɹϨΨγʔγεςϜಉ͡దԠݕࠪ
σϑΝΫτελϯμʔυͷ։ൃελΠϧʹ͚ۙͮΔɹΠςϨʔγϣϯ - ܧଓతσϦόϦʔΛࢧ͑Δٕज़Git / Gitlabಋೖ ϚʔδϦΫΤετத৺ͷ։ൃ ϨϏϡʔมԽΛ͍͘͢SonarQubeಋೖ Ξϯνύλʔϯͳॻ͖ํΛࢲత ιʔείʔυͷෳࡶΛԽ
ɹɹɹɹɹɹ υΩϡϝϯτʁɹɹɹɹɹɹ ػೳཁ݅ʁɹɹɹɹɹɹ ྑ͍ઃܭʁɹਖ਼͍͠ϑΥʔΧε
ɹ APIར༻ऀ͚ͷΤϥʔυΩϡϝϯτ● ίʔυΛࣗવݴޠʹ͚ͨͩ͠ ● ࡞Δͷʹ͕͔͔࣌ؒΔ● ୭ಡΜͰ͍ͳ͔ͬͨ● JSONΩϟϓνϟʢSwaggerతൃʣ ● ϦʔυλΠϜͷେ෯ݮ ● ར༻ݩʮಡΊΔΑ͏ʹͳͬͨʯ
ɹ ෦ઃܭυΩϡϝϯτ● Excelͷϑϩʔνϟʔτʹ߹ΘͤͯɹifจͩΒ͚ͷਂ͍ωετʴreturnࢄࡏ● ͦͷׂʹίʔυͱExcelʹࠩ● ֓؍ʢϩθολετʔϯʣҎ֎ഇࢭ● όϦσʔγϣϯϒϩοΫΛΓग़ͯ͠ʮιϑτΣΞͷอकੑʯΛॏࢹɹif …ɹɹif …ɹɹɹif …ɹɹɹɹreturn;ɹɹelse if …ɹɹɹif …ɹɹɹɹreturn;ɹ# validationɹif …ɹɹreturn;ɹɹ# main logicɹ……ɹ……NoDocs
ɹ υΩϡϝϯτ͋͘·ͰิॿʂϑΥʔΧε͖͢ʮ࣮ࡍʹಈ͘ιϑτΣΞʯ
ɹ ػೳཁ݅ຬͨͤΔ͚ͲࣅͨΑ͏ͳػೳ → ಉ͡APIʹڞ௨Խ͢ΕOKʁWEBαΠτձһ͚ͷ৽ணϝʔϧ εϚϗΞϓϦͷ৽ணϓογϡ௨
ɹ NGʂҙຯ߹͍͕ҧͬͨʂ ΞϓϦͱWEBαΠτͰϢʔβʔ͕ҧ͏↓ ৽ண৴ͱͯ͠ར༻͢ΔϩδοΫҧͬͨ[email protected]
ɹ ΦʔέετϨʔγϣϯ·͕͍ͷͷΛઃ͚ͨɹɹɹ● ݺͼग़͠ݩʹΑΔίϯςΩετͷΓ͚ ɹɹɹ● ࠜͬ͜ʹ͋ΔͷϚΠΫϩαʔϏεతͳൃViewViewViewControllerControllerControllerModel
ɹ Ծઆݕূͱͯ͠ͷػೳՃʮޙ͔Βফ͍͢͠ʯ؍ͰίʔυΛΓग़֘͢ϒϩοΫ͚ͩফͤऴΘΓABςετ༻ϝιου ݺͼग़͠ॲཧprivate xxx testAB(Hoge hoge) {ɹɹ……}public String mainController() {ɹɹ……ɹɹtestAB(hoge);ɹɹ……}
ɹ ઌͷػೳཁ͚݅ͩͰͳ͍ʂϑΥʔΧε͖͢ʮϓϩμΫτʹ͓͚Δҙຯʯ ʢυϝΠϯࣝʹґଘ͢Δ͜ͱ͋Δʣ
ɹ “ྑ͍” ͷڞ௨ೝࣝݩͷιʔείʔυ͕Ԛ͍↓ʮԿ͕ Better ͳͷ͔ʯҙݟ͕όϥόϥ↓ϓϧϦΫͷϨϏϡʔͰᎍΊΔ
ɹ ੈؒͰ “ྑ͍” ͱݴΘΕ͍ͯΔͷಡΉ → νʔϜͰ͠߹͏ → શવΘ͔ΒΜʂ → ಄ͷย۱ʹΔIUUQTXXXPSFJMMZDPKQCPPLTɹɹIUUQXXXTIPFJTIBDPKQCPPLEFUBJMɹɹIUUQXXXTCDSKQQSPEVDUTIUNM IUUQXXXTIPFJTIBDPKQCPPLEFUBJMɹɹIUUQTUIMJHIUDPNCMPHVODMFCPCUIFDMFBOBSDIJUFDUVSFIUNMɹɹIUUQTNBSUJOGPXMFSDPNBSUJDMFTNJDSPTFSWJDFTIUNM
ɹ গͣͭ͠ݟ͑ͯ͘ΔʹͿ͔ͭΔ → ରԠ͢Δ → ޙ͚Ͱʮ͜Ε͕XXύλʔϯͩͬͨͷͰʁʯ → ঃʑʹʢࣗͨͪͳΓͷʣೝࣝΛἧ͍͑ͯͬͨIUUQTXXXQFYFMTDPNQIPUPCMBDLCPBSECVTJOFTTDIBMLCPBSEDPODFQU
ɹ ՄೳͳൣғͰগͣͭ͢͠ྫʣશͯΛ୲͏CommonClass → ׂͰΓग़͢ϘʔΠεΧτݪଇ ৮Δ͍ͭͰʹෳࡶΛԼ͛ΔIUUQTXXXQFYFMTDPNQIPUPBEVMUBEWFOUVSFCBDLQBDLEBZMJHIU
ɹ“ιϑτΣΞ” ʹͯ͠ؾ͘υΩϡϝϯτະөͷ༷ʢʹࠂͷදࣔॱϩδοΫʣΛࣗओௐࠪ → վળࢪࡦΛఏҊ ఏҊ༰ͦͷ··Ͱͳ͔͕ͬͨ ࢪࡦʹͭͳ͕ͬͨ[email protected]
ɹ࠷ऴ݄࣮43ରԠ /43ґཔ
ɹࢪࡦ͕ಈ͖࢝ΊΔࢪࡦࢪࡦࢪࡦ
ɹΞδϦςΟͷ্ɹɹɹɹɹx7.16643
ɹ19νʔϜ͔Βͷ120ґཔ / 4ϲ݄ґཔݩ Ҋ݅ શମࢪࡦ ϞχλϦϯά 8ू٬ ηΩϡϦςΟ αΠτ#J[ αΠτ%FW αΠτ0QT ΞϓϦ#J[ ΞϓϦ%FT ΞϓϦ%FW ґཔݩ Ҋ݅ όον#J[ όον%FW σʔλαΠΤϯε Πϯϑϥ ج൫վળ αϒαΠτ"%FW αϒαΠτ##J[ αϒαΠτ#%FW αϒαΠτ$%FW ߹ܭ
ɹΞΫγϣϯ 2.8ഒ
ɹϘτϧωοΫʹϑΥʔΧε͢Δ 1/ 2ɹɹɹɹɹɹɹ1. ৫ɾϓϩηε ɹɹɹɹɹɹɹ2. ݸਓεΩϧ ɹɹɹɹɹɹɹ3. γεςϜɾٕज़ɹɹɹɹɹɹ1ͭ1ͭղফ͍ͯͬͨ͠
ɹϘτϧωοΫʹϑΥʔΧε͢Δ 2 / 2࠷େ͖ͳͷಛఆසൟʹΠςϨʔγϣϯΛճ͢ ↓ ޮՌతͳղফࡦ݁ՌతʹΞδϟΠϧϓϥΫςΟεʹͳΓ͏Δ
੍͕ଟ͍ͱ͖ͦ͜● ϘτϧωοΫͷಛఆͱղফ● ثʢΞδϟΠϧϓϥΫςΟεʣ→ ظؒͰՌΛ্͛ΒΕΔɹ͍͑ͨ͜ͱ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠presented by @yuzutas0