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

56ae61a2631362f985e4c1fa4548a7ac?s=47 yuzutas0
September 16, 2017

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

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

56ae61a2631362f985e4c1fa4548a7ac?s=128

yuzutas0

September 16, 2017
Tweet

Transcript

  1. ৽ถΤϯδχΞ͕ϨΨγʔγεςϜΛ
 ࢮʹ෺ڰ͍ͰάϩʔεϋοΫͨ͠࿩ 2017-09-16 (Sat)
 XPࡇΓ2017
 presented by @yuzutas0 

  2. ɹSho Yokoyamaɹ@yuzutas0 ɹɹ 
 
  • ϦΫϧʔτςΫϊϩδʔζ • ೝఆεΫϥϜϚελʔ

    • ࣮͸΋͏৽ถͰ͸ͳ͍
  3. ࣮͸΋͏৽ถͰ͸ͳ͍
 ↓ ౰࣌ΛৼΓฦΔͱ
 ʮ݁ՌతʹΞδϟΠϧϓϥΫςΟεΛ
 ద༻͍ͯͨ͠ͷͰ͸ʁʯ
 ↓
 ͜ͷػʹࡇΔ 

  4. ɹຊ೔࿩͢಺༰  ৽ถΤϯδχΞ
 ௿͍εΩϧϨϕϧ 19νʔϜ͔Βಉ࣌ґཔ
 ଟ༷ͳεςʔΫϗϧμʔ 10೥෺ɾେن໛
 ϨΨγʔγεςϜ 4ϲ݄Ͱ120Ҋ݅Λ͞͹͘ ϢʔβʔΞΫγϣϯ਺2.8ഒ

    ࢼߦࡨޡ
 ϘτϧωοΫΛ1ͭ1۪ͭ௚ʹղফ x ݁ՌతʹΞδϟΠϧϓϥΫςΟε
  5. ੍໿͕ଟ͍ͱ͖ͦ͜ • ϘτϧωοΫͷಛఆͱղফ • ෢ثʢΞδϟΠϧϓϥΫςΟεʣ → ୹ظؒͰ੒ՌΛ্͛Δ͜ͱ͕Ͱ͖Δ  ɹ఻͍͑ͨ͜ͱ

  6. 1. ʲഎܠʳάϩʔεϋοΫͩʂ 2. ʲ՝୊ʳεςʔΫϗϧμʔ͕Ϡό͍ʂ 3. ʲ՝୊ʳ։ൃεΩϧ͕Ϡό͍ʂ 4. ʲ՝୊ʳγεςϜ͕Ϡό͍ʂ 5. ʲ·ͱΊʳΞδϦςΟͩʂ

     ɹΞδΣϯμ
  7. 1. ʲഎܠʳάϩʔεϋοΫͩʂ 2. ʲ՝୊ʳεςʔΫϗϧμʔ͕Ϡό͍ʂ 3. ʲ՝୊ʳ։ൃεΩϧ͕Ϡό͍ʂ 4. ʲ՝୊ʳγεςϜ͕Ϡό͍ʂ 5. ʲ·ͱΊʳΞδϦςΟͩʂ

     ɹΞδΣϯμ
  8. ɹϦϘϯϞσϧͷ๭ϝσΟΞ  ΫϥΠΞϯτ اۀ ΧελϚʔ Ϣʔβʔ ޿ࠂΛग़͢ ৘ใΛ୳͢ 
 ࡭ࢠɹ8&#αΠτʢ1$εϚϗΨϥέʔʣɹ

    ϞόΠϧΞϓϦʢJ04ɺ"OESPJEʣ IUUQGSFFJMMVTUSBUJPOTHBUBHOFUIUNM
  9. ڝ߹ͷ୆಄ ↓ ୹ظؒͰϢʔβʔΞΫγϣϯ਺Λ૿΍ͦ͏ ↓ ଟ਺ͷνʔϜ͕ಠࣗͰPDSαΠΫϧΛճ͢ ɹάϩʔεϓϩδΣΫτ 

  10. ɹAPج൫Λ୲౰  ͜͜ͷ

  11. ɹAPج൫Λ୲౰  ͜͜ͷ ͜͜ͷ

  12. ɹAPج൫Λ୲౰  ͜͜ ͜͜ͷ ͜͜ͷ

  13. ɹWebAPI։ൃ 

  14. ɹ19νʔϜ͔Βґཔ͕ͳͩΕࠐΉ 

  15. ɹWebAPI͕શγεςϜͷதܧ஍఺ͩͬͨ  50+ ͷαϒγε 3500+ tables
 100,000+ columns ‘00೥୅ͷSEOରࡦͷ໊࢒
 ίϯςϯπྔͷଟ͞Ͱ্Ґදࣔ


    ෳ਺αΠτͷ಺༰Λޓ͍ʹܝࡌ͋͠͏࢓༷
  16. ɹࢪࡦΛࢧ͑Δ໾ׂ  ࢪࡦ ࢪࡦ ࢪࡦ

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

    IUUQTTVQQPSUUNPCJMFDPNDPNNVOJUZQIPOFTUBCMFUTEFWJDFTBQQMFJQIPOF IUUQTQJYBCBZDPNFOMFUUFSNBJMNBJMJOHFNBJMNBJMCPY
  18. ɹԹ౓ײ  1ՕॴͰ΋Өڹ֬ೝΛଵͬͯ
 ໰୊͕ى͖ͨΒɺؔ࿈γεςϜ શମ͕μ΢ϯ͠͏Δ 1ͭͰ΋։ൃҊ͕݅஗ΕͨΒ
 ۄಥ͖ͰଞͷҊ݅·Ͱ஗Εͯ
 શνʔϜͷܭը͕஗Ԇ͢Δ ΫΦϦςΟ ΞδϦςΟ

  19. ɹॳ݄࣮੷  6ରԠ / 27ґཔ

  20. ɹͲͷνʔϜ΋ࢪࡦ͕ଧͯͳ͍  ࢪࡦ ࢪࡦ ࢪࡦ Blocker ❌

  21. 1. ʲഎܠʳάϩʔεϋοΫͩʂ 2. ʲ՝୊ʳεςʔΫϗϧμʔ͕Ϡό͍ʂ 3. ʲ՝୊ʳ։ൃεΩϧ͕Ϡό͍ʂ 4. ʲ՝୊ʳγεςϜ͕Ϡό͍ʂ 5. ʲ·ͱΊʳΞδϦςΟͩʂ

     ɹΞδΣϯμ
  22. ɹεςʔΫϗϧμʔ͕ଟ͗͢Δ໰୊ 

  23. νʔϜͰʮޒ݄Ӎߴ଎΢ΥʔλʔϑΥʔϧʯͱݺͿϓϩηε͕ࣗવͱߏங͞Εͨ ɹΰʔϧ ɹํ๏ ɹ։ൃϓϩηεߏங  ҆ఆԽ ߴ଎Խ ηϨϞχʔ يಓमਖ਼ ΞΠςϜ

    ՄࢹԽ
  24. ɹࣾ಺ͷ։ൃඪ४ɾςϯϓϨ͸͋ͬͨ • ๲େͳϧʔϧ܈ ʹ ͙͢ʹ࢖͑ͳ͍ ɹɹɹɹɹɹɹɹɹʮ뱌ʯʹֻ͕͔࣌ؒΔ
 • ͦͷ࣌ʑͰඞཁͳ΋ͷ ʹ ϓϧϕʔεͰ੔උ

    ɹɹɹɹɹɹɹɹɹʢͤ͟ΔΛಘͳ͔ͬͨʣ  IUUQTQJYBCBZDPNFOMJCSBSZCPPLTNPOUFTTPSJTIFMG
  25. νʔϜͰʮޒ݄Ӎߴ଎΢ΥʔλʔϑΥʔϧʯͱݺͿϓϩηε͕ࣗવͱߏங͞Εͨ ɹΰʔϧ ɹํ๏ ɹ։ൃϓϩηεߏங  ҆ఆԽ ߴ଎Խ ηϨϞχʔ يಓमਖ਼ ΞΠςϜ

    ՄࢹԽ ҆ఆԽ ΞΠςϜ ՄࢹԽ
  26. ɹ՝୊؅ཧ • Excel্Ͱ՝୊ϦετΛ؅ཧ
 ɹɹগ͠Ͱ΋ʮ໰୊ͩʂʯͱࢥͬͨ͜ͱ͸ىථ • εΫϥϜʹ͓͚Δো֐෺Ϧετ  IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM

  27. ɹҊ݅؅ཧ • ಉ༷ʹExcel্ͰҊ݅ϦετΛ؅ཧ
 ɹɹཁ݅ɺ޻਺ɺظݶɺ༏ઌ౓ɺଞνʔϜӨڹ • εΫϥϜʹ͓͚ΔϓϩμΫτόοΫϩά 

  28. ɹλεΫ؅ཧ • νʔϜڞ༗ͷςΩετϑΝΠϧͰTODO؅ཧ
 ɹɹ“िͷλεΫҰཡ” ͱ “ணखத࡞ۀͷ୲౰ऀ” ΛՕ৚ॻ͖
 • εΫϥϜʹ͓͚ΔεϓϦϯτόοΫϩά 

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

    কདྷ·Ͱશ෦ॻ͘ͷ͸×
 = ͦͷिͷλεΫ͚ͩ ʢλΠϜϘοΫεͷ֓೦ʣ ϚϧνλεΫ͸×
 = ্͔Βॲཧ ʢWIP੍ݶɾҰݸྲྀ͠ʣ TODO TODO TODO TODO TODO
  30. νʔϜͰʮޒ݄Ӎߴ଎΢ΥʔλʔϑΥʔϧʯͱݺͿϓϩηε͕ࣗવͱߏங͞Εͨ ɹΰʔϧ ɹํ๏ ɹ։ൃϓϩηεߏங  ҆ఆԽ ߴ଎Խ ηϨϞχʔ يಓमਖ਼ ΞΠςϜ

    ՄࢹԽ ҆ఆԽ ηϨϞχʔ يಓमਖ਼
  31. ɹҊ݅ͷ༏ઌॱҐ • 19νʔϜͱͷݸผௐ੔ˍ఻ݴήʔϜ͸ΧΦεʹͳͬͨ • શମϛʔςΟϯάͰिʹ1ճ͚ͩ༏ઌॱҐΛશһͰೖΕସ͑ ɹɹɹ໨ۄҊ݅ ʼ ޻਺͕খ͍͞Ҋ݅ ʼ ޻਺͕େ͖͍Ҋ݅

    • εΫϥϜʹ͓͚ΔόοΫϩάϦϑΝΠϝϯτ 
  32. ɹνʔϜ಺ͷঢ়گڞ༗ • ͜·Ίʹ಺෦ڞ༗͍ͨ͠ 㱻 ໨ઌͷ࡞ۀʹूத͍ͨ͠ • ස౓͸৭ʑࢼͯ͠1೔1-2ճ͕ఆண • εΫϥϜʹ͓͚ΔσΠϦʔϛʔςΟϯά 

    IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM
  33. ɹଞγεςϜӨڹͷ֬ೝ • ϦϦʔεલʹվम಺༰Λिʹ1ճͷԣஅϛʔςΟϯάͰ࠷ऴ֬ೝ ɹɹͦͷࡍʹؔ܎֤Ґ͔Βʮ͜ͷ఺Λҙࣝ͢ΔͱΑΓྑ͘ͳΔʯͷϑΟʔυόοΫ΋ • εΫϥϜʹ͓͚ΔεϓϦϯτϨϏϡʔ  
 ϦϦʔεԆظ 


    ͦͷ··Goʂ Өڹʹݒ೦͕͋Δʁ Yes No
  34. ɹϚΠϧετʔϯ੔ཧ • ଞνʔϜͷܭը͕ࠞཚ → ീํ͔Βʮ͍ͭͰ͖ͦ͏Ͱ͔͢ʁʯ
 • िʹ1ճ “ͦͷि΍Δ͜ͱ” ͱ “ࠓޙͷݟ௨͠”

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

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

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

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

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

    ઃܭ ࢼݧ ϦϦʔε ཁ݅ఆٛ ੡଄ ઃܭ ࢼݧ ίʔυΛॻ͘લʹଞνʔϜڞ༗ ো֐࣌ʮAPIͰ͸ͳ͍ʯ੾Γ෼͚ ࢼݧϑΣʔζ͸μϝԡ͠ 1݅Ͱ΋όά͕ग़ͨΒ࠶ൃ๷ࢭ ίʔυΛॻ͖ͳ͕Β ೏͏ҟৗܥ·Ͱςετ
  40. νʔϜͰʮޒ݄Ӎߴ଎΢ΥʔλʔϑΥʔϧʯͱݺͿϓϩηε͕ࣗવͱߏங͞Εͨ ɹΰʔϧ ɹํ๏ ɹ։ൃϓϩηεߏங  ҆ఆԽ ߴ଎Խ ηϨϞχʔ يಓमਖ਼ ΞΠςϜ

    ՄࢹԽ ߴ଎Խ ηϨϞχʔ يಓमਖ਼
  41. ɹ՝୊ϦετΛ΋ͱʹվળ • िʹ1ճ͚ͩվળͷ࣌ؒΛઃ͚ͨ • ໰୊͕ଟ͗͢Δ → 1͚ͭͩબͿ ɹɹʲ඼࣭ʳ࣌ؒΛֻ͚ͯ୲อࡁΈʢ୲౰ՕॴͷγεςϜো֐͸2݅ / 120Ҋ݅ʣ

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

    • ଞνʔϜͷσΠϦʔϛʔςΟϯάʹࢀՃ • νʔϜؒͰޓ͍ͷίϯςΩετΛ೺Ѳ
 ɹɹؾܰʹ૬ஊ → ϦʔυλΠϜ୹ॖ IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM แׅతͳυΩϡϝϯτΑΓ΋
 ಈ͘ιϑτ΢ΣΞΛ ϓϩηε΍πʔϧΑΓ΋
 ݸਓͱର࿩Λ
  43. ͜ΕΒͷΞΠςϜ΍Πϕϯτ
 ↓ ͋ͬͯ “౰ͨΓલ” ʹࢥ͑Δʁ
 ↓ ࠷ॳ͔Β༻ҙ͢Δͷ͕ ”౰વ”ʁ 

  44. ɹʮ౰ͨΓલʯΛ஝ੵͨࣾ͠಺ඪ४ɾςϯϓϨ • ๲େͳϧʔϧ܈ ʹ ͙͢ʹ࢖͑ͳ͍ ɹɹɹɹɹɹɹɹɹʮ뱌ʯʹֻ͕͔࣌ؒΔ
 • ͦͷ࣌ʑͰඞཁͳ΋ͷ ʹ ϓϧϕʔεͰ੔උ

    ɹɹɹɹɹɹɹɹɹʢͤ͟ΔΛಘͳ͔ͬͨʣ  IUUQTQJYBCBZDPNFOMJCSBSZCPPLTNPOUFTTPSJTIFMG
  45. ɹϓϧϕʔε ඞཁͳ΋ͷΛɺඞཁͳͱ͖ʹɺඞཁͳ͚ͩ ϘτϧωοΫͷಛఆͱղফΛ܁Γฦ͢  ՝୊ղܾ ՝୊ൃݟ ݁Ռతʹ Pull ݁Ռతʹ Pull

  46. ɹޒ݄Ӎ΢ΥʔλʔϑΥʔϧ ͱνʔϜͰݺͿ΋ͷʹͳͬͨ  ։ൃͷʮྲྀΕʯʹ৐ͤΔ ख໭Γ΍τϥϒϧʹΑΔʮٯྲྀʯʢʹϜμɾϜϥɾϜϦʣΛ๷͙ 1ݸྲྀ͠ʹΑΔϑΥʔΧεɹɹόοναΠζΛখ͘͞෼ׂɹɹ඼࣭Λલ޻ఔͰ୲อɹɹܧଓతͳʮྲྀΕʯͷվળ ޒ݄Ӎͷґཔ ґཔ ґཔ ґཔ

    ੡଄ ઃܭ ࢼݧ ϦϦʔε ཁ݅ఆٛ IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM
  47. ɹ19νʔϜ͔ΒͷґཔʹରԠ͢Δ 

  48. WEBαΠτͷ੒ޭࢪࡦ ϞόΠϧΞϓϦͰ΋΍Ε͹͍͍ͷʹ ىҊ → ࢪࡦͱͯ͠࠾༻ʂ ʲ+αʳྲྀΕ͕ՄࢹԽ → ਫݯʹϑΟʔυόοΫ 

  49. ɹຊ೔࿩͢಺༰ʢ࠶ܝʣ  ৽ถΤϯδχΞ
 ௿͍εΩϧϨϕϧ 19νʔϜ͔Βಉ࣌ґཔ
 ଟ༷ͳεςʔΫϗϧμʔ 10೥෺ɾେن໛
 ϨΨγʔγεςϜ 4ϲ݄Ͱ120Ҋ݅Λ͞͹͘ ϢʔβʔΞΫγϣϯ਺2.8ഒ

    ࢼߦࡨޡ
 ϘτϧωοΫΛ1ͭ1۪ͭ௚ʹղফ x ݁ՌతʹΞδϟΠϧϓϥΫςΟε
  50. ੍໿͕ଟ͍ͱ͖ͦ͜ • ϘτϧωοΫͷಛఆͱղফ • ෢ثʢΞδϟΠϧϓϥΫςΟεʣ → ୹ظؒͰ੒ՌΛ্͛Δ͜ͱ͕Ͱ͖Δ  ɹ఻͍͑ͨ͜ͱʢ࠶ܝʣ

  51. 1. ʲഎܠʳάϩʔεϋοΫͩʂ 2. ʲ՝୊ʳεςʔΫϗϧμʔ͕Ϡό͍ʂ 3. ʲ՝୊ʳ։ൃεΩϧ͕Ϡό͍ʂ 4. ʲ՝୊ʳγεςϜ͕Ϡό͍ʂ 5. ʲ·ͱΊʳΞδϦςΟͩʂ

     ɹΞδΣϯμ
  52. ɹ৽ถΤϯδχΞ WebAPIͷϨεϙϯεʹ
 ύϥϝʔλΛ1ͭ௥Ճ͢Δ͚ͩͷҊ݅ ࠷ॳ͸1िؒ΋අ΍͍ͯͨ͠ 

  53. ɹʮॆ࣮ͨ͠ʯֶशϝχϡʔ͸͋ͬͨ • 3ϲ݄ͰҰਓલʹͳΔڭࡐ ʹ ͙͢ʹ࢖͑ͳ͍ ɹɹɹɹɹɹɹɹɹʢ3ϲ݄ޙ·Ͱઓྗ֎ʣ
 • ͦͷ࣌ʑͰඞཁͳ஌ࣝ ʹ ϓϧϕʔεͰशಘ

    ɹɹɹɹɹɹɹɹɹʢͤ͟ΔΛಘͳ͔ͬͨʣ  IUUQTQJYBCBZDPNFOMJCSBSZCPPLTNPOUFTTPSJTIFMG
  54. ɹTDDͷΑ͏ʹֶͿ  ΞʔΩςΫτ ٕज़ྗ ϓϩμΫτΦʔφʔ ࢓༷ɾࢪࡦ Ϧʔμʔ νʔϜঢ়گ ͱͯ͠ৼΔ෣͏ -

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

    ςετίʔυ࣮ߦ ฉ͍ͨΓௐ΂ͨΓ Pullϕʔε ੺ͬஏΛ͔͘ RED Θ͔ͬͨʂͰ͖ͨʂ GREEN ΞʔΩςΫτ ٕज़ྗ
  56. ɹγεςϜઃܭ ΞʔΩςΫτͱͯ͠ࣄલʹઃܭ͕ݟ௨͍ͤͯΔʁ
 ˠ Noʂ
 ˠ ॲཧػೳهड़΍γʔέϯεਤΛॻ͘ͱ͜Ζ͔Βʂ 

  57. ɹ࢓༷೺Ѳ ΞʔΩςΫτͱͯ͠ઃܭલʹαΠτ࢓༷Λ೺Ѳ͍ͯ͠Δʁ
 ˠ Noʂ
 ˠ ը໘ભҠਤΛ࡞ͬͯΈΔʂ 

  58. ɹؔ࿈γεςϜ ஌Βͳ͍ٕज़ཁૉ → 30෼ͷษڧձΛ։͍ͯ΋Β͏ • Solrͱ͸ͳΜͧ΍
 • ϩʔΧϧ؀ڥͰApacheͷઃఆΛ͍͡Ζ͏ • ࣾ಺ͷϞόΠϧΞϓϦج൫ʹ͍ͭͯ


    • γεςϜશମͷσʔλϑϩʔʢӦۀͷݪߘೖྗ͔Βʣ 
  59. ɹͱʹ͔͘ฉ͘ • ϗϫΠτϘʔυΛ1ͭ઎ڌ
 • ʢຊ෺ͷʣΞʔΩςΫτʹֆͰͷղઆΛґཔ  IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM

  60. ɹલఏ஌ࣝͷඞཁੑΛ࣮ײ • ʮҰྲྀͷΞʔΩςΫτͳΒશ໰ਖ਼ղͰ͖Δ͸ͣʯͰৼΔ෣͏
 • ςετۦಈֶशɿ໰୊Λղ͘ˠϛεˠ౴͑ΛݟΔˠͳΔ΄Ͳ 

  61. ɹͲΜͲΜಡΉ - ؾ෇͘……οʂ͜Ε͸༗ӹ……οʂ • ҰྲྀͷΞʔΩςΫτ͸͖ͪΜͱຊΛಡΉʢଟ෼ʣ
 • ඞཁʹۦΒΕͯಡΉ → ͍΍Ͱ΋ཧղ͢Δ 

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

    ςετίʔυ࣮ߦ ฉ͍ͨΓௐ΂ͨΓ Pullϕʔε ੺ͬஏΛ͔͘ RED Θ͔ͬͨʂͰ͖ͨʂ GREEN ϓϩμΫτΦʔφʔ ࢓༷ɾࢪࡦ
  63. ɹࣄۀߏ଄ ϓϩμΫτΦʔφʔͱͯ͠Ϗδωεߏ଄Λ೺ѲࡁΈʁ → Noʂ → ϐΫτਤΛॻ͘ʂ 

  64. ɹ਺ࣈɾن໛ײ ϓϩμΫτΦʔφʔͱͯ͠਺ࣈΛ೺ѲࡁΈʁ → Noʂ → ΞΫηεղੳπʔϧΛ࢖ͬͯΈΔʂ 

  65. ɹࣄۀߏ଄ ϓϩμΫτΦʔφʔͱͯ͠ӦۀͷചΓํΛ஌͍ͬͯΔʁ → Noʂ → Ӧۀࣾһͷ঎඼ݚमʹࠞͥͯ΋Β͏ʂ 

  66. ɹϓϥΠϕʔτ·Ͱ৵৯…… ϓϩμΫτΦʔφʔͱͯ͠ϓϩμΫτΛ͍࣋ͬͯΔʁ → Noʂ → ݸਓαʔϏεΛ࡞Δʂ 

  67. ɹશ෦1ਓͰ΍Δ → શମ૾͕ݟ͑Δ • ϓϩηεɿاը͔Βอकӡ༻·Ͱ • ٕज़ཁૉɿϑϩϯτ͔ΒΠϯϑϥ·Ͱ 

  68. ɹશ෦1ਓͰ΍Δ → ࡉ෦͕ݟ͑Δ 
 • αʔόઃఆ͸σϑΥϧτ஋Ͱ͍͍ͷ͔
 • ձࣾͩͱར༻ن໿͸Ͳ͏ͳ͍ͬͯΔͷ͔  IUUQHJIZPKQCPPL

  69. ɹϢʔβʔͷ੠ → ඇػೳཁ͕݅ؾʹͳΓͩ͢  ʲύϑΥʔϚϯεʳ
 • ઌഐʹฉ͖ͳ͕ΒJMeterΛࢼͯ͠ΈΔʂ
 • ͜ͷΞΫηεྔͰ͜ͷॲཧ଎౓ͳͷ͔ʂ ʲηΩϡϦςΟʳ


    • HTTPϔομʔͷઃఆɺେৎ෉͚ͩͬʂ
 • େৎ෉ͩͬͨʂ͜͜Ͱઃఆ͍ͯ͠Δͷ͔ʂ
  70. ɹTDDͷΑ͏ʹֶͿ  ΞʔΩςΫτ ٕज़ྗ ϓϩμΫτΦʔφʔ ࢓༷ɾࢪࡦ Ϧʔμʔ νʔϜঢ়گ ͱͯ͠ৼΔ෣͏ -

    ςετίʔυ࣮ߦ ฉ͍ͨΓௐ΂ͨΓ Pullϕʔε ੺ͬஏΛ͔͘ RED Θ͔ͬͨʂͰ͖ͨʂ GREEN Ϧʔμʔ νʔϜঢ়گ
  71. ɹܗ͔ΒೖΔ • ʮ͑ʁݺ͹Ε·͚ͨ͠ͲʁʯΈ͍ͨͳإͰձٞʹࢀՃ • νʔϜϦʔμʔͷ୅ΘΓʹνʔϜͷใࠂΛ͢Δ  IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM

  72. ɹѹ౗తϑΟʔυόοΫྔ • ࿅शɿϦʔμʔʹ͓ࢼ͠ใࠂ → ؒҧ͍Λࢦఠͯ͠΋Β͏ • ࣮ફɿଞνʔϜͷϦʔμʔʹ΅͜΅͜ʹ͞ΕΔ  IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM

  73. ɹϝϯλʔͱͷ1on1 • ҰྲྀͷϦʔμʔʹ͸ϝϯλʔ͕͍Δ΋ͷΒ͍͠ʢଟ෼ʣ • ผ෦ॺͷઌഐʹ͓ئ͍ͯ͠ɺຖ೔30෼ͷ1on1Λߦ͏  IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM

  74. Ϧʔμʔʢࣗশʣͱͯ͠νʔϜͷݱঢ়Λઆ໌͢Δ → Θ͔Βͳ͚Ε͹ௐ΂Δɾฉ͘ ɹQ1. νʔϜ͸͍·ͲΜͳঢ়گ͔ʁ by ϝϯλʔ 

  75. ɹQ2. ࠷΋େ͖ͳ໰୊͸Կ͔ʁ by ϝϯλʔ Ϧʔμʔʢࣗশʣͱͯ͠νʔϜ๊͕͑Δ໰୊Λઆ໌͢Δ → ຊ౰ʹͦΕ͕1൪ͷ໰୊ʁ by ϝϯλʔ →

    σΟεΧογϣϯͰ੔ཧ  ໰୊ ໰୊ ໰୊ ໰୊ ໰୊
  76. ɹQ3. ໰୊ʹରͯ͠Ͳ͏ͨ͠Β͍͍͔ʁ by ϝϯλʔ Ϧʔμʔʢࣗশʣͱͯ͠ղܾΞϓϩʔνΛఏҊ͢Δ
 → ຊ౰ʹͦΕ͕ϕετͷํ๏ʁ by ϝϯλʔ →

    աڈͷࢀߟࣄྫΛฉ͘ˍࠓճͷέʔε͸Ͳ͏͢΂͖͔ٞ࿦  ໰୊
  77. ɹTDDͷΑ͏ʹֶͿ  ΞʔΩςΫτ ٕज़ྗ ϓϩμΫτΦʔφʔ ࢓༷ɾࢪࡦ Ϧʔμʔ νʔϜঢ়گ ͱͯ͠ৼΔ෣͏ -

    ςετίʔυ࣮ߦ ฉ͍ͨΓௐ΂ͨΓ Pullϕʔε ੺ͬஏΛ͔͘ RED Θ͔ͬͨʂͰ͖ͨʂ GREEN
  78. ɹʮॆ࣮ͨ͠ʯֶशܭը͚͕ͩਖ਼ղͰ͸ͳ͍ • 3ϲ݄ͰҰਓલʹͳΔڭࡐ ʹ ͙͢ʹ࢖͑ͳ͍ ɹɹɹɹɹɹɹɹɹʢ3ϲ݄ޙ·Ͱઓྗ֎ʣ
 • ͦͷ࣌ʑͰඞཁͳ஌ࣝ ʹ ϓϧϕʔεͰशಘ

    ɹɹɹɹɹɹɹɹɹʢͤ͟ΔΛಘͳ͔ͬͨʣ  IUUQTQJYBCBZDPNFOMJCSBSZCPPLTNPOUFTTPSJTIFMG
  79. ɹʮ࠷ڧͷҭ੒ϝχϡʔʯ͸ଘࡏ͠ͳ͍ʁ 
 ৽ถΤϯδχΞ͕뱌͖͠Εͳ͍஌ࣝ ʹ ·ͩඞཁͳ͍ػೳΛ࡞Δͷͱಉ͔͡΋  IUUQXXXQSPKFDUDBSUPPODPN

  80. ɹ“࣮ફ” Λ௨ͯ͠ “ࣗ૸” ͢Δ Ұྲྀͱͯ͠ৼΔ෣͏ ↓ ౰વ͏·͍͔͘ͳ͍ ↓ ࠩ෼͕ݟ͑Δ ↓

    Ұྲྀͷ໨ઢʹۙ෇͘  IUUQTXXXQFYFMTDPNQIPUPDBSFGSFFDIJMEDIJMEIPPEDPVOUSZTJEF
  81. ɹΠϯΫϦϝϯλϧͳֶश ʮ෼͔Δ͜ͱʯ͕૿͑Δ౓ʹ ʮ෼͔Βͳ͍͜ͱʯ͕޿͕͍ͬͯ͘ ͦΕΒΛશ෦ɺௐ΂Δʂࢼ͢ʂฉ͘ʂֶͿʂ  IUUQTXXXQFYFMTDPNQIPUPCBMMTIBQFECMVSDMPTFVQGPDVT

  82. ɹຊ೔࿩͢಺༰ʢ࠶ܝʣ  ৽ถΤϯδχΞ
 ௿͍εΩϧϨϕϧ 19νʔϜ͔Βಉ࣌ґཔ
 ଟ༷ͳεςʔΫϗϧμʔ 10೥෺ɾେن໛
 ϨΨγʔγεςϜ 4ϲ݄Ͱ120Ҋ݅Λ͞͹͘ ϢʔβʔΞΫγϣϯ਺2.8ഒ

    ࢼߦࡨޡ
 ϘτϧωοΫΛ1ͭ1۪ͭ௚ʹղফ x ݁ՌతʹΞδϟΠϧϓϥΫςΟε
  83. ੍໿͕ଟ͍ͱ͖ͦ͜ • ϘτϧωοΫͷಛఆͱղফ • ෢ثʢΞδϟΠϧϓϥΫςΟεʣ → ୹ظؒͰ੒ՌΛ্͛Δ͜ͱ͕Ͱ͖Δ  ɹ఻͍͑ͨ͜ͱʢ࠶ܝʣ

  84. 1. ʲഎܠʳάϩʔεϋοΫͩʂ 2. ʲ՝୊ʳεςʔΫϗϧμʔ͕Ϡό͍ʂ 3. ʲ՝୊ʳ։ൃεΩϧ͕Ϡό͍ʂ 4. ʲ՝୊ʳγεςϜ͕Ϡό͍ʂ 5. ʲ·ͱΊʳΞδϦςΟͩʂ

     ɹΞδΣϯμ
  85. ɹϨΨγʔγεςϜͱ͍͔ʹ޲͖߹͏͔  50+ ͷαϒγε 3500+ tables
 100,000+ columns ߴ଎։ൃʹ଱͑ΒΕΔ಺෦඼࣭Ͱ͸ͳ͍

  86. “ΠςϨʔγϣϯ” ͱ “ਖ਼͍͠ϑΥʔΧε” ɹϨΨγʔγεςϜ΋ಉ͡  దԠ ݕࠪ

  87. σϑΝΫτελϯμʔυͷ։ൃελΠϧʹ͚ۙͮΔ ɹΠςϨʔγϣϯ - ܧଓతσϦόϦʔΛࢧ͑Δٕज़  Git / Gitlabಋೖ
 ϚʔδϦΫΤετத৺ͷ։ൃ
 ϨϏϡʔ΍มԽΛ௥͍΍͘͢

    SonarQubeಋೖ
 Ξϯνύλʔϯͳॻ͖ํΛࢲత
 ιʔείʔυͷෳࡶ౓Λ਺஋Խ
  88. ɹɹɹɹɹɹ υΩϡϝϯτʁ ɹɹɹɹɹɹ ػೳཁ݅ʁ ɹɹɹɹɹɹ ྑ͍ઃܭʁ ɹਖ਼͍͠ϑΥʔΧε 

  89. ɹ APIར༻ऀ޲͚ͷΤϥʔυΩϡϝϯτ  • ίʔυΛࣗવݴޠʹ͚ͨͩ͠
 • ࡞Δͷʹ͕͔͔࣌ؒΔ • ୭΋ಡΜͰ͍ͳ͔ͬͨ •

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

    • όϦσʔγϣϯϒϩοΫΛ੾Γग़ͯ͠ ʮιϑτ΢ΣΞͷอकੑʯΛॏࢹ ɹif … ɹɹif … ɹɹɹif … ɹɹɹɹreturn; ɹɹelse if … ɹɹɹif … ɹɹɹɹreturn; ɹ# validation ɹif … ɹɹreturn; ɹ ɹ# main logic ɹ…… ɹ…… No Docs
  91. ɹ υΩϡϝϯτ͸͋͘·Ͱิॿʂ ϑΥʔΧε͢΂͖͸ ʮ࣮ࡍʹಈ͘ιϑτ΢ΣΞʯ 

  92. ɹɹɹɹɹɹ υΩϡϝϯτʁ ɹɹɹɹɹɹ ػೳཁ݅ʁ ɹɹɹɹɹɹ ྑ͍ઃܭʁ ɹਖ਼͍͠ϑΥʔΧε 

  93. ɹ ػೳཁ݅͸ຬͨͤΔ͚Ͳ ࣅͨΑ͏ͳػೳ → ಉ͡APIʹڞ௨Խ͢Ε͹OKʁ  WEBαΠτձһ޲͚ͷ৽ணϝʔϧ εϚϗΞϓϦͷ৽ணϓογϡ௨஌

  94. ɹ NGʂҙຯ߹͍͕ҧͬͨʂ 
 ΞϓϦͱWEBαΠτͰϢʔβʔ૚͕ҧ͏ ↓ 
 ৽ண഑৴ͱͯ͠ར༻͢ΔϩδοΫ΋ҧͬͨ  IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM

  95. ɹ ΦʔέετϨʔγϣϯ૚·͕͍ͷ΋ͷ Λઃ͚ͨ ɹɹɹ• ݺͼग़͠ݩʹΑΔίϯςΩετͷ੾Γ෼͚
 ɹɹɹ• ࠜͬ͜ʹ͋Δͷ͸ϚΠΫϩαʔϏεతͳൃ૝  View View

    View Controller Controller Controller Model
  96. ɹ Ծઆݕূͱͯ͠ͷػೳ௥Ճ ʮޙ͔Βফ͠΍͍͢ʯ؍఺ͰίʔυΛ੾Γग़͢ ֘౰ϒϩοΫ͚ͩফͤ͹ऴΘΓ  ABςετ༻ϝιου ݺͼग़͠ॲཧ private xxx testAB(Hoge

    hoge) { ɹɹ…… } public String mainController() { ɹɹ…… ɹɹtestAB(hoge); ɹɹ…… }
  97. ɹ ໨ઌͷػೳཁ͚݅ͩͰ͸ͳ͍ʂ ϑΥʔΧε͢΂͖͸ ʮϓϩμΫτʹ͓͚Δҙຯʯ
 ʢυϝΠϯ஌ࣝʹґଘ͢Δ͜ͱ΋͋Δʣ 

  98. ɹɹɹɹɹɹ υΩϡϝϯτʁ ɹɹɹɹɹɹ ػೳཁ݅ʁ ɹɹɹɹɹɹ ྑ͍ઃܭʁ ɹਖ਼͍͠ϑΥʔΧε 

  99. ɹ “ྑ͍” ͷڞ௨ೝࣝ ݩͷιʔείʔυ͕Ԛ͍ ↓ ʮԿ͕ Better ͳͷ͔ʯҙݟ͕όϥόϥ ↓ ϓϧϦΫͷϨϏϡʔͰᎍΊΔ

    
  100. ɹ ੈؒͰ “ྑ͍” ͱݴΘΕ͍ͯΔ΋ͷ ಡΉ → νʔϜ಺Ͱ࿩͠߹͏ → શવΘ͔ΒΜʂ →

    ಄ͷย۱ʹ࢒Δ  IUUQTXXXPSFJMMZDPKQCPPLTɹɹIUUQXXXTIPFJTIBDPKQCPPLEFUBJMɹɹIUUQXXXTCDSKQQSPEVDUTIUNM
 IUUQXXXTIPFJTIBDPKQCPPLEFUBJMɹɹIUUQTUIMJHIUDPNCMPHVODMFCPCUIFDMFBOBSDIJUFDUVSFIUNMɹɹIUUQTNBSUJOGPXMFSDPNBSUJDMFTNJDSPTFSWJDFTIUNM
  101. ɹ গͣͭ͠ݟ͑ͯ͘Δ ໰୊ʹͿ͔ͭΔ
 → ରԠ͢Δ
 → ޙ෇͚Ͱʮ͜Ε͕XXύλʔϯͩͬͨͷͰ͸ʁʯ
 → ঃʑʹʢࣗ෼ͨͪͳΓͷʣೝࣝΛἧ͍͑ͯͬͨ 

    IUUQTXXXQFYFMTDPNQIPUPCMBDLCPBSECVTJOFTTDIBMLCPBSEDPODFQU
  102. ɹ ՄೳͳൣғͰগͣͭ͠௚͢ ྫʣશͯΛ୲͏CommonClass → ໾ׂͰ੾Γग़͢ ϘʔΠεΧ΢τݪଇ
 ৮Δ͍ͭͰʹෳࡶ౓ΛԼ͛Δ  IUUQTXXXQFYFMTDPNQIPUPBEVMUBEWFOUVSFCBDLQBDLEBZMJHIU

  103. “ΠςϨʔγϣϯ” ͱ “ਖ਼͍͠ϑΥʔΧε” ɹϨΨγʔγεςϜ΋ಉ͡  దԠ ݕࠪ

  104. ɹ“ιϑτ΢ΣΞ” ʹ஫໨ͯ͠ؾ෇͘ υΩϡϝϯτະ൓өͷ࢓༷ʢʹ޿ࠂͷදࣔॱϩδοΫʣ Λࣗओௐࠪ 
 → վળࢪࡦΛఏҊ 
 ఏҊ಺༰ͦͷ··Ͱ͸ͳ͔͕ͬͨ ࢪࡦʹͭͳ͕ͬͨ

     IUUQXXXJSBTVUPZBDPNCMPHQPTU@IUNM
  105. ɹຊ೔࿩͢಺༰ʢ࠶ܝʣ  ৽ถΤϯδχΞ
 ௿͍εΩϧϨϕϧ 19νʔϜ͔Βಉ࣌ґཔ
 ଟ༷ͳεςʔΫϗϧμʔ 10೥෺ɾେن໛
 ϨΨγʔγεςϜ 4ϲ݄Ͱ120Ҋ݅Λ͞͹͘ ϢʔβʔΞΫγϣϯ਺2.8ഒ

    ࢼߦࡨޡ
 ϘτϧωοΫΛ1ͭ1۪ͭ௚ʹղফ x ݁ՌతʹΞδϟΠϧϓϥΫςΟε
  106. ੍໿͕ଟ͍ͱ͖ͦ͜ • ϘτϧωοΫͷಛఆͱղফ • ෢ثʢΞδϟΠϧϓϥΫςΟεʣ → ୹ظؒͰ੒ՌΛ্͛Δ͜ͱ͕Ͱ͖Δ  ɹ఻͍͑ͨ͜ͱʢ࠶ܝʣ

  107. 1. ʲഎܠʳάϩʔεϋοΫͩʂ 2. ʲ՝୊ʳεςʔΫϗϧμʔ͕Ϡό͍ʂ 3. ʲ՝୊ʳ։ൃεΩϧ͕Ϡό͍ʂ 4. ʲ՝୊ʳγεςϜ͕Ϡό͍ʂ 5. ʲ·ͱΊʳΞδϦςΟͩʂ

     ɹΞδΣϯμ
  108. ɹॳ݄࣮੷  6ରԠ / 27ґཔ

  109. ɹͲͷνʔϜ΋ࢪࡦ͕ଧͯͳ͍  ࢪࡦ ࢪࡦ ࢪࡦ Blocker ❌

  110. ɹ࠷ऴ݄࣮੷  43ରԠ / 43ґཔ

  111. ɹࢪࡦ͕ಈ͖࢝ΊΔ  ࢪࡦ ࢪࡦ ࢪࡦ

  112. ɹΞδϦςΟͷ޲্ ɹɹɹɹɹx 7.16  6 43

  113. ɹ19νʔϜ͔Βͷ120ґཔ / 4ϲ݄  ґཔݩ Ҋ݅਺  શମࢪࡦ  

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

  115. ɹຊ೔࿩͢಺༰  ৽ถΤϯδχΞ
 ௿͍εΩϧϨϕϧ 19νʔϜ͔Βಉ࣌ґཔ
 ଟ༷ͳεςʔΫϗϧμʔ 10೥෺ɾେن໛
 ϨΨγʔγεςϜ 4ϲ݄Ͱ120Ҋ݅Λ͞͹͘ ϢʔβʔΞΫγϣϯ਺2.8ഒ

    ࢼߦࡨޡ
 ϘτϧωοΫΛ1ͭ1۪ͭ௚ʹղফ x ݁ՌతʹΞδϟΠϧϓϥΫςΟε
  116. ɹϘτϧωοΫʹϑΥʔΧε͢Δ 1/ 2 ɹɹɹɹɹɹɹ1. ૊৫ɾϓϩηε
 ɹɹɹɹɹɹɹ2. ݸਓεΩϧ
 ɹɹɹɹɹɹɹ3. γεςϜɾٕज़ ɹɹɹɹɹɹ1ͭ1ͭղফ͍ͯͬͨ͠

    
  117. ɹϘτϧωοΫʹϑΥʔΧε͢Δ 2 / 2 ࠷΋େ͖ͳ໰୊ͷಛఆ සൟʹΠςϨʔγϣϯΛճ͢ 
 ↓
 ޮՌతͳղফࡦ ݁ՌతʹΞδϟΠϧϓϥΫςΟεʹͳΓ͏Δ

    
  118. ੍໿͕ଟ͍ͱ͖ͦ͜ • ϘτϧωοΫͷಛఆͱղফ • ෢ثʢΞδϟΠϧϓϥΫςΟεʣ → ୹ظؒͰ੒ՌΛ্͛ΒΕΔ  ɹ఻͍͑ͨ͜ͱ

  119. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ presented by @yuzutas0