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

iOS でテスト容易な設計を
実現するためのデザインパターン

151a0b14f5914e786e2e104cfb3a9b2f?s=47 Kuniwak
October 02, 2017

iOS でテスト容易な設計を
実現するためのデザインパターン

151a0b14f5914e786e2e104cfb3a9b2f?s=128

Kuniwak

October 02, 2017
Tweet

Transcript

  1. J04Ͱςετ༰қͳઃܭΛ
 ࣮ݱ͢ΔͨΊͷσβΠϯύλʔϯ

  2. ࣗݾ঺հ ·ͣ͸

  3. TUSVDU΍DMBTTؒͷ
 ߏ଄తͳࠩ෼Λܭࢉ͢Δ
 ϥΠϒϥϦͷ࡞ऀͰ͢ σόοάʹศརͳ

  4. ϑΟʔϧυͷࠩҟΛ
 จࣈྻͱͯ͠औಘͰ͖·͢ʂ TUSVDU΍DMBTTΛҾ਺ʹ
 EJ⒎ؔ਺Λ࣮ߦ͢Δͱʜ

  5. IUUQHJUIVCDPN,VOJXBL.JSSPS%J⒎,JU ͘͢͝ศརͰ͢ʂ

  6. σβΠϯύλʔϯͷ
 ঺հͷલʹ

  7. ཧ૝తͳςετͱ͸ɺ
 ͲΜͳ΋ͷͩΖ͏͔ʁ

  8. खಈςετͱ
 ࣗಈςετͷؔ܎ Έͳ͞Μ͝ଘ஌

  9. ࣌ؒܦա ʢػೳ͸૿େ͍ͯ͘͠ʣ ίετߴ ࣗಈςετ खಈςετ खಈςετ͕༗ར ࣗಈςετ͕༗ར ػೳ͕૿͍͑ͯͬͨͱͯ͠΋
 ࣗಈςετ͸ܧଓ͠΍͍͢

  10. ςετର৅ͷཻ౓ͱ
 ίεύͷؔ܎ ͓͓͑ͯ͘͞΂͖

  11. ؔ਺" ؔ਺# ʜ ग़ྗO௨Γ ग़ྗN௨Γ ʜ

  12. ςετର৅ͷཻ౓͕
 খ͍͞ͱ͖

  13. ୯ମςετ ؔ਺" ؔ਺# ςετͷ਺ɿO N௨Γ ୯ମςετ O௨Γ N௨Γ Ϟδϡʔϧ͸ݸผʹςετ͞ΕΔͷͰ

  14. ςετର৅ͷཻ౓͕
 େ͖͍ͱ͖

  15. Ϟδϡʔϧ" ʜ ςετͷ਺ɿOʷN௨Γ Ϟδϡʔϧ# ʜ ϡʔϧ# ʜ Ϟδϡʔϧ# ʜ Ϟδϡʔϧ#

    ʜ Ϟδϡʔϧ# ʜ Ϟδϡʔϧ# ʜ Ϟδϡ खಈ6*ςετ Ϟδϡʔϧ͸࿈݁ͨ͠··ςετ͞ΕΔͷͰ
  16. ΋͠ɺςετͰ͖Δ਺͕
 Nͩͬͨͱ͢Δͱʜ

  17. ୯ମςετ ؔ਺" ؔ਺# ΧόʔͰ͖Δൣғยํ ୯ମςετ O௨Γ N௨Γ

  18. Ϟδϡʔϧ" ʜ ΧόʔͰ͖Δൣғ͘͝Ұ෦ Ϟδϡʔϧ# ʜ ϡʔϧ# ʜ Ϟδϡʔϧ# ʜ Ϟδϡʔϧ#

    ʜ Ϟδϡʔϧ# ʜ Ϟδϡʔϧ# ʜ Ϟδϡ खಈ6*ςετ
  19. ͭ·Γςετର৅ͷཻ౓͕
 খ͍͞ςετʢ୯ମςετʣ͸ɺ
 ίετύϑΥʔϚϯε͕ߴ͍ʂ

  20. ͜͜·Ͱͷ·ͱΊ w खಈςετͱൺ΂ͯࣗಈςετ͸
 ܧଓ͠΍͍͢ w ࣗಈςετͷதͰ΋୯ମςετ͸
 ίετύϑΥʔϚϯε͕ߴ͍ w ͭ·ΓɺࣗಈςετͰ͋Δ୯ମςετ͸ɺ
 ܧଓ͠΍͘͢ίετύϑΥʔϚϯε͕ߴ͍

  21. ݟ͖͑ͯͨ͜ͱ ཧ૝ͷσόοά؀ڥ͸େྔͷ
 ୯ମςετʹΑͬͯ࡞ΒΕΔ ܧଓ͠΍͘͢ίετύϑΥʔϚϯε͕ߴ͍

  22. ୯ମςετ͸͙͢ʹ
 Ͱ͖Δͷ͔ʁ ͜͜Ͱٙ໰ʂ

  23. Ͱ͖·ͤΜ

  24. ୯ମςετͷର৅͸ؔ਺΍Ϋϥε ͭ·Γɺؔ਺΍Ϋϥεͷ
 ઃܭͷӨڹΛड͚΍͍͢

  25. ྫ ΄Μͱ͔ͳʁ

  26. ςετ͠ͳ͍ͱා͍͙Β͍ʹ͸ෳࡶͳؔ਺ ͳʹ΍ΒόϦσʔγϣϯΛ͢ΔΑ͏ͩ

  27. ςετ͢Δʹ͸ςετର৅ʹ
 ద౰ͳೖྗΛ͢Δඞཁ͕͋Δ ͜ͷೖྗ͕ϑΟʔϧυܦ༝Ͱ
 ͔͠΋QSJWBUFͩͬͨΓ͢Δͱ
 ೖྗΛ੍ޚ͢Δ͜ͱ͕ͦ΋ͦ΋೉͍͠

  28. όϦσʔγϣϯͷ݁Ռ͕
 Πϯελϯεϝιουͷ
 ݺͼग़͠ͷ༗ແͰ͔͠
 ൑ఆͰ͖ͳ͍ͱ͖ɺ
 όϦσʔγϣϯ݁Ռͷ
 औಘʹ͸ςΫχοΫ͕
 ඞཁͱ͞ΕΔ

  29. ͜͜·Ͱͷ·ͱΊ ୯ମςετ͕؆୯͔Ͳ͏͔͸
 ର৅ͷઃܭʹେ͖͘ࠨӈ͞ΕΔ

  30. ॏཁͳͷ͸୯ମςετ͕
 ؆୯ͳઃܭʹ͢Δ͜ͱ

  31. ͭͷσβΠϯύλʔϯ ͷ঺հ ୯ମςετΛ؆୯ʹ͢Δ

  32. w 0VUQVU0CKFDU*OKFDUJPO w 4QZ7JFX$POUSPMMFS w *OQVU0CKFDU*OKFDUJPO w 4JOHMF.FUIPE4UVC4QZ w %FQFOEFODZ#BH

    w -PHHJOH0CTFSWFS w 3Y&WFOU#MPDLFS w 4UBUF.BDIJOF.PEFM w 1SFQSPDFTTPS5PLFO
  33. ҉໧తͳग़ྗΛ
 ଊ͑Δύλʔϯ ύλʔϯ 

  34. ςετର৅͸จࣈྻͷόϦσʔγϣϯؔ਺ ೖྗจࣈྻ͕੔਺Ͱ͋Ε͹
 TVDDFTT Λɺͦ͏Ͱͳ͚Ε͹
 GBJMFE ΛݺͿΑ͏ͩ
 ʢܧঝΛલఏͱ࣮ͨ͠૷ʣ

  35. ςετΛߟ͑ͯΈΔ ·ͣ͸

  36. ରԠ͢Δςετ Ͳ͏΍ͬͯTVDDFTT͕
 ݺ͹Εͨ͜ͱΛݕূ͢Ε͹
 ͍͍ͩΖ͏͔

  37. ςετͰ͖·ͤΜ

  38. ςετ͔ΒઃܭΛ
 ٯࢉ͢Δ ͦΕͳΒ

  39. ࠷ॳʹݕ౼͢΂͖͸ɺ݁ՌΛؔ਺ͷ
 ໭Γ஋ʹ͢Δ͜ͱͰ͢ ͨͩ͠ɺঢ়گʹΑͬͯ͸͜ͷํ๏͕
 ࢖͑ͳ͍͜ͱ΋͋Γ·͢ ͦ͜Ͱɺࠓճ͸͜ͷํ๏͕࢖͑ͳ͔ͬͨ
 ͱͯ͠ɺผͷํ๏Λݕ౼͠·͢ ѹ౗తʹ؆୯

  40. 0VUQVU0CKFDU*OKFDUJPO ͦ͏͍͏ͱ͖͸

  41. ςετର৅ͷจࣈྻͷόϦσʔγϣϯؔ਺ ͕͜͜όϦσʔγϣϯؔ਺ͷ
 ग़ྗʹ౰ͨΔ

  42. ग़ྗઌͷΦϒδΣΫτͷ1SPUPDPMΛ࡞੒

  43. ग़ྗઌΦϒδΣΫτΛ
 Ҿ਺͔Β஫ೖͰ͖ΔΑ͏ʹमਖ਼ ੒ޭࣦഊॲཧ͸ग़ྗઌΦϒΤδΣΫτʹ௨஌ ઃܭमਖ਼ޙͷςετର৅

  44. ຊମଆͷ४උ׬ྃ ͓ΊͰͱ͏͍͟͝·͢

  45. ςετͷ४උ Ͱ͸ͬͦ͘͞

  46. ग़ྗ಺༰Λه࿥͢ΔِͷΦϒδΣΫτʢ4QZʣΛ࡞੒ ϝιου͕ݺ͹ΕΔͱ͜͜ʹه࿥͞Ε͍ͯ͘

  47. ઃܭमਖ਼ޙͷςετ ग़ྗઌʹઌ΄Ͳͷ4QZΛࢦఆ TVDDFTT ͚͕ͩͨͩҰ౓͚ͩݺ͹Εͨ͜ͱΛݕূͰ͖Δʂ

  48. 0VUQVU0CKFDU*OKFDUJPO w ͲΜͳ࣌ʹ࢖͏͔ɿ w ςετ͔Βଊ͑ͮΒ͍ग़ྗ͕͋Δͱ͖ w ԿΛ͢Δ͔ɿ w ग़ྗΛ࢘ΔΦϒδΣΫτΛ1SPUPDPMԽ w

    ग़ྗΛه࿥͢ΔِͷΦϒδΣΫτʢ4QZʣΛ࡞੒ w ςετͷ࣌͸4QZΛར༻
  49. 5JQT4QZ7JFX$POUSPMMFS ͜͏͍͏ͷ΋࡞Ε·͢

  50. 6*7JFX$POUSPMMFSͷ-JGF$ZDMFΛ؂ࢹ͢Δ4QZ

  51. ҉໧తͳೖྗΛ
 ੍ޚ͢Δύλʔϯ ύλʔϯ

  52. ςετର৅ αʔόʔͱͷ௨৴͸ڞ௨ͷ
 "1*Ϋϥε͕୲౰͓ͯ͠Γɺ
 αʔόʔ͔Βฦ͖ͬͯͨ஋Λ
 େจࣈʹͯ͠ฦ͍ͯ͠ΔΑ͏ͩ αʔόʔʹϢʔβʔ໊Λ໰͍߹Θͤɺ
 େจࣈʹͯ͠ฦؔ͢਺

  53. ςετΛߟ͑ͯΈΔ ·ͣ͸

  54. ରԠ͢Δςετ ಺෦తʹ࢖͍ͬͯΔ"1*Ϋϥε͸
 αʔόʔ͔Β஋Λऔಘͯ͘͠ΔͨΊɺ
 େจࣈʹͳΔલͷ஋͸༧૝Ͱ͖ͳ͍ ͦͷͨΊݕূʹ࢖͏ਖ਼ղΛܾΊΒΕͳ͍ ςετର৅Λ࡞੒ ίʔϧόοΫ͔Β
 ݁ՌΛݕূ͍ͨ͠ ςετର৅Λ࣮ߦ

  55. *OQVU0CKFDU*OKFDUJPO ͦ͜Ͱ

  56. ಺෦తʹ࢖͍ͬͯΔ"1*ΫϥεΛͦͷ··1SPUPDPMԽ ͜ͷ1SPUPDPMΛݩʹͳͬͨ"1*Ϋϥεʹ࣮૷͓ͤͯ͘͞

  57. ؔ਺ͷҾ਺͔Βɺ಺෦తʹ࢖͏
 "1*ΫϥεΛ౉ͤΔΑ͏ʹमਖ਼ ಺෦తʹ͸౉͞Εͨ"1*ΫϥεΛར༻ͯ͠஋Λऔಘ͢Δ ͭ·Γɺ౉͢"1*ΫϥεΛม͑Ε͹औಘ͞ΕΔ஋΋ม͑ΒΕΔ मਖ਼ޙͷςετର৅

  58. ຊମଆͷ४උ׬ྃ ͓ΊͰͱ͏͍͟͝·͢

  59. ςετର৅ʹ౉͢஋Λςετ༻ͷ΋ͷʹ͢ΔͨΊʹ ઌ΄Ͳͷ1SPUPDPMΛ࣮૷ِͨ͠ͷΫϥεʢ4UVCʣΛ࡞੒ ࣄલʹࢦఆͨ͠஋͕ςετର৅ʹ౉Δ ςετର৅ʹ౉͍ͨ͠஋Λ
 ࣄલʹࢦఆ͢Δ

  60. ςετͰ͸ઌ΄Ͳͷ
 ِͷΫϥεΛ࢖͏ ςετର৅ʹ౉͢஋Λ
 ͜͜ͰࢦఆͰ͖Δ ฦͬͯ͘Δ஋͕Θ͔ͬͯΔͷͰ
 ਖ਼ղΛ؆୯ʹਪଌͰ͖Δ
 ཁ͢Δʹɺҙਤ௨Γେจࣈʹ
 Ͱ͖ͨ͜ͱΛ͔֬ΊΒΕΔ ઃܭमਖ਼ޙͷςετ

  61. *OQVU0CKFDU*OKFDUJPO w ͲΜͳ࣌ʹ࢖͏͔ɿ w ςετ͔Βૢ࡞ͮ͠Β͍ೖྗ͕͋Δͱ͖ w ԿΛ͢Δ͔ɿ w ೖྗΛ࢘ΔΦϒδΣΫτΛ1SPUPDPMԽ w

    ೖྗΛ੍ޚՄೳͳِͷΦϒδΣΫτʢ4UVCʣΛ࡞੒ w ςετͷ࣌͸4UVCΛར༻
  62. 6*,JU΁ͷग़ྗΛ
 ଊ͑Δύλʔϯ ύλʔϯ

  63. ςετର৅ Ϙλϯ͕ԡ͞ΕͨΒɺ
 6*/BWJHBUJPO$POUSPMMFSͷ
 QVTI7JFX$POUSPMMFSϝιουͰ
 ભҠ͍ͨ͠Α͏ͩ

  64. ςετΛߟ͑ͯΈΔ ·ͣ͸

  65. ରԠ͢Δςετ QVTI7JFX$POUSPMMFS͕
 ݺ͹Εͨ͜ͱΛͲͷΑ͏ʹ
 ݕূͰ͖ΔͩΖ͏͔ ϘλϯͷԡԼΛ࠶ݱ͢Δ

  66. ςετ͔ΒઃܭΛ
 ٯࢉ͢Δ ͦ͏͍͏ͱ͖͸

  67. جຊతʹ͸0VUQVU0CKFDU*OKFDUJPOͰɺ
 6*/BWJHBUJPO$POUSPMMFS΁ͷ
 ϝιουݺͼग़͠Λه࿥͢Ε͹Α͍ ͔͠͠ɺ6*/BWJHBUJPO$POUSPMMFSʹ͸
 ͨ͘͞ΜͷϑΟʔϧυͱϝιου͕͋Δ

  68. 6*/BWJHBUJPOͷશͯͷϑΟʔϧυͱ
 ϝιουΛඋ͑ͨ4QZͷ࡞੒ʹ͸
 ͔ͳΓͷख͕͔͔ؒΔʜ ͳΜͱ͔QVTI7JFX$POUSPMMFS͚ͩΛ
 ࠩ͠ସ͑ΒΕͳ͍΋ͷ͔ʜ

  69. 4JOHMF.FUIPE4UVC4QZ ͦ͜Ͱ

  70. ·ͣ͸QVTI7JFX$POUPMMFSʹ
 ૬౰͢Δ1SPUPDPMΛ࡞੒ ͜ͷ1SPUPDPMͰ࣮૷Λཁٻ͢Δͷ͸
 QVTI7JFX$POUSPMMFS͚ͩʹ͢Δ

  71. ࣍ʹઌ΄Ͳͷ1SPUPDPMΛ࣮૷ͯ͠
 ࣮ࡍͷQVTI7JFX$POUSPMMFSΛݺͿ
 ΦϒδΣΫτΛ࡞੒ 1SPUPDPMͷ࣮૷ʹඞཁͳͷ͸
 QVTI7JFX$POUSPMMFS͚ͩ
 ͳͷͰָ͍͢͝

  72. Ҿ਺ܦ༝Ͱઌ΄ͲͷΫϥεΛ஫ೖ ઌ΄ͲͷΫϥεܦ༝Ͱ
 QVTI7JFX$POUSPMMFS
 ͕ݺͼग़͞ΕΔΑ͏ʹ͢Δ ઃܭमਖ਼ޙͷςετର৅

  73. ຊମଆͷ४උ׬ྃ ͓ΊͰͱ͏͍͟͝·͢

  74. ಉ͡1SPUPDPMΛ࣮૷͢Δ4QZΛ࡞੒ QVTI7JFX$POUSPMMFSͷ
 ݺͼग़͠ཤྺͷه࿥ՕॴΛ༻ҙ QVTI7JFX$POUSPMMFS͕ݺ͹ΕͨΒه࿥ʹ௥Ճ

  75. ઌ΄Ͳͷ4QZΛҾ਺ܦ༝Ͱ஫ೖ 4QZܦ༝ͰQVTI7JFX$POUSPMMFS
 ͷݺͼग़͕͠ݕূͰ͖ͨʂ ઃܭमਖ਼ޙͷςετ

  76. 4JOHMF.FUIPE4UVC4QZ w ͲΜͳ࣌ʹ࢖͏͔ɿ w ϝιου΍ϑΟʔϧυ͕ଟ͍ΦϒδΣΫτ
 ΁ͷೖग़ྗΛ੍ޚ͍ͨ͠ͱ͖ w ԿΛ͢Δ͔ɿ w ϝιουͭΛ੾Γग़ͯ͠4UVC4QZΛ࡞੒

    w *OQVU0VUQVU0CKFDU*OKFDUJPOͰ஫ೖ
  77. ґଘؔ܎Λ੔ཧ͢Δ
 ύλʔϯ ύλʔϯ

  78. ςετର৅ 0VUQVU*OQVU0CKFDU*OKFDUJPOΛ
 ଓ͚ΔͱɺҾ਺͕૿͑ͯ͘Δ એݴҾ਺ॳظԽςετͰɺ
 ͦΕͧΕಉ͡Α͏ͳ͜ͱΛճ΋
 ॻ͘ඞཁ͕͋ͬͯͱͯ΋ͭΒ͍

  79. ಛʹ7JFX$POUSPMMFSܥ͸ಉ͡Α͏ͳҾ਺Λ
 Կ౓΋ॻ͘Ӌ໨ʹͳͬͯͭΒ͍

  80. ςετΛߟ͑ͯΈΔ ·ͣ͸

  81. ςετ͸ॻ͚Δ͕ɺςετʹؔ܎ͳ͍Ҿ਺͕ଟ͍ͷͰݟ௨͕͠ѱ͍

  82. %FQFOEFODZ#BH ͦ͜Ͱ

  83. ͢΂ͯͷ7JFX$POUSPMMFSͰڞ௨ͯ͠࢖͏΋ͷΛ#BH΁·ͱΊΔ ஫ҙͯ͠ཉ͍͠ͷ͸ɺڞ௨͠ͳ͍΋ͷ͸
 ͜͜ʹೖΕͯ͸͍͚ͳ͍ͱ͍͏͜ͱ
 ʢΠϯλʔϑΣʔε෼཭ݪଇʹҧ൓͢ΔͨΊʣ

  84. ςετର৅Λमਖ਼ͯ͠ɺઌ΄Ͳ·ͱΊͨ#BHΛड͚औΔΑ͏ʹ͢Δ

  85. ґଘର৅͕૿͑ͯ΋ɺ
 #BHʹ௥Ճ͢Δ͚͍͍ͩ ͦͷͨΊɺमਖ਼͢ΔՕॴΛ
 ͭʹݮΒͤΔ

  86. ຊମଆͷ४උ׬ྃ ͓ΊͰͱ͏͍͟͝·͢

  87. ςετଆͰ͸͞Βʹ#BHͷ
 ࡞੒ํ๏Λ؆୯ʹͰ͖·͢

  88. ςετ༻ʹ#BHʹࣗ਎Λ࡞੒͢ΔϑΝΫτϦؔ਺Λੜ΍͓ͯ͘͠ ಛʹࢦఆ͕ͳ͚Ε͹σϑΥϧτҾ਺Ͱ
 ద౰ͳ΋ͷ͕࢖ΘΕΔΑ͏ʹ͓ͯ͘͠

  89. ςετଆͰઌ΄ͲͷϑΝΫτϦؔ਺Λ࢖͏Α͏ʹ͢Δ ͲΜͳ΋ͷ͕࢖ΘΕͯ΋ςετʹ
 Өڹ͕ͳ͍ͳΒɺҾ਺ΛলུͰ͖Δ

  90. %FQFOEFODZ#BH w ͲΜͳ࣌ʹ࢖͏͔ɿ w ͋ΔΫϥε܈ʹڞ௨ͨ͠Ҿ਺͕ଟ͘ɺ
 ݟ௨͕͠ѱ͘ͳ͍ͬͯΔ৔߹ w ԿΛ͢Δ͔ɿ w ڞ௨ͨ͠Ҿ਺Λ#BHͰͻͱ·ͱΊʹ੔ཧ

    w ςετͰ͸#BHΛϑΝΫτϦؔ਺Ͱ࡞੒ͯ͠ར༻ w ϑΝΫτϦؔ਺ʹσϑΥϧτҾ਺Λઃఆ͓ͯ͘͠ͱศར
  91. ςετର৅Λ෼ׂ͢Δ
 ύλʔϯ ύλʔϯ

  92. ςετର৅ͷ.PEFM ঢ়ଶมԽΛEFMFHBUF
 ͔Β؂ࢹͰ͖Δ ͋Δؔ਺Λ࣮ߦ͢Δͱ
 ಺෦ঢ়ଶ͕มԽͯ͠ EFMFHBUFʹ௨஌͞Εɺ ͍ͭͰʹϩά͕औΒΕΔ .PEFM͸ঢ়ଶΛ
 อ͍࣋ͯ͠Δ ϩάΛ୲౰͢Δ-PHHFS͸


    Ҿ਺ܦ༝Ͱ஫ೖ͞ΕΔ
  93. ςετΛߟ͑ͯΈΔ ·ͣ͸

  94. .PEFMͷঢ়ଶભҠΛ
 ͔֬ΊΔςετʹ
 -PHHFSΛ༩͑Δඞཁ͕ ͋Δͷ͸ͪΐͬͱҧ࿨ײ ରԠ͢Δςετ .PEFMͷঢ়ଶભҠΛݕূ͍ͯ͠Δ

  95. ςετ͔ΒઃܭΛ
 ٯࢉ͢Δ ͦ͏͍͏ͱ͖͸

  96. ͜͏͍͏ͱ͖͸ϩάػೳΛ
 .PEFM͔Β෼཭ͨ͘͠ͳΔ ϩά͸.PEFMͷঢ়ଶભҠΛ
 ه࿥͢Δ΋ͷʹͳ͍ͬͯΔ ͭ·ΓɺϩάػೳΛ෼཭ͨ͠ͱ
 ͯ͠΋ঢ়ଶભҠΛݕ஌Ͱ͖Ε͹ɺ
 ͜Ε·Ͱ௨ΓʹϩάΛऔΕͦ͏ͳ
 ༧ײ͕͋Δ

  97. -PHHJOH0CTFSWFS ͦ͜Ͱ

  98. -PHHFSΛ৽͘͠
 .PEFMͷ؂ࢹऀʹ
 ௥Ճ͢ΔΘ͚͕ͩɺ
 EFMFHBUFͷ··ͩͱ
 ෳ਺ͷΦϒδΣΫτ͔Β
 ؂ࢹͮ͠Β͍ͷͰɺ
 3Y4XJGU΁ஔ͖׵͑Δ .PEFM͔Βϩάͷ
 ੹຿Λ֎͢ ઃܭमਖ਼ޙͷςετର৅

  99. .PEFMΛ؂ࢹͯ͠ϩά Λૹ৴͢ΔΫϥεΛ࡞੒ .PEFMͷঢ়ଶ͕
 มԽͨ͠ΒϩάΛૹ৴ .PEFMͷঢ়ଶભҠΛ؂ࢹ

  100. ຊମଆͷ४උ׬ྃ ͓ΊͰͱ͏͍͟͝·͢

  101. .PEFMͷ੹຿͔Βϩά ͕֎ΕͨͷͰɺςετ͕
 ঢ়ଶભҠͷݕূʹ
 ઐ೦Ͱ͖ΔΑ͏ʹͳͬͨʂ ઃܭमਖ਼ޙͷςετ

  102. -PHHJOH0CTFSWFS w ͲΜͳ࣌ʹ࢖͏͔ɿ w .PEFMʹϩάػೳ͕ࠞࡏ͍ͯ͠Δ৔߹ w ԿΛ͢Δ͔ɿ w .PEFMΛෳ਺ͷ0CTFSWFS͔Β؂ࢹͰ͖ΔΑ͏ʹ͢Δ w

    .PEFM͔Βϩάػೳͷ੹຿Λ֎͢ w .PEFMΛ؂ࢹ͢Δ-PHHFSΛ࡞੒͢Δ
  103. ิ଍ɿ3Y4XJGU͕ݏͳਓ޲͚ɺ
 EFMFHBUFͷෳ਺ܥ͸͜͏ͳΔ ஍ࠈͷນ։͚

  104. EFMFHBUFΛ഑ྻʹ͢Δ EFMFHBUFΛ഑ྻʹ͢Δͱɺ
 ऑࢀরʹ͢Δίϯςφܕ͕ඞཁʹͳΔ Լͩͱ͙͢ʹճऩ͞ΕͪΌ͏ͷͰޡΓɿ
 weak var delegates: [Delegate]

  105. ઌ΄Ͳͷίϯςφܕͷܕύϥϝʔλʹ
 EFMFHBUFͷ1SPUPDPMΛೖΕ͍͕ͨɺ
 4XJGUͷ੍໿Ͱ͜Ε͕Ͱ͖ͳ͍ͷͰ
 ۤ͠ฆΕͷ5ZQF&SBTVSF͕ൃੜ

  106. ิ଍ͷ·ͱΊ w %FMFHBUFͰ΋ෳ਺ͷΦϒδΣΫτ͔Β؂ࢹͰ͖Δ w ͨͩ͠ɺ࣮ݱ͢ΔͨΊͷίʔυྔ͸ଟ͘໘౗ w ͓ͱͳ͘͠3Y4XJGUʢ͔ͦΕʹ૬౰͢Δ΋ͷʣΛ
 ࢖͍·͠ΐ͏

  107. ඇಉظͳςετΛ
 ಉظతʹ͢Δύλʔϯ ύλʔϯ

  108. ςετର৅ ʢ࣮ࡍͷ௨৴ͩͱίʔυ௕͍ͷͰ୅༻ʣ ॏෳऔಘΛ๷͙
 ϑϥά͕͋Δ ੒ޭΠϕϯτ͕ྲྀΕΔ ࣦഊΠϕϯτ͕ྲྀΕΔ औಘʹ੒ޭͨ͠Β௨஌ औಘΛ։࢝͢Δؔ਺ จࣈྻΛαʔόʔ͔Βऔಘ͢Δ.PEFM

  109. ςετΛߟ͑ͯΈΔ ·ͣ͸

  110. ରԠ͢Δςετ αʔόʔͱͷ௨৴ޙͷঢ়ଶΛςετ͍͕ͨ͠ɺαʔόʔͱͷ
 ௨৴͸ඇಉظͳͷͰɺඇಉظͳςετʹ͠ͳ͍ͱ͍͚ͳ͍ ͔͠͠ɺඇಉظͳςετ͸ίʔυྔ͕ଟ͘ͳΔͷͰɺ
 ؾ͕ਐ·ͳ͍ʜ

  111. 3Y&WFOU#MPDLFS ͦ͜Ͱ

  112. Πϕϯτͷಉظతͳ
 ଴ͪ߹ΘͤͷͨΊʹ 3Y#MPDLJOHΛ࢖͍·͢ ࠷ॳͷ݁Ռ͕OJMͳͷͰ
 ͦΕΛআ֎ OJMͰͳ͍݁Ռ͕དྷΔ·Ͱ
 $PNQMFUFΛ଴ͭ $PNQMFUFʹͳΔ·Ͱ
 ίʔυͷ࣮ߦΛࢭΊΔ ݁Ռ͕͖ͨΒऔΓग़͢

    ಉظతʹॻ͚ͨʂ मਖ਼ޙͷςετ
  113. ଴ͪ߹Θͤ͢Δίʔυ͸ͪ͝Όͪ͝Ό͢ΔͷͰɺ
 ؔ਺ʹ͘͘Γग़͢ͱՄಡੑͱ࠶ར༻ੑ্͕͕Δ

  114. 3Y&WFOU#MPDLFS w ͲΜͳ࣌ʹ࢖͏͔ɿ w 3YͰදݱ͞ΕͨΠϕϯτ͕ඇಉظͰ
 ςετΛॻ͖ͮΒ͍ͱ͖ w ԿΛ͢Δ͔ɿ w 3Y#MPDLJOHΛ͔ͭͬͯಉظతͳίʔυʹ͢Δ

    w ଴ͪ߹Θͤͷίʔυ͸ؔ਺ʹ·ͱΊΔͱΑ͍
  115. ಺෦ঢ়ଶΛ੍ޚ͢Δ
 ύλʔϯ ύλʔϯ

  116. ςετର৅͸ઌ΄Ͳͱ
 ಉ͡.PEFMΛ࢖͍·͢

  117. ςετର৅ ʢ࣮ࡍͷ௨৴ͩͱίʔυ௕͍ͷͰ୅༻ʣ ॏෳऔಘΛ๷͙
 ϑϥά͕͋Δ ੒ޭΠϕϯτ͕ྲྀΕΔ ࣦഊΠϕϯτ͕ྲྀΕΔ औಘʹ੒ޭͨ͠Β௨஌ औಘΛ։࢝͢Δؔ਺ จࣈྻΛαʔόʔ͔Βऔಘ͢Δ.PEFM

  118. ςετΛߟ͑ͯΈΔ ΋͏Ұ౓

  119. ͜ͷ.PEFMͷ͢΂ͯͷঢ়ଶΛ
 ςετ͢Δ͜ͱʹͨ͠ͱ͠·͢ ͜ͷ.PEFMͷͱΓ͑Δঢ়ଶͬͯɺ
 ͍͍ͬͨͲΕ͘Β͍͋ΔΜͰ͠ΐ͏ʁ

  120. SFTVMU%JE$IBOHFͷ
 ࠷ޙͷ஋ FSSPS%JE$IBOHFͷ
 ࠷ޙͷ஋ JT'FUDIJOH OJM OJM USVF SFTVMU OJM

    USVF OJM FSSPS USVF SFTVMU FSSPS USVF OJM OJM GBMTF SFTVMU OJM GBMTF OJM FSSPS GBMTF OJM FSSPS GBMTF ͋ɺ͋Εʁ͜Μͳʹ͋ΔΜ͚ͩͬʜʁ
  121. ͋Γ͑ͳ͍ঢ়ଶ΋
 ؚ·Ε͍ͯΔؾ͕͢Δʜ ʢঢ়ଶͷݟ௨͕͠ѱ͍ͷͰ֬৴Λ΋ͯͳ͍ʣ

  122. ςετ͔ΒઃܭΛ
 ٯࢉ͢Δ ͦ͏͍͏ͱ͖͸

  123. ঢ়ଶͷҰཡΛఆٛͯ͠ɺ
 Ұݩ؅ཧ͢Ε͹ݟ௨͕͠Αͦ͞͏

  124. 4UBUF.BDIJOF.PEFM ͦ͜Ͱ

  125. ·ͣ.PEFMͷऔΓ͏Δঢ়ଶͷҰཡΛ࡞Δ

  126. ୯ҰͷϑΟʔϧυͰ
 ঢ়ଶΛҰݩ؅ཧ͢Δ ஋͕มΘͬͨΒ
 ௨஌Λͯ͘͠ΕΔ
 3Y4XJGU7BSJBCMF
 Λ࢖͏ͱ୹͘ॻ͚Δ 7BSJBCMFͷมԽ͸
 ϑΟʔϧυΛ௨ͯ͠
 ֎෦͔Β؂ࢹͰ͖Δ ঢ়ଶ͕Ұݩ؅ཧ


    ͞Εͨ͜ͱͰ
 ঢ়ଶભҠͷ༷ࢠ͕
 Α͘Θ͔Δ ઃܭमਖ਼ޙͷຊମίʔυ
  127. ຊମଆͷ४උ׬ྃ ͓ΊͰͱ͏͍͟͝·͢

  128. ঢ়ଶͷҰཡ͕͋ͬͯɺ͞Βʹ
 ঢ়ଶ͕Ұݩ؅ཧ͞Ε͍ͯΕ͹
 ؆୯ʹঢ়ଶભҠਤ͕ॻ͚Δ

  129. .PEFMͷऔΓ͏Δঢ়ଶͷҰཡ͸͜Ε

  130. .fetching .fetched(String) .failed(Error) .notFetchedYet GFUDI GFUDI GFUDI GFUDI

  131. ঢ়ଶભҠਤΛݟΔͱ
 ໼ҹͷ਺͸શ෦Ͱͭ ͦΕͧΕͭͣͭςετ͢Ε͹
 શͯͷঢ়ଶભҠΛݕূͨ͜͠ͱʹͳΔ

  132. 4UBUF.BDIJOF.PEFM w ͲΜͳ࣌ʹ࢖͏͔ɿ w .PEFMͷͱΓ͏Δঢ়ଶͷݟ௨͕͠ѱ͍ͱ͖ w ԿΛ͢Δ͔ɿ w FOVNͰঢ়ଶͷҰཡΛ࡞੒ w

    ୯ҰͷϑΟʔϧυͰঢ়ଶΛ؅ཧ͢Δ w 3Y4XJGU7BSJBCMFΛ࢖͏ͱ୹͘ॻ͚Δ
  133. ܕݕࠪͰςετΛ
 ݮΒ͢ύλʔϯ ύλʔϯ

  134. ςετର৅ EFRVFVF3FVTBCMF$FMM͸ɺ
 SFHJTUFS๨ΕͯΔͱΫϥογϡ͢Δ

  135. ςετΛߟ͑ͯΈΔ ·ͣ͸

  136. Ϋϥογϡ͠ͳ͍͜ͱ
 ͙Β͍͸֬ೝ͍͕ͨ͠ʜ ͍͍ͪͪςετ͢Δͷ΋ʜ

  137. ςετ͠ͳͯ͘΋
 ͍͍ํ๏Λߟ͑Δ ͦ͏͍͏ͱ͖͸

  138. SFHJTUFSͨ͠ূڌΛ
 EFRVFVFؔ਺͕
 ཁٻ͢ΔΑ͏ʹ͢Ε͹
 Αͦ͞͏ͳ༧ײ͕͋Δ

  139. 1SFQSPDFTTPS5PLFO ͦ͏͍͏ͱ͖͸

  140. UPLFO͸֎͔Β
 ࡞Εͳ͍Α͏ʹ
 pMFQSJWBUFͰ੍ݶ ઃܭमਖ਼ޙͷςετର৅ʢ$FMMଆʣ SFHJTUFS͢Δͱূڌͱͯ͠
 UPLFOΛಘΒΕΔΑ͏ʹ͢Δ SFHJTUFSͷϥούʔ
 ؔ਺Λ࡞੒͢Δ

  141. EFRVFVFؔ਺ͷҾ਺ͰɺSFHJTUFSͨ͠
 ূڌͷUPLFOΛཁٻ͢ΔΑ͏ʹ͢Δ UPLFO͸֎͔Β࡞Εͳ͍ͷͰɺઌʹSFHJTUFS
 ͯ͠UPLFOΛಘ͓͔ͯͳ͍ͱϏϧυ͕௨Βͳ͍ SFHJTUFSͯ͋͠Ε͹OJMʹͳΒͳ͍ͱ
 ެࣜυΩϡϝϯτʹॻ͍ͯ͋ΔͷͰ
 ҆৺ͯ͠GPSDFVOXSBQͰ͖Δʂ

  142. 1SFQSPDFTTPS5PLFO w ͲΜͳ࣌ʹ࢖͏͔ɿ w ͋Δॲཧͷલʹඞཁͳલॲཧ͕͋Δͱ͖ w ԿΛ͢Δ͔ɿ w લॲཧΛ࣮ߦ͠ͳ͍ͱಘΒΕͳ͍5PLFOΛ࡞੒ w

    લॲཧ͕ඞཁͳؔ਺Ͱ5PLFOΛཁٻͤ͞Δ
  143. ·ͱΊ w ཧ૝ڷ͸େྔͷ୯ମςετͷதʹ
 ͋Γ·͢ w ୯ମςετ͕؆୯ʹͳΔͭͷ
 σβΠϯύλʔϯΛ঺հ͠·ͨ͠ w ίʔυΛॻ͘ͱ͖͸ςετ͕
 Ͳ͏ͳΔ͔Λҙࣝ͠·͠ΐ͏

  144. એ఻ w ൃදऀͷۈΊΔNJYJ(3061Ͱ͸
 J04ΤϯδχΞΛืू͍ͯ͠·͢ʂ w ͝ڵຯ͋Δํ͸!PSHB@DIFN·Ͱ
 %JSFDU.FTTBHFΛ͓ئ͍͠·͢ʂ