Upgrade to Pro — share decks privately, control downloads, hide ads and more …

新米エンジニアがレガシーシステムを死に物狂いでグロースハックした話 #xpjug / 2017...

Avatar for yuzutas0 yuzutas0
September 16, 2017

新米エンジニアがレガシーシステムを死に物狂いでグロースハックした話 #xpjug / 20170916

XP祭り2017 の発表資料です。
https://yuzutas0.hatenablog.com/entry/2017/09/20/083000 に補足を記載しています。

Avatar for yuzutas0

yuzutas0

September 16, 2017
Tweet

More Decks by yuzutas0

Other Decks in Programming

Transcript

  1. ɹࢪࡦྫ  ౰࣌·ͩະख़ͩͬͨ
 ϞόΠϧΞϓϦʹը૾Λग़͢ ϝϧϚΨͷ࠷దԽϨίϝϯυ ʢ഑৴όον → WebAPI → Solrʣ

    IUUQTTVQQPSUUNPCJMFDPNDPNNVOJUZQIPOFTUBCMFUTEFWJDFTBQQMFJQIPOF IUUQTQJYBCBZDPNFOMFUUFSNBJMNBJMJOHFNBJMNBJMCPY
  2. ͙͢ಡΈʹ͘͘ͳΔ → KISSͷపఈ → ݁Ռͱͯ͠τϤλ΢ΣΠ ɹʲλεΫ؅ཧʳ “.txt” for Lean 

    কདྷ·Ͱશ෦ॻ͘ͷ͸×
 = ͦͷिͷλεΫ͚ͩ ʢλΠϜϘοΫεͷ֓೦ʣ ϚϧνλεΫ͸×
 = ্͔Βॲཧ ʢWIP੍ݶɾҰݸྲྀ͠ʣ TODO TODO TODO TODO TODO
  3. ɹϚΠϧετʔϯ੔ཧ • ଞνʔϜͷܭը͕ࠞཚ → ീํ͔Βʮ͍ͭͰ͖ͦ͏Ͱ͔͢ʁʯ
 • िʹ1ճ “ͦͷि΍Δ͜ͱ” ͱ “ࠓޙͷݟ௨͠”

    Λཱͯ௚ͨ͠ ɹɹҊ݅ͷݟੵ΋Γ͸ࣗવͱʮ0.5೔ɺ1೔ɺ2೔…ʯͷ૬ର஋ʹͳͬͨ • εΫϥϜʹ͓͚ΔεϓϦϯτϓϥϯχϯάʢୈ1෦ʣ  0.5 IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM 1 2 3 5 8
  4. ɹʲϚΠϧετʔϯʳ ݟੵ΋Γ 㱻 ࣮ଶ • ޻਺ϕʔεͷܭը͕໾ʹཱͨͳ͍ • ࡉ͔͘ϞχλϦϯάͨ͠ ʹ 1िؒͰѻ͑Δྔ͕ݟ͑ͨ

    ɹɹʲ݁ՌʳҊ݅։ൃʹ࢖͏࣌ؒ͸1೔ͷ2ׂʙ4ׂʹऩଋͨ͠ ɹɹʲ׆༻ʳݟཱͯ޻਺͕2࣌ؒ → ޻ظ͸3ഒͷ6࣌ؒʢ㲈1೔ʣ • εΫϥϜʹ͓͚ΔϕϩγςΟ  IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM
  5. νʔϜ಺ͷશһͰ࠷ॳʹೝࣝΛἧ͑Δ ɹ“ख໭Γ” ໰୊ 1 / 4  ੡଄ ઃܭ ࢼݧ

    ϦϦʔε ཁ݅ఆٛ ཁ݅ఆٛ • Ϟϒ ϓϩάϥϛϯά ϗϫΠτϘʔυίʔσΟϯά - “ઃܭํ਑” ΍ “ॻ͖ํ” • Ϟϒ ϓϩάϥϛϯά TODOચ͍ग़͠ - 1ͭ໿20෼ఔ౓ͷ࡞ۀΛશͯՄࢹԽ
  6. લ޻ఔΛॏࢹ͢Δ ɹ“ख໭Γ” ໰୊ 2 / 4  ੡଄ ઃܭ ࢼݧ

    ϦϦʔε ཁ݅ఆٛ • ޙ͔Βͷʮ͜ΕͳΜ͚ͩͬʁʯʮͲ͏͢ΔΜ͚ͩͬʁʯ → “΍Γ௚͠” ͸࠷ѱ • ࣗ෼ͰεέδϡʔϧΛίϯτϩʔϧ͍ͯ͠Δ҆৺ײ • εΫϥϜʹ͓͚ΔεϓϦϯτϓϥϯχϯάʢୈೋ෦ʣ
  7. ʢࠩ͠ࠐΈґཔͱಉ͡Ͱʣ૝ఆ֎࡞ۀ = ܭը͕ཚΕΔ ɹ“ख໭Γ” ໰୊ 3 / 4  ੡଄

    ઃܭ ࢼݧ ϦϦʔε ཁ݅ఆٛ ϨϏϡʔ ʮͲΜͳҊ݅Ͱ͚ͨͬ͠ʁʯ
 ʮ΋ͬͱྑ͍ॻ͖ํ͕͋Γͦ͏ʯ ଞνʔϜͰγεςϜো֐
 ʮAPI࢓༷Λڭ͍͑ͯͩ͘͞ʯ όά͕ݟ͔ͭΔ
 → ࡞Γ௚͠ ੡଄ ࢼݧ ϦϦʔε
  8. ૣ͘͢ΔͨΊʹɿલ޻ఔʹ࣌ؒΛֻ͚ͯ඼࣭୲อ - Doneͷఆٛ ɹ“ख໭Γ” ໰୊ 4 / 4  ੡଄

    ઃܭ ࢼݧ ϦϦʔε ཁ݅ఆٛ ੡଄ ઃܭ ࢼݧ ίʔυΛॻ͘લʹଞνʔϜڞ༗ ো֐࣌ʮAPIͰ͸ͳ͍ʯ੾Γ෼͚ ࢼݧϑΣʔζ͸μϝԡ͠ 1݅Ͱ΋όά͕ग़ͨΒ࠶ൃ๷ࢭ ίʔυΛॻ͖ͳ͕Β ೏͏ҟৗܥ·Ͱςετ
  9. ɹ՝୊ϦετΛ΋ͱʹվળ • िʹ1ճ͚ͩվળͷ࣌ؒΛઃ͚ͨ • ໰୊͕ଟ͗͢Δ → 1͚ͭͩબͿ ɹɹʲ඼࣭ʳ࣌ؒΛֻ͚ͯ୲อࡁΈʢ୲౰ՕॴͷγεςϜো֐͸2݅ / 120Ҋ݅ʣ

    ɹɹʲ଎౓ʳ໰୊ - ϦʔυλΠϜΛ્֐͢ΔϜμΛऔΓআ͘ • εΫϥϜʹ͓͚ΔϨτϩεϖΫςΟϒ  IUUQTXXXTDSVNBMMJBODFPSHDPNNVOJUZBSUJDMFTNBZTQSJOUJTNPSFUIBOKVTUBUJNFCPY
  10. ɹվળΞΫγϣϯʢྫʣ  ʲBeforeʳূ੻ॏࢹͷಡΈ߹Θͤ༻จॻ ʲAfterʳ ཁ݅ಛԽͷϖϥ1ϑΥʔϚοτ ɹɹձٞΛ 60min → 5min ʹ୹ॖ

    • ଞνʔϜͷσΠϦʔϛʔςΟϯάʹࢀՃ • νʔϜؒͰޓ͍ͷίϯςΩετΛ೺Ѳ
 ɹɹؾܰʹ૬ஊ → ϦʔυλΠϜ୹ॖ IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM แׅతͳυΩϡϝϯτΑΓ΋
 ಈ͘ιϑτ΢ΣΞΛ ϓϩηε΍πʔϧΑΓ΋
 ݸਓͱର࿩Λ
  11. ɹTDDͷΑ͏ʹֶͿ  ΞʔΩςΫτ ٕज़ྗ ϓϩμΫτΦʔφʔ ࢓༷ɾࢪࡦ Ϧʔμʔ νʔϜঢ়گ ͱͯ͠ৼΔ෣͏ -

    ςετίʔυ࣮ߦ ฉ͍ͨΓௐ΂ͨΓ Pullϕʔε ੺ͬஏΛ͔͘ RED Θ͔ͬͨʂͰ͖ͨʂ GREEN
  12. ɹTDDͷΑ͏ʹֶͿ  ΞʔΩςΫτ ٕज़ྗ ϓϩμΫτΦʔφʔ ࢓༷ɾࢪࡦ Ϧʔμʔ νʔϜঢ়گ ͱͯ͠ৼΔ෣͏ -

    ςετίʔυ࣮ߦ ฉ͍ͨΓௐ΂ͨΓ Pullϕʔε ੺ͬஏΛ͔͘ RED Θ͔ͬͨʂͰ͖ͨʂ GREEN ΞʔΩςΫτ ٕज़ྗ
  13. ɹͲΜͲΜಡΉ - ؾ෇͘……οʂ͜Ε͸༗ӹ……οʂ • ҰྲྀͷΞʔΩςΫτ͸͖ͪΜͱຊΛಡΉʢଟ෼ʣ
 • ඞཁʹۦΒΕͯಡΉ → ͍΍Ͱ΋ཧղ͢Δ 

    ࠨͭ͸ҰྲྀͷΞʔΩςΫτ͕ಡΉຊͬͯײ͡͠ͳ͍͚Ͳ IUUQCPPLJNQSFTTDPKQCPPLTɹɹIUUQCPPLJNQSFTTDPKQCPPLTɹɹIUUQTXXXPSFJMMZDPKQCPPLT
  14. ɹTDDͷΑ͏ʹֶͿ  ΞʔΩςΫτ ٕज़ྗ ϓϩμΫτΦʔφʔ ࢓༷ɾࢪࡦ Ϧʔμʔ νʔϜঢ়گ ͱͯ͠ৼΔ෣͏ -

    ςετίʔυ࣮ߦ ฉ͍ͨΓௐ΂ͨΓ Pullϕʔε ੺ͬஏΛ͔͘ RED Θ͔ͬͨʂͰ͖ͨʂ GREEN ϓϩμΫτΦʔφʔ ࢓༷ɾࢪࡦ
  15. ɹTDDͷΑ͏ʹֶͿ  ΞʔΩςΫτ ٕज़ྗ ϓϩμΫτΦʔφʔ ࢓༷ɾࢪࡦ Ϧʔμʔ νʔϜঢ়گ ͱͯ͠ৼΔ෣͏ -

    ςετίʔυ࣮ߦ ฉ͍ͨΓௐ΂ͨΓ Pullϕʔε ੺ͬஏΛ͔͘ RED Θ͔ͬͨʂͰ͖ͨʂ GREEN Ϧʔμʔ νʔϜঢ়گ
  16. ɹTDDͷΑ͏ʹֶͿ  ΞʔΩςΫτ ٕज़ྗ ϓϩμΫτΦʔφʔ ࢓༷ɾࢪࡦ Ϧʔμʔ νʔϜঢ়گ ͱͯ͠ৼΔ෣͏ -

    ςετίʔυ࣮ߦ ฉ͍ͨΓௐ΂ͨΓ Pullϕʔε ੺ͬஏΛ͔͘ RED Θ͔ͬͨʂͰ͖ͨʂ GREEN
  17. ɹ“࣮ફ” Λ௨ͯ͠ “ࣗ૸” ͢Δ Ұྲྀͱͯ͠ৼΔ෣͏ ↓ ౰વ͏·͍͔͘ͳ͍ ↓ ࠩ෼͕ݟ͑Δ ↓

    Ұྲྀͷ໨ઢʹۙ෇͘  IUUQTXXXQFYFMTDPNQIPUPDBSFGSFFDIJMEDIJMEIPPEDPVOUSZTJEF
  18. ɹ APIར༻ऀ޲͚ͷΤϥʔυΩϡϝϯτ  • ίʔυΛࣗવݴޠʹ͚ͨͩ͠
 • ࡞Δͷʹ͕͔͔࣌ؒΔ • ୭΋ಡΜͰ͍ͳ͔ͬͨ •

    JSONΩϟϓνϟʢSwaggerతൃ૝ʣ
 • ϦʔυλΠϜͷେ෯࡟ݮ
 • ར༻ݩʮಡΊΔΑ͏ʹͳͬͨʯ
  19. ɹ ಺෦ઃܭυΩϡϝϯτ  • Excelͷϑϩʔνϟʔτʹ߹Θͤͯ ɹifจͩΒ͚ͷਂ͍ωετʴreturnࢄࡏ • ͦͷׂʹ͸ίʔυͱExcelʹࠩ෼ • ֓؍ʢϩθολετʔϯʣҎ֎͸ഇࢭ

    • όϦσʔγϣϯϒϩοΫΛ੾Γग़ͯ͠ ʮιϑτ΢ΣΞͷอकੑʯΛॏࢹ ɹif … ɹɹif … ɹɹɹif … ɹɹɹɹreturn; ɹɹelse if … ɹɹɹif … ɹɹɹɹreturn; ɹ# validation ɹif … ɹɹreturn; ɹ ɹ# main logic ɹ…… ɹ…… No Docs
  20. ɹ ੈؒͰ “ྑ͍” ͱݴΘΕ͍ͯΔ΋ͷ ಡΉ → νʔϜ಺Ͱ࿩͠߹͏ → શવΘ͔ΒΜʂ →

    ಄ͷย۱ʹ࢒Δ  IUUQTXXXPSFJMMZDPKQCPPLTɹɹIUUQXXXTIPFJTIBDPKQCPPLEFUBJMɹɹIUUQXXXTCDSKQQSPEVDUTIUNM
 IUUQXXXTIPFJTIBDPKQCPPLEFUBJMɹɹIUUQTUIMJHIUDPNCMPHVODMFCPCUIFDMFBOBSDIJUFDUVSFIUNMɹɹIUUQTNBSUJOGPXMFSDPNBSUJDMFTNJDSPTFSWJDFTIUNM
  21. ɹ19νʔϜ͔Βͷ120ґཔ / 4ϲ݄  ґཔݩ Ҋ݅਺  શମࢪࡦ  

    ϞχλϦϯά   8&#ू٬   ηΩϡϦςΟ   αΠτ#J[   αΠτ%FW   αΠτ0QT   ΞϓϦ#J[   ΞϓϦ%FT   ΞϓϦ%FW  ґཔݩ Ҋ݅਺  όον#J[   όον%FW   σʔλαΠΤϯε   Πϯϑϥ   ج൫վળ   αϒαΠτ"%FW   αϒαΠτ##J[   αϒαΠτ#%FW   αϒαΠτ$%FW  ߹ܭ