ä»æ¥ã®èšäºã§ã¯ãSwiftã®ããã©ãŒãã³ã¹ãšã¢ã¯ã»ã¹å¶åŸ¡ãSwiftã«äžãã圱é¿ã«ã€ããŠèª¬æããŸãã ã¢ã¯ã»ã¹å¶åŸ¡ã¯ãåå¿è ã®éçºè ãèŠèœãšããã¡ãªã¡ã«ããºã ã§ãã ãã®èšäºã®ç®çã¯ãäœæããã³ãŒããçèããããšã®éèŠæ§ãšãã³ãŒãã®åè¡ãå šäœåã«ã©ã®ããã«é©åãããã瀺ãããšã§ãã
ã¢ã¯ã»ã¹å¶åŸ¡ã«ã€ããŠå°ã
Swiftã®ã¢ã¯ã»ã¹å¶åŸ¡ã¯ç°¡åã«ç¿åŸã§ããŸãã ã¢ã¯ã»ã¹ã¬ãã«ãšãã®å®çŸ©ã¯è¿å¹Žå°ãå€æŽãããŠãããçŸåšãSwiftã«ã¯ä¿¡é Œã§ããã¢ã¯ã»ã¹å¶åŸ¡ãœãªã¥ãŒã·ã§ã³ããããŸãã
Objective-Cã䜿çšããå Žåãã¢ã¯ã»ã¹å¶åŸ¡ã®å©ç¹ãç解ãããŸã§ã«æéããããå ŽåããããŸãã ã¢ã¯ã»ã¹ã¬ãã«ã®å¹æçãªäœ¿çšã¯ãåå¿è ã®éçºè ãšçµéšè±å¯ãªéçºè ãåºå¥ããæŠå¿µã®1ã€ã§ãã ããããªããããªã®ãããèŠãããŸãããã
ã¢ã¯ã»ã¹ã¬ãã«ã®å®çŸ©ä»¥äžã®ãã®
èªåã§äœæ¥ããå Žåãå°ããªããŒã ã§äœæ¥ããå Žåãã¢ã¯ã»ã¹å¶åŸ¡ã¯ããŸã圹ã«ç«ããªããããããŸããã ä»ã®ãœãããŠã§ã¢ãããžã§ã¯ãã«çµ±åããããã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªããŸãã¯SDKãéçºããŠããå Žåãã¢ã¯ã»ã¹å¶åŸ¡ãæ¬åœã«åœ¹ç«ã€ããšã¯äºå®ã§ãã ãã ãããµãŒãããŒãã£ã«ããé åžããã³äœ¿çšã®ããã«ãœãŒã¹ã³ãŒãããŒã¹ã§äœæ¥ããŠããå Žåã«ã®ã¿ãã¢ã¯ã»ã¹å¶åŸ¡ãæçšãŸãã¯å¿ èŠã§ãããšèããå Žåã¯ãééãã§ãã
ã¢ã¯ã»ã¹å¶åŸ¡ã«ã¯å€ãã®å©ç¹ãããããã®ãã¡ã®ããã€ãã¯èŠèœãšããã¡ã§ãã é©åãªã¢ã¯ã»ã¹å¶åŸ¡ã®æãããªå©ç¹ã¯éä¿¡ã§ãã privateããŒã¯ãŒããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã¡ãœããã«ä»å ããããšã«ãããã€ã³ã¹ã¿ã³ã¹ã¡ãœããããµãã¯ã©ã¹ã«ãã£ãŠãªãŒããŒã©ã€ããããã¹ãã§ã¯ãªãããšãæé»çã«å ±åããŸãã æ éã«éžæããã1ã€ã®ããŒã¯ãŒãã䜿çšããŠãã³ãŒãã¯ããèªäœãè¡šããŠããŸãã åéçºè ã¯ããã©ã€ããŒããšå®£èšãããŠããå Žåã«ã€ã³ã¹ã¿ã³ã¹ã¡ãœããããªãŒããŒã©ã€ãã§ããªãçç±ãç解ããŠããŸãã
Swiftã®ããã©ãŒãã³ã¹ã®æ¹å
ãã ããã¢ã¯ã»ã¹å¶åŸ¡ã«ã¯ãå€ãã®æ°ããSwiftéçºè ãæ°ä»ããŠããªãå¯äœçšããããŸãã ã³ã³ãã€ã©ã¯ãã³ãŒãã®ããã©ãŒãã³ã¹ãæé©åããããã«äœ¿çšããã¢ã¯ã»ã¹ã¬ãã«ããã§ãã¯ããããšããåç¥ã§ããïŒ ãããä»æ¥ã話ããããããšã§ãã
ã¢ã¯ã»ã¹å¶åŸ¡ãããå¹ççãªãœãããŠã§ã¢ã«ã©ã®ããã«ã€ãªããããç解ããããã«ãSwiftãžã®ã¡ãœããã®éä¿¡ã«ã€ããŠèª¬æããå¿ èŠããããŸãã å¿é ããªãã§ã åºæ¬ã®ã¿ãèæ ®ããŸãã ããã¯ã«ãŒãããã®æè¡çãªéžè±ã«ãããŸããããèå³æ·±ããã®ã«ãªãããšããçŽæããŸãã
ã¡ãœãããã£ã¹ããããšã¯
ãªããžã§ã¯ãã®ã¡ãœãããåŒã³åºããããã®ããããã£ã®1ã€ã«ã¢ã¯ã»ã¹ãããšããã®ãªããžã§ã¯ãã«ã¡ãã»ãŒãžãéä¿¡ãããŸãã ã©ã³ã¿ã€ã ã¯ãã¡ãã»ãŒãžã«äžèŽããã¡ãœãããå€å¥ããå¿ èŠããããŸãã ãã®äŸãèŠãŠãã ããã
window.makeKeyAndVisible()
UIWindowã®ã€ã³ã¹ã¿ã³ã¹ã§ãããŠã£ã³ããŠãªããžã§ã¯ãã§makeKeyAndVisibleïŒïŒã¡ãœãããåŒã³åºããŸãã å®è¡æã«ãã¡ãã»ãŒãžã¯ãŠã£ã³ããŠãªããžã§ã¯ãã«éä¿¡ãããŸãã ã¡ãã»ãŒãžã«å¯ŸããŠã©ã®ã¡ãœãããåŒã³åºãå¿ èŠããããã¯æãããªããã«æãããããããŸããããåžžã«ããã§ãããšã¯éããŸããã
makeKeyAndVisibleïŒïŒã¡ãœããã眮ãæããUIWindowã®ãµãã¯ã©ã¹ãæ±ã£ãŠããå Žåã¯ã©ããªããŸããïŒ ã©ã³ã¿ã€ã ã¯ããµãã¯ã©ã¹ãŸãã¯ã¹ãŒããŒã¯ã©ã¹ã§makeKeyAndVisibleïŒïŒã¡ãœãããåŒã³åºããã©ããã決å®ããå¿ èŠããããŸãã
ã¡ãœãããã£ã¹ãããã¯ãç¹å®ã®ã¡ãã»ãŒãžã«å¯ŸããŠåŒã³åºãããã¡ãœããã決å®ããããã«ã©ã³ã¿ã€ã ã䜿çšããäžé£ã®ã«ãŒã«ã§ãã Swiftã¯ãçŽæ¥ãã£ã¹ããããããŒãã«ãã£ã¹ããããã¡ãã»ãŒãžãã£ã¹ãããã®3ã€ã®ã¿ã€ãã«äŸåããŠããŸãã çŽæ¥éä¿¡ã¯éçéä¿¡ãšãåŒã°ããŸãã ã¡ãã»ãŒãžãšããŒãã«ã®éä¿¡ã¯ãåçéä¿¡ã®äžçš®ã§ãã
ãã€ãããã¯ãã£ã¹ããã
ã¡ãã»ãŒãžé ä¿¡ã¯ãObjective-Cããã³Objective-Cã©ã³ã¿ã€ã ã®æš©éã§ãã éä¿¡ãããåã¡ãã»ãŒãžã¯åçã«éä¿¡ãããŸãã ããã¯ã©ãããæå³ã§ããïŒ Objective-Cã©ã³ã¿ã€ã ã¯ãå®è¡æã«ã¡ãã»ãŒãžã«å¯ŸããŠåŒã³åºãã¡ãœããã瀺ããã¯ã©ã¹éå±€ããã§ãã¯ããŸãã ãã®ãããObjective-Cã¯éåžžã«åçãªèšèªã§ãã Objective-Cã®ãã€ãããºã ã¯ã Key-Value Observingãåäœã¢ãã«ãå«ãããã€ãã®Cocoaæ©èœã®èœåã§ããããŸãã
åçãã£ã¹ãããã«ã¯1ã€ã®éèŠãªæ¬ ç¹ããããŸãã ã©ã³ã¿ã€ã ã¯ã¡ãã»ãŒãžã«å¯ŸããŠã©ã®ã¡ãœãããåŒã³åºããã決å®ããå¿ èŠããããããåçãã£ã¹ãããèªäœã¯çŽæ¥ãã£ã¹ãããã«æ¯ã¹ãŠé ããªããŸãã ã€ãŸããåçãã£ã¹ãããã«ã¯ãªãŒããŒããããã»ãšãã©ãããŸããã
éçãã£ã¹ããã
çŽæ¥ãã£ã¹ããããšãåŒã°ããéçãã£ã¹ãããã¯ãç¬èªã®éãããããŸãã ã³ã³ãã€ã©ãŒã¯ãã³ã³ãã€ã«æã«ã¡ãã»ãŒãžãåŒã³åºãã¡ãœããã決å®ã§ããŸãã ååã瀺ãããã«ãããã¯åçãªæåºã§ã¯ãããŸããã æè»æ§ãšãã€ãããºã ã§å€±ããããã®ã¯ãçç£æ§ã§éæãããŸãã
ã©ã³ã¿ã€ã ã¯ãå®è¡æã«åŒã³åºãã¡ãœããã決å®ããå¿ èŠã¯ãããŸããã çŽæ¥éä¿¡ã䜿çšããå Žåãåçéä¿¡ã«é¢é£ããããããªããã©ãŒãã³ã¹ã¯ãŸã£ããå©çšã§ããŸããã
ããã©ãŒãã³ã¹ã®æé©å
ã¡ãœããã®ãã£ã¹ãããã®è©³çŽ°ã¯æãäžããŸããããèŠããŠããå¿ èŠããããŸããéçãã£ã¹ãããã¯åçãã£ã¹ããããããå¹ççã§ãã ããã©ãŒãã³ã¹ãåäžãããããã«ãã³ã³ãã€ã©ã®ã¿ã¹ã¯ã¯ãã¡ãœããã®åŒã³åºããå¯èœãªéãåçãã£ã¹ãããããéçãã£ã¹ãããã«ææ Œãããããšã§ãã
ã¢ã¯ã»ã¹å¶åŸ¡ã«ããæé©å
Objective-Cã¯ã¡ãã»ãŒãžã®éä¿¡ã®ã¿ã«äŸåããŠããŸãããSwiftã¯çŽæ¥ã衚圢åŒãããã³ã¡ãã»ãŒãžéä¿¡ã®çµã¿åããã䜿çšããŸãã Swiftã¯éçéä¿¡ã奜ã¿ãŸãã è°è«ã«éäžããããã«ããã®èšäºã®æ®ãã®éšåã§éçããã³åçãªãã£ã¹ãããã«æ³šç®ããŸãã
ç¶æ¿ã¯åŒ·åãªãã©ãã€ã ã§ãããåæã«ãã³ã³ãã€ã©ãŒãã¡ãœããã®åŒã³åºãæ¹æ³ãæ£ç¢ºã«å€æããããšãããå°é£ã«ãªããŸãã ãã®äŸãèŠãŠãã ããã
import UIKit class ViewController: UIViewController { // MARK: - View Life Cycle override func viewDidLoad() { super.viewDidLoad() // Fetch Notes fetchNotes() } // MARK: - Helper Methods func fetchNotes() { ... } }
ViewControllerã¯ã©ã¹ã¯fetchNotesïŒïŒã¡ãœãããå®çŸ©ããŸãã ã¡ãœãããšããããã£ã¯ããã©ã«ãã§å éšã§å®£èšãããŠããããšããåç¥ã§ããããã€ãŸããåãã¢ãžã¥ãŒã«ã§å®çŸ©ãããŠããä»ã®ãªããžã§ã¯ããã¡ãœãããŸãã¯ããããã£ã䜿çšã§ããããšãæå³ããŸãã fetchNotesïŒïŒãinternalãšããŠå®£èšããã ãã§ååã§ããïŒ ããã«ã¯ç¹å®ã®äŸåé¢ä¿ããããŸãã
å éšããŒã¯ãŒããfetchNotesïŒïŒã¡ãœããã«ãã€ã³ãããããã ViewControllerã®ãµãã¯ã©ã¹ã¯fetchNotesïŒïŒã¡ãœããããªãŒããŒã©ã€ãã§ããŸãã ãã®çµæã fetchNotesïŒïŒã¡ãœãããåŒã³åºããããšãã«ãã³ã³ãã€ã©ã¯å®è¡ããå®è£ ã決å®ã§ããŸããã ã©ã³ã¿ã€ã ã§ã¯ã fetchNotesïŒïŒã¡ãœãããžã®åŒã³åºããåçã«éä¿¡ããå¿ èŠããããŸã
æžããã³ãŒãã®åæ
çµéšè±å¯ãªéçºè ãäœæããã³ãŒããèŠããšãäœæ¥äžã®ãããžã§ã¯ãã«ã©ã®ããã«é©åããããåæããŸãã ã¡ãœããã®å®è£ ã¯ããœãªã¥ãŒã·ã§ã³ã®äžéšã«ãããŸããã ViewControllerã®ãµãã¯ã©ã¹ã¯fetchNotes ïŒïŒã¡ãœããããªãŒããŒã©ã€ãããå¿ èŠããããŸããïŒ çãããããã®å ŽåãããŒã¯ãŒãprivateãŸãã¯fileprivateãæ·»ä»ããå¿ èŠããããŸãã ããã¯ãã¢ã¯ã»ã¹å¶åŸ¡ã®ã³ã³ããã¹ãã§æå³ãããã ãã§ãªããçç£æ§ãåäžãããŸãã ããã¯ãªãã§ããïŒ
ã³ã³ãã€ã©ãŒã¯ã fetchNotesïŒïŒã¡ãœããããã§ãã¯ãããšã privateãšããŠå®£èšãããŠããããšãèªèããŸããããã¯ããã®ã¡ãœããããµãã¯ã©ã¹ã§ãªãŒããŒã©ã€ãã§ããªãããšãæå³ããŸãã ã³ã³ãã€ã©ã¯ãã®ãã³ããååŸããã¡ãœãã宣èšã«finalãå®å šã«åºåããŸãã finalããŒã¯ãŒããã¡ãœãã宣èšã«ä»å ããããã³ã«ãåçã¡ãœããã®ä»£ããã«ãã®ã¡ãœããã®åŒã³åºããéçã«éä¿¡ã§ãããããããã©ãŒãã³ã¹ããããã«åäžããŸãã
å®å šãªã¢ãžã¥ãŒã«æé©å
ãã®èšäºã¯ãã¢ãžã¥ãŒã«å šäœã®æé©åã«ã€ããŠèšåããã«ã¯å®äºããŸããã Swiftã³ã³ãã€ã©ãŒã¯ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®é©ãã¹ãåµé ç©ã§ãããç¥ããªãå€ãã®çŽ æŽãããæ©èœãåããŠããŸãã ãããã®åªããæ©èœã®1ã€ã¯ãã¢ãžã¥ãŒã«å šäœã®æé©åã§ãã
ãããã°ãã«ãã§ã¯ãã¢ãžã¥ãŒã«ã®æé©åã¯ããã©ã«ãã§ç¡å¹ã«ãªã£ãŠããŸãã ããã¯ã³ã³ãã€ã«æéã®ççž®ã«ã€ãªãããŸãããä¿åæéã®ä»£äŸ¡ãæ¯æããŸãã ã¢ãžã¥ãŒã«å šäœãæé©åããªããšããããžã§ã¯ãã®åãã¡ã€ã«ã¯ããœãŒã¹ã³ãŒãããŒã¿ããŒã¹ã®æ®ããèæ ®ããã«åå¥ã«ã³ã³ãã€ã«ãããŸãã ããã¯éçºäžã«é©ããŠããŸãã
ãã ããããã«é åžããããã«ãããžã§ã¯ããäœæããå Žåãã¢ãžã¥ãŒã«å šäœã®æé©åã«ãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åã§ããŸãã ã³ã³ãã€ã©ã¯ãåãã¡ã€ã«ãåå¥ã«åŠçããªããªããŸããã 圌ã¯ããªãã®ãããžã§ã¯ãã§ããããºã«ãäœæããŸãã ããã¯äœãæå³ãããªãéèŠãªã®ã§ããïŒ
åã«ç€ºããã³ãŒãã¹ãããããããäžåºŠèŠãŠã¿ãŸãããã fetchNotesïŒïŒã®åŒã³åºã㯠ãå®è¡æã«åçã«ãã£ã¹ããããããããšã«æ³šæããŠãã ããã ã¢ãžã¥ãŒã«å šäœã®æé©åãæå¹ã«ãªã£ãŠããå Žåãããã¯ããã§ã¯ãããŸããã ã³ã³ãã€ã©ãã¢ãžã¥ãŒã«å šäœããããžã§ã¯ãããã§ãã¯ããåãã¡ã€ã«ã倧ããªç»åã«ã©ã®ããã«åãŸãããå€æãããšã fetchNotesïŒïŒã¡ãœããããªãŒããŒã©ã€ãããViewControllerã®ãµãã¯ã©ã¹ãååšããªãããšãæ€åºããŸãã ããã¯ãã³ã³ãã€ã©ãfetchNotesïŒïŒã¡ãœããã®å®£èšã«ã€ããŠfinalãæšæž¬ã§ããããšãæå³ããŸãã
finalããŒã¯ãŒãã¯ãã¡ãœãããŸãã¯ããããã£ããµãã¯ã©ã¹ã§ãªãŒããŒã©ã€ãã§ããªãããšãæå³ããŸãã å ã»ã©èŠãçµæã fetchNotesïŒïŒã privateãšããŠå®£èšãããŠããªããŠãã fetchNotesïŒïŒã®åŒã³åºãã¯éçãªæ¹æ³ã§éä¿¡ã§ããŸãã ã¹ããŒãã³ã³ãã€ã©ã ãããããªãïŒ
ãã¬ãŒãã³ã°ãç¶ç¶ããŸãã
æè²ã«æè³ããããšãããã«éèŠã§ãããã匷調ããªãããéçºè ã®éçºã«ã€ããŠããæžããŸãã Swiftèšèªã®è©³çŽ°ãåŠã¶ããšã¯ãéçºè ãšããŠç§ãå€ããŸããã ä»æ¥ç§ãæžããã³ãŒãã¯ã1幎åã«æžããã³ãŒããšã¯ç°ãªããŸãã
ã¡ãœããã®éä¿¡ã¯æå 端ã®ãããã¯ã®ããã«æãããããããŸããããèªååç §ã«ãŠã³ããŸãã¯ãããã³ã«æåããã°ã©ãã³ã°ã«ã€ããŠåŠã¶ããšãšåããããéèŠã ãšæããŸãã Swiftã¯ç°¡åã«ææ¡ã§ããŸãã åªããããããããŒã«ãªãããšãçå£ã«èããŠããå Žåã¯ãåŠç¿ãç¶ããŠèŠéãåºããããšãéèŠã§ãã