複雑なアプリケーションにオブジェクト指向UIで立ち向かう

C379c8114303ccb963d46beda90c84c4?s=47 cawpea
February 14, 2018

 複雑なアプリケーションにオブジェクト指向UIで立ち向かう

Goodpatch Engineer Meetup Vol.4で発表した資料です。
https://goodpatch.connpass.com/event/77080/

C379c8114303ccb963d46beda90c84c4?s=128

cawpea

February 14, 2018
Tweet

Transcript

  1. ෳࡶͳΞϓϦέʔγϣϯʹ ΦϒδΣΫτࢦ޲6*Ͱཱͪ޲͔͏

  2. େ֯কً.BTBLJ0ITVNJ 'SPOUFOE%FWFMPQFS !N@PITVNJ NBTBLJPITVNJ

  3. None
  4. ͱ͋ΔΞϓϦέʔγϣϯͰ๊͍͑ͯͨ೰Έ

  5. αΠτͷಋઢɺػೳ͕ෳࡶͰ ϚχϡΞϧΛݟͳ͍ͱ࢖͍͜ͳͤͳ͍

  6. ϚχϡΞϧ͕ແͯ͘΋࢖͑Δ΋ͷ

  7. Ҿ༻ݩɿIUUQCMVFTQFBLFSKQEPXOMPBETXBMMQBQFSXPPETIFMGIUNM

  8. Ҿ༻ݩɿIUUQCMVFTQFBLFSKQEPXOMPBETXBMMQBQFSXPPETIFMGIUNM J1IPOFͷֶशޮ཰͕ߴ͍ͷ͸ͦͷ6*͕ΦϒδΣΫτϕʔεͰ ઃܭ͞Ε͍ͯΔ͔ΒͰ͢ɻͭ·ΓϞʔυϨεͰ͋Δ͜ͱ͕େ͖ ͳϑΝΫλʔʹͳ͍ͬͯ·͢ɻ༏Εͨ (6* ΞϓϦέʔγϣϯ ʹରͯ͠Ϣʔβʔ͕ʮϚχϡΞϧΛಡ·ͳͯ͘΋࢖͑Δʯͱײ ͡Δͷͩͱ͢Ε͹ɺͦΕ͸खॱ͕֮͑΍͍͔͢ΒͰ͸ͳ͘ɺ ͦ΋ͦ΋ܾ·ͬͨखॱ͕ແ͍͔ΒͳͷͰ͢ɻ OOUX

    – ΦϒδΣΫτϕʔεͷUIϞσϦϯά
  9. 6*ͷجຊ λεΫϕʔεͱΦϒδΣΫτϕʔε

  10. $6* ಈࢺ‎໊ࢺͷߏจ (6* ໊ࢺ‎ಈࢺͷߏจ λεΫϕʔε ΦϒδΣΫτϕʔε ྫSNd%FTLUPQTBNQMFUYU ྫTBNQMFUYUΛબ୒ͯ͠ΰϛശʹҠಈ

  11. Ϣʔβʔ͸ΞΫγϣϯ͝ͱʹ࣮ߦॱংΛ֮͑Δඞཁ͕͋Δ λεΫϕʔεͰ࡞ΒΕͨΞϓϦέʔγϣϯͷྫ ࠶ੜ ࣸਅҰཡ ࣸਅৄࡉ ฤू ࣸਅҰཡ ࣸਅฤू ফڈ ࣸਅҰཡ

    ࣸਅ࡟আ ΞΫγϣϯʢಈࢺʣΛબ୒ͨ͠ޙʹࣸਅʢ໊ࢺʣΛબ୒͢Δ ΦϦϯύεϛϡʔͷϝχϡʔ
  12. ࣸਅҰཡ ࣸਅৄࡉ μ΢ϯϩʔυ ฤू ΦϒδΣΫτϕʔεͰ࡞ΒΕͨΞϓϦέʔγϣϯͷྫ Ϣʔβʔ͸࠷ॳʹର৅෺ΛબͼɺͦΕʹରԠ͢ΔΞΫγϣϯΛࣗ༝ʹબ୒Ͱ͖Δ ࣸਅʢ໊ࢺʣΛબ୒ͨ͠ޙʹΞΫγϣϯʢಈࢺʣΛબ୒͢Δ %SPQCPYͷ8FC্ͷࣸਅҰཡ ࡟আ

  13. ΦϒδΣΫτϕʔεͷ6*͸ϢʔβʔΛϞʔυ͔Βղ์͠ɺ զʑ͕ಓ۩ͷ࢖͍ํʹ͍ؔͯ࣋ͬͯ͠Δجຊతͳϝϯλϧ ϞσϧΛ൓ө͠·͢ɻఝΛଧͭ࣌ɺզʑ͸·ͣϋϯϚʔΛ ࣋ͪɺͦΕ͔ΒৼΓԼΖ͠·͢ɻৼΓԼΖ͔ͯ͠ΒϋϯϚʔ Λ࣋ͭਓ͸͍ͳ͍ͷͰ͢ɻ l z OOUX – ΦϒδΣΫτϕʔεͷUIϞσϦϯά

  14. ΦϒδΣΫτϕʔεͰ6*Λઃܭ͢Δ

  15. Ϣʔβʔͷؔ৺ͷର৅Ͱ͋ΔΦϒδΣΫτΛΫϥεͱͯ͠ ఆٛ͠ɺͦΕΛͦͷ··εΫϦʔϯʹొ৔ͤ͞ΔͷͰ͢ɻ $PVOUFSQBSUc.PEFMFTTBOE.PEBM l z

  16. ΦϒδΣΫτͱ͸lϢʔβʔͷؔ৺ࣄz

  17. ࣗ෼ͷϝοηʔδΛ౤ߘ͍ͨ͠ ΈΜͳͷϝοηʔδΛӾཡ͍ͨ͠ ୭͔ͷϝοηʔδΛڞ༗͍ͨ͠ ͨͱ͑͹ɺ5XJUUFSͷzϢʔβʔͷؔ৺ࣄz͸Կ͔ʁ

  18. ໊ࢺ͸ΦϒδΣΫτͱͯ͠நग़Ͱ͖Δ ࣗ෼ͷϝοηʔδΛ౤ߘ͍ͨ͠ ΈΜͳͷϝοηʔδΛӾཡ͍ͨ͠ ୭͔ͷϝοηʔδΛڞ༗͍ͨ͠ lϢʔβʔz ΦϒδΣΫτ lϝοηʔδz ΦϒδΣΫτ

  19. ࣗ෼ͷϝοηʔδΛ౤ߘ͍ͨ͠ ΈΜͳͷϝοηʔδΛӾཡ͍ͨ͠ ୭͔ͷϝοηʔδΛڞ༗͍ͨ͠ ಈࢺ͸ΞΫγϣϯͱͯ͠நग़Ͱ͖Δ l౤ߘzɺzӾཡzɺzڞ༗z ΞΫγϣϯ

  20. நग़͞ΕͨΦϒδΣΫτͱΞΫγϣϯ ΦϒδΣΫτ ΞΫγϣϯ ຊ࣭త ݱ৅త Ϣʔβʔ ϝοηʔδ ౤ߘ Ӿཡ ڞ༗

    ΦϒδΣΫτ͸มΘΓʹ͘͘ɺΞΫγϣϯ͸มΘΓ΍͍͢
  21. 㲔 ΦϒδΣΫτΛϕʔεʹ6*ϞσϧΛઃܭ͢Δ ΦϒδΣΫτ Ϗϡʔ ϝοηʔδ Ϣʔβʔ ϝοηʔδҰཡ ϝοηʔδͷ ίϨΫγϣϯ ϝοηʔδৄࡉ

    ɾϝοηʔδͷ಺༰ ɾϦπΠʔτ਺ ɾ͍͍Ͷ਺ Ϣʔβʔৄࡉ ɾ໊લ ɾϓϩϑΟʔϧը૾ ɾ౤ߘͨ͠ϝοηʔδ ڞ༗ɺ࡟আ ฤू ৽ن౤ߘ
  22. 6*ϞσϧΛϕʔεʹϫΠϠʔϑϨʔϜΛߟ͑Δ 6TFSOBNF ϝοηʔδҰཡ ϝοηʔδͷ ίϨΫγϣϯ ϝοηʔδৄࡉ w ϝοηʔδͷ಺༰ w ϦπΠʔτ਺

    ʜ Ϣʔβʔৄࡉ w ໊લ w ϓϩϑΟʔϧը૾ ʜ
  23. 6*ϞσϧΛϕʔεʹϫΠϠʔϑϨʔϜΛߟ͑Δ 6TFSOBNF ϝοηʔδҰཡ ϝοηʔδͷ ίϨΫγϣϯ ϝοηʔδৄࡉ w ϝοηʔδͷ಺༰ w ϦπΠʔτ਺

    ʜ Ϣʔβʔৄࡉ w ໊લ w ϓϩϑΟʔϧը૾ ʜ ΦϒδΣΫτΛϕʔεʹ৘ใઃܭ͢ΔࣄʹΑͬͯ ޮ཰తͰແବͷͳ͍6*Λߟ͑΍͘͢ͳΔ
  24. ΦϒδΣΫτࢦ޲6*͕ ΤϯδχΞϦϯάʹ΋ͨΒ͢΋ͷ

  25. λεΫϕʔεͷ6* ϝοηʔδฤू ϝοηʔδҰཡ" σʔλ ϢʔβʔΠϯλʔϑΣʔε ‎ ϝοηʔδ࡟আ ϝοηʔδҰཡ# ‎ औಘ

    \ NFTTBHFT< \JE CPEZlGPPz^  \JE CPEZlCBSz^  \JE CPEZlCB[z^ > ^ औಘ
  26. ΦϒδΣΫτϕʔεͷ6* ϝοηʔδҰཡ ϝοηʔδฤू σʔλ ϢʔβʔΠϯλʔϑΣʔε ‎ ϝοηʔδ࡟আ औಘ \ NFTTBHFT<

    \JE CPEZlGPPz^  \JE CPEZlCBSz^  \JE CPEZlCB[z^ > ^ ‎ ػೳ௥Ճ ‎
  27. ΦϒδΣΫτϕʔεͷ6* ϝοηʔδҰཡ ϝοηʔδฤू σʔλ ϢʔβʔΠϯλʔϑΣʔε ‎ ϝοηʔδ࡟আ औಘ \ NFTTBHFT<

    \JE CPEZlGPPz^  \JE CPEZlCBSz^  \JE CPEZlCB[z^ > ^ ‎ ػೳ௥Ճ ‎ ΦϒδΣΫτϕʔεͷ6*͸σʔλͷ൓ө͕ ௚઀త͔ͭن໛͕େ͖͘ͳͬͯ΋ෳࡶԽ͠ʹ͘͘ͳΔ
  28. ˓˓ը໘ͷ࣌ͷ˚˚ϘλϯͷσβΠϯΛมߋ ͯ͠΋͍͍Ͱ͔͢ʁ ˚˚Ϙλϯ͸ผͷը໘Ͱ΋࢖ͬͯ·͕͢ɺ ͦ͜΋มߋ͍͍ͯ͠Ͱ͔͢ʜʁ σβΠφʔ ΤϯδχΞ σβΠϯΛมߋ͢Δ࣌ʹ࣌ં͋Δޫܠ ͳΔ΄Ͳʜɻͪΐͬͱ֬ೝ͠·͢ɻ σβΠφʔ

  29. σβΠϯ͕෦෼తʹ͔͠ߟ͑ΒΕ͓ͯΒͣɺ֬ೝʹख͕͔͔ؒΔ σβΠφʔͱೝ͕ࣝ߹Θͣɺͦ΋ͦ΋࿦͕ల։͞ΕΔ ࣮૷ޙʹߟྀ࿙Ε͕ൃ֮͠ɺۓٸରԠ͕ൃੜ͢Δ 6*͕ෳࡶͳ࣌ʹى͜Γ͕ͪͳ໰୊ͨͪ  ʁ

  30. σβΠϯ͕෦෼తʹ͔͠ߟ͑ΒΕ͓ͯΒͣɺ֬ೝʹख͕͔͔ؒΔ σβΠφʔͱೝ͕ࣝ߹Θͣɺͦ΋ͦ΋࿦͕ల։͞ΕΔ ࣮૷ޙʹߟྀ࿙Ε͕ൃ֮͠ɺۓٸରԠ͕ൃੜ͢Δ 6*͕ෳࡶͳ࣌ʹى͜Γ͕ͪͳ໰୊ͨͪ  ʁ 6*ͷෳࡶੑΛഉআ͢ΔࣄͰ ΤϯδχΞͱσβΠφʔͷ ίϛϡχέʔγϣϯΛԁ׈ʹ͢Δ

  31. ·ͱΊ

  32. w ΦϒδΣΫτΛ·ͣબ୒ͤ͞ΔࣄͰɺϞʔυϨεͰࣗવͳ6*ʹͳΔ w ΦϒδΣΫτͰ੔ཧ͢ΔࣄʹΑͬͯແବͷͳ͍6*Λߟ͑΍͘͢ͳΔ σβΠϯతଆ໘ ٕज़తଆ໘ w 6*ͱσʔλͷॲཧ͕௚઀తʹͳΓɺίʔυ͕ෳࡶԽ͠ʹ͍͘ w 6*ͷෳࡶੑΛഉআ͢ΔࣄͰσβΠφʔͱڠಇ͠΍͘͢ͳΔ

    ΦϒδΣΫτࢦ޲తʹઃܭͰ͖Δ͔ߟ͑Α͏
  33. ΤϯδχΞ΋σβΠϯʹؔ৺Λ࣋ͬͯɺ ྑ͍Ϟϊ࡞͍͖ͬͯ·͠ΐ͏ɻ

  34. 5IBOLTGPSZPVSBUUFOUJPO