1. Objective-Cãšã¯
Objective-Cã¯ã1980幎代ã«Brad J. CoxãšTom Loveã«ãã£ãŠéçºãããåçãªããžã§ã¯ãæåããã°ã©ãã³ã°èšèªã§ããCèšèªäžã«Smalltalk颚ã®ã¡ãã»ãŒãžããã·ã³ã°æ©èœãè¿œå ããæ©èœãç¹åŸŽçã§ããç¹ã«iOSã®éçºã§äœ¿ãããããšãå€ãèšèªã§ãAppleã®Mac OS Xããã³iOSãªã©ã«äœ¿ãããŠããŸãã
Objective-Cã¯ãCèšèªå šäœãæ¡åŒµããå€ãã®ããã°ã©ãã³ã°ãã©ãã€ã ããµããŒãããããšã®ã§ãã匷åãªèšèªã§ããç¹ã«ããªããžã§ã¯ãæåããã°ã©ãã³ã°ã«ãããã¯ã©ã¹ãšã€ã³ã¹ã¿ã³ã¹ã®æŠå¿µãCèšèªã®äžã«è¿œå ããããšããããããã®èŠ³å¿µãç解ããããèšèªãšãããŠããŸãã
ãããããã®äžæ¹ã§ãCãšã®äºææ§ãã¡ãã»ãŒãžããã·ã³ã°ã®ããã®ç¹æ®æ§æã®ããã«åŠç¿æ²ç·ãæ¥ãªããšãç¹åŸŽã§ãããã®ãããObjective-Cãçç·Žããããã«ã¯ãé«åºŠãªããã°ã©ãã³ã°ã¹ãã«ãšãããè£å®ããçè«çç¥èãå¿ èŠãšãªããŸãã
1.1 Objective-Cã®ç¹åŸŽãšæŽå²
Objective-Cã®æãé¡èãªç¹åŸŽã¯ãCèšèªã«çŽæ¥ãªããžã§ã¯ãæåæ©èœãè¿œå ããããšã§ãCãšã®çŽæ¥çãªäºææ§ãä¿ã£ãŠãããšããç¹ã§ããããã«ãã¡ãã»ãŒãžããã·ã³ã°ãšããSmalltalkã«ç±æ¥ããæŠå¿µãåãå ¥ããŠããŸãããã®ã¡ãã»ãŒãžããã·ã³ã°ã¯ãäžè¬çãªã¡ãœããåŒã³åºããšã¯ç°ãªããåŒã³åºãå ãšå®äœã®éã«ããé«ãæè»æ§ãæäŸããŸãã
Objective-Cã¯1983幎ã«Stepstone瀟ã«ãã£ãŠå ¬éããããã®åŸNeXTãšå ±ã«Mac OS XãšiOSã®éçºèšèªãšããŠåºãæ¡çšãããŸããããã®çµæãApple補åã®éçºãšãããããã€ãã£ãã¢ããªã±ãŒã·ã§ã³éçºèšèªãšããŠObjective-Cãæ¡çšããã®ãäžè¬çã«ãªããŸããã
Objective-Cã¯é·ãéAppleã®äž»èŠãªéçºèšèªã§ããããè¿å¹Žã§ã¯æ°ããªèšèªSwiftã®æ®åã«äŒŽãããã®å°äœãå°ããã€è²ãã€ã€ãããŸããããããæ¢åã®å€ãã®ã³ãŒãã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãObjective-Cã§æžãããŠãããããæªã ã«ãã®éèŠã¯é«ããããŸãã
1.2 Objective-Cã®åºæ¬çãªæ§æ
Objective-Cã¯CèšèªãããŒã¹ã«ããŠããããããã®åºæ¬æ§æã¯Cèšèªãšå ±éããŸãããããããã®äžã«ãªããžã§ã¯ãæåæ©èœãšã¡ãã»ãŒãžããã·ã³ã°ãè¿œå ããŠããããããããã®æ§æã«ã€ããŠç解ããå¿ èŠããããŸãã
ç¹ã«éèŠãªã®ã¯ããã¡ãã»ãŒãžéä¿¡ãã®æŠå¿µã§ããããã¯ã[receiver message]ãšãã圢åŒã§è¡šãããreceiverãmessageãåãåã£ãŠããã«å¯Ÿå¿ããåŠçãè¡ããŸããã¡ãã»ãŒãžéä¿¡ã¯å®è¡æã«è§£æ±ºãããããã倧ããªæè»æ§ãæã¡ãŸãããããã«ãã远跡ããããã°ãé£ãããªããšããåé¡ããããŸãã
ãŸãããªããžã§ã¯ãæåã®ç¹åŸŽã§ãããã¯ã©ã¹ãã®å®çŸ©ãå¿ èŠã§ããObjective-Cã§ã¯ã@interfaceãš@endã®éã«ã¯ã©ã¹ã®å®£èšãè¡ãã@implementationãš@endã®éã«ã¡ãœããã®å®è£ ãè¡ããŸããããã«ããããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®ç¹åŸŽã§ãããã«ãã»ã«åãããç¶æ¿ãããå€æ æ§ããå®çŸãããŸãã
1.3 Objective-Cã®çšé
Objective-Cã¯äž»ã«Appleã®éçºãšã³ã·ã¹ãã ã§äœ¿ãããŠããŸããMac OS XãiOSã®ã¢ããªã±ãŒã·ã§ã³äœæã«çšããããä»ããã®ã·ã¹ãã éã®äºææ§ã®é«ãããããããã¯ãŒã¯æ¥ç¶ã䌎ãWebãµãŒãã¹ãã¯ã©ãŠãããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³éçºçã«ãæ¡çšãããŠããŸãã
ãŸããã¢ãã¡ãŒã·ã§ã³ãã°ã©ãã£ãã¯æç»ãªã©ã®é«åºŠãªã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ãŒã¹ïŒGUIïŒãæã€ã¢ããªã±ãŒã·ã§ã³éçºã«ãããŠããCèšèªãšã¡ãã»ãŒãžããã·ã³ã°ãèåãããã®èšèªã®æè»æ§ã¯éåžžã«åœ¹ç«ã¡ãŸãããã®çµæãå€ãã®ã²ãŒã ã¢ããªããã¶ã€ã³éèŠã®ã¢ããªã±ãŒã·ã§ã³ãObjective-Cã§éçºãããŠããŸãã
æŽã«ãæ¢åã®å€æ°ã®ã³ãŒãã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãObjective-Cã§æžãããŠããããšããããããã®åå©çšãæ¡åŒµãäºææ§ãéèŠããããããžã§ã¯ãã«ãããŠãåŒãç¶ãçšããããŠããŸãã
1.4 ã€ã³ã¹ããŒã«ãšéçºç°å¢èšå®
Objective-Cã®éçºã«ã¯ãMac OS Xã«æšæºã§ã€ã³ã¹ããŒã«å¯èœãªãXcodeããšããçµ±åéçºç°å¢ïŒIDEïŒãäž»ã«äœ¿ãããŸããããã¯Appleå ¬åŒã®éçºããŒã«ã§ãObjective-Cã®ã³ã³ãã€ã©ãã©ã€ãã©ãªãžã®ã¢ã¯ã»ã¹ããããã°ããŒã«ãªã©ãéçºã«å¿ èŠãªå šãŠã®èŠçŽ ãæäŸããŸãã
Xcodeã®ææ°çã¯ãAppleã®å ¬åŒWebãµã€ããMac App Storeããç¡æã§ããŠã³ããŒãã§ããŸããããŠã³ããŒãããåŸã¯ãéåžžã®ã¢ããªã±ãŒã·ã§ã³ãšåãããã«ã€ã³ã¹ããŒã«ã§ããŸãããŸããXcodeã«å«ãŸãã”Command Line Tools”ãã€ã³ã¹ããŒã«ããããšã§ãã¿ãŒããã«ãããObjective-Cã®ã³ã³ãã€ã©ããªã³ã«ãŒãå©çšããããšãå¯èœã§ãã
éçºç°å¢ãæŽããããXcodeã®ãNew Projectããéžæãããããžã§ã¯ããäœæããŸãããããžã§ã¯ããäœæããããäœæãããœãŒã¹ã³ãŒãããã«ãããã¿ãŒããã«ãŸãã¯ã·ãã¥ã¬ãŒã¿ãçšããŠå®è¡ã»ãããã°ããããšãã§ããŸãããŸããXcodeã¯é«åºŠãªãœãŒã¹ã³ãŒããšãã£ã¿ãæäŸããŠãããã³ãŒãè£å®ããªãã¡ã¯ã¿ãªã³ã°æ¯æŽãæ§æãã§ãã¯ãªã©ãObjective-Cã®éçºãæ¯æŽããè±å¯ãªæ©èœãåããŠããŸãã
2. Objective-Cã®ã©ã€ãã©ãªãšã¯
ã©ã€ãã©ãªããœãããŠã§ã¢éçºã«ãããéèŠãªã³ã³ããŒãã³ãã§ããããšãç解ããããã«ããŸãã¯ãã®åºæ¬çãªå®çŸ©ãšç®çãæ確ã«ç解ããŸãããã
2.1 ã©ã€ãã©ãªã®æå³ãšåœ¹å²
ã©ã€ãã©ãªã¯ããœãŒã¹ã³ãŒãã®äžçã§äœ¿ãåãããšã®ã§ããã¢ãžã¥ãŒã«ã®éãŸãã§ããããã°ã©ããŒããŒããããã¹ãŠãæžãå¿ èŠã¯ãªããã©ã€ãã©ãªãå©çšããããšã§çç£æ§ãé«ããããšãã§ããŸããäŸãã°ãç»ååŠçãããŒã¿åæãªã©ã®ç¹å®ã®ã¿ã¹ã¯ãå®è¡ããããã®é¢æ°çŸ€ãå«ãã§ããã©ã€ãã©ãªãååšããŸãã
ãŸããã©ã€ãã©ãªã¯åå©çšãšä¿å®æ§ãä¿é²ããŸããæ¢åã®ã©ã€ãã©ãªã䜿çšããããšã§ãããã°ã©ããŒã¯æ°ãã«åæ§ã®é¢æ°ãæžãå¿ èŠããªããããã«ããéçºæéãççž®ãããŸãã
2.2 Objective-Cã®ããã©ã«ãã©ã€ãã©ãª
Objective-Cã«ã¯ããã©ã«ãã§å€æ°ã®ã©ã€ãã©ãªãæ·»ä»ãããŠããŸãããããã«ã¯ããã¡ã€ã«I/Oããããã¯ãŒãã³ã°ãããŒã¿æ§é ãã°ã©ãã£ãã¯ã¹ããããŠãŠãŒã¶ã€ã³ã¿ãŒãã§ã€ã¹ãªã©ãããããåžžèçãªã¿ã¹ã¯ãåŠçããããã®ã©ã€ãã©ãªãå«ãŸããŠããŸãã
Objective-Cã®ããã©ã«ãã©ã€ãã©ãªãå©çšããããšã§ãé¢é£ããæ©èœçŸ€ãåäžã®åå空éäžã§ãŸãšããããšãã§ããã³ãŒãã®æŽçãšåå©çšæ§ãåäžãããããšãå¯èœã«ãªããŸãã
2.3 ã©ã€ãã©ãªã®åãæ±ã
ã©ã€ãã©ãªã®åãæ±ãã«ã¯ç¹å¥ãªæèœãå¿ èŠã§ããObjective-Cã®ã©ã€ãã©ãªãå©çšããããã«ã¯ããã®ã€ã³ããŒãããªã³ã¯ããããŠäœ¿çšãšããã¹ããããèžãå¿ èŠããããŸãã
é©åãªã©ã€ãã©ãªã®äœ¿çšæ³ãç¿åŸããããšã§ãéçºè ã¯ããŸããŸãªæ©èœãæ軜ã«å®è£ ããããšãã§ããŸãããŸããã©ã€ãã©ãªã¯éåžžã詳现ãªããã¥ã¡ã³ããŒã·ã§ã³ãšå ±ã«æäŸããããããéçºè ã¯å¿ èŠãªæ å ±ãããã«èŠã€ããããšãå¯èœã§ãã
2.4 ã©ã€ãã©ãªã®æŽæ°ãšããŒãžã§ã³ç®¡ç
ã©ã€ãã©ãªã¯å®æçã«æŽæ°ãããæ°æ©èœãè¿œå ãããããæ¢åã®ãã°ãä¿®æ£ããããããŸããããã«ãããéçºè ã¯ææ°ã®ãã¯ãããžãŒãšæé©åãããã³ãŒããå©çšã§ããŸãã
ããããã©ã€ãã©ãªã®ããŒãžã§ã³ç®¡çã¯äžå®ã®æ³šæãå¿ èŠã§ããæ°ããããŒãžã§ã³ã®ã©ã€ãã©ãªãäžäœäºææ§ãä¿èšŒããªãå Žåãã¢ããªã±ãŒã·ã§ã³ã®åäœã«åœ±é¿ãåãŒãå¯èœæ§ããããŸãã
äžè¬çã«ãåã©ã€ãã©ãªã¯ããŒãžã§ã³ç®¡çããŒã«ãšå ±ã«æäŸãããéçºè ã¯ããã䜿çšããŠã©ã€ãã©ãªã®æŽæ°ã容æã«è¡ãããšãå¯èœã§ãã
3. 人æ°ã®Objective-Cã®ã©ã€ãã©ãª
Objective-Cã¯ãiOSã¢ããªéçºãMac OS Xã®ã·ã¹ãã éçºã«åºãå©çšãããŠããèšèªã§ãããã®åŒ·åãªæ©èœæ§ãããäžå±€åŒãç«ãŠããã®ãšããŠãå€çš®å€æ§ãªã©ã€ãã©ãªãå©çšã§ããŸããããã§ã¯ãObjective-Cã®éçºãæå©ãããããã®äººæ°ã©ã€ãã©ãªãããã€ã玹ä»ããŸãã
éçºè ãã¡ã¯é »ç¹ã«ãæ°ããã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãå©çšããããšã§ãããå¹æçãªã³ãŒãã£ã³ã°ãè¡ããŸãããããããã®éžæã¯æã«é£ãããã®ãšãªããŸãã
ä»åã¯ããã®æå©ããšãªããããæ©èœããšã«åããŠãç¹ã«äººæ°ã®Objective-Cã©ã€ãã©ãªãããã¯ã¢ããããŸããã
3.1 ã©ã€ãã©ãªéžã³ã®ãã€ã³ã
Objective-Cã®ã©ã€ãã©ãªéžã³ã®ãã€ã³ãã¯ããªãã®ãããžã§ã¯ããå¿ èŠãšããæ©èœãšãã©ã€ãã©ãªã®ã¡ã³ããã³ã¹ç¶æ³ãããã«ã¯ãã®ããã¥ã¡ã³ããŒã·ã§ã³ã®å å®åºŠã§ãã
å¿ èŠãªæ©èœãè£ãããã¯ãã¡ããéèŠã§ãããããã ãã§ã¯ãªãæŽæ°ãç¶ããããŠããããååãªæ å ±ãåŸãããããéèŠãªæ±ºå®åºæºã«ãªããŸãããã®ãããã©ã€ãã©ãªã®GitHubãªã©ã§ã®ã¹ã¿ãŒæ°ããã©ãŒã¯æ°ãæè¿ã®ã³ãããå±¥æŽçã確èªããŠãããŸãããã
ãŸããåé¡ãèµ·ãããšãã«ããã«å¯Ÿå¿ã§ãããã©ãããéèŠã§ãããã®ããã掻çºãªã³ãã¥ããã£ã§ãµããŒããããŠããã©ã€ãã©ãªãéžã¶ã®ãããããã§ãã
3.2 ã¢ããªéçºã«ããããã®ã©ã€ãã©ãª
ãŸãã¯ãã¢ããªéçºããµããŒãããç®çã§äœããããObjective-Cã®ã©ã€ãã©ãªããã玹ä»ããŸãã代衚çãªãã®ã«ã¯ãAFNetworkingãããRealmãããMantleããªã©ããããŸãã
ãAFNetworkingãã¯ããããã¯ãŒã¯å±€ã管çããããã®åŒ·åãªã©ã€ãã©ãªã§ãHTTPãªã¯ãšã¹ããç»åã®éåæããŠã³ããŒããªã©ãç°¡åã«è¡ãããšãã§ããŸãã
ãRealmãã¯ãããŒã¿ããŒã¹æäœãç°¡åã«ããã©ã€ãã©ãªã§ãSQLãçšããã«é«éã§æäœãå®è¡ããããšãå¯èœã§ããäžæ¹ããMantleãã¯ãè€éãªããŒã¿ã¢ãã«ãã·ã³ãã«ã«æ±ãããã®ã©ã€ãã©ãªã§ãJSONããã¢ãã«ãžã®å€æãªã©ããµããŒãããŠããŸãã
3.3 ãã¹ãã«åœ¹ç«ã€ã©ã€ãã©ãª
次ã«ããã¹ããå¹çåãããã©ã€ãã©ãªã«ã€ããŠèŠãŠãããŸãããããã¹ãã³ãŒããäœæããããããããã«ã¯ãOCMockãããSpectaããªã©ããããŸãã
ãOCMockãã¯ãã¢ãã¯ãªããžã§ã¯ããçæããæ¹æ³ã®åŒã³åºããã¹ã¿ãåããããæ€èšŒãããããããã®ã©ã€ãã©ãªã§ããäžæ¹ããSpectaãã¯ãBDD(æ¯ãèãé§åéçº)ã¹ã¿ã€ã«ã®ãã¹ããã¬ãŒã ã¯ãŒã¯ãæäŸããã·ã³ãã«ãªã·ã³ã¿ãã¯ã¹ã§ãã¹ãã±ãŒã¹ãèšè¿°ã§ããŸãã
ãããã®ã©ã€ãã©ãªãçšããããšã§ããã¹ãäœæã®åŽåãåæžããå質ã®ä¿èšŒãè¡ãããšã容æã«ãªããŸãã
3.4 ããã©ãŒãã³ã¹åäžã®ããã®ã©ã€ãã©ãª
æåŸã«ãã¢ããªã®ããã©ãŒãã³ã¹ãåäžãããã®ã«åœ¹ç«ã€ã©ã€ãã©ãªãããã€ã玹ä»ããŸãããGPUImageãããFMDBããªã©ããã®ä»£è¡šäŸã§ãã
ãGPUImageãã¯ãç»åããããªã®åŠçãåçã«å éãããããã®ã©ã€ãã©ãªã§ãGPUãå©çšããŠãªã¢ã«ã¿ã€ã ã®åŠçãå¯èœã«ããŸãããã®äžæ¹ããFMDBãã¯ãSQLiteããŒã¿ããŒã¹ãObjective-Cã§æ±ãããã®è»œéã§è¿ éãªã©ã€ãã©ãªã§ãã
ãããã®ã©ã€ãã©ãªã¯ãããã©ãŒãã³ã¹ã®åäžãæ±ããéã«ã¯å¿ ãèæ ®ãã¹ãéžæè¢ãšãªããŸããç¹ã«ãé«éãªæç»ãããŒã¿æäœãæ±ãããããããžã§ã¯ãã«ãããŠã¯éåžžã«å¹æçã§ãã
4. Objective-Cã®ã©ã€ãã©ãªã®å©çšã®ã¡ãªãã
Objective-Cã®ã©ã€ãã©ãªã®å©çšã«ã¯ãå€ãã®ã¡ãªããããããŸãããããã®ã¡ãªããã¯ãããžã§ã¯ãã®éçºé床ã®åäžãã³ãŒãéã®åæžãå質åäžã®ããã®ãã¹ãå¹çåããããŠããã©ãŒãã³ã¹åäžãšãªã¹ã¯ç®¡çãšãã£ã圢ã§å ·çŸåããŸãã
ããããã®ã©ã€ãã©ãªã¯ç¹å®ã®æ©èœãæäŸããéçºè ã¯ãããåå©çšããããšã§å¹ççã«ãããžã§ã¯ããé²è¡ããããšãå¯èœã§ãã
ã§ã¯ãå ·äœçã«ããããã®ã¡ãªãããã©ã®ãããªåœ¢ã§çŸããã®ã詳ããèŠãŠãããŸãããã
4.1 éçºé床ã®åäž
Objective-Cã®ã©ã€ãã©ãªã䜿çšããããšã§ã第äžã«éçºé床ãåäžããŸããäžè¬çãªåŠçãæ±çšçãªæ©èœãã©ã€ãã©ãªã«ãŸãšããããŠããããããããå©çšããããšã§ã³ãŒãã®èšè¿°æéãæžå°ããŸãã
ããã¯ãæ°èŠéçºã®æéãçããæ¢åã®ã©ã€ãã©ãªã«äŸåããããšã§éçºé床ãå€§å¹ ã«ççž®ã§ãããšããã¡ãªããã§ãã
ãŸããèšèšèªäœãæ¢åã®ã©ã€ãã©ãªã«åŸãããšã§æéãç¯çŽã§ãããããå šäœçãªéçºãµã€ã¯ã«ãå¹çåãããŸãã
4.2 ã³ãŒãéã®åæž
次ã«ãObjective-Cã®ã©ã€ãã©ãªã®äœ¿çšã«ãããã³ãŒãéã®åæžãå¯èœã§ããæšæºçãªåŠçãã©ã€ãã©ãªãšããŠãŸãšããåå©çšããããšã§åãåŠçãäœåºŠãæžãå¿ èŠããªããªããŸãã
ããã¯ãåé·ãªã³ãŒãã®æé€ãå¯èœã«ããã³ãŒãå šäœãã¹ãããªãšä¿ã€ããšã«ç¹ãããŸãããã®çµæãã³ãŒãã®èªã¿ããããšã¡ã³ããã³ã¹æ§ãåäžããŸãã
ããã«ãã³ãŒãã®åæžãšããç¹ã«ãããŠã¯ãããžã§ã¯ãå šäœã®ç®¡çã楜ã«ãªããåé¡çºçæã®å¯Ÿå¿ãè¿ éã«è¡ãããšããã¡ãªããããããŸãã
4.3 å質åäžã®ããã®ãã¹ãå¹çå
ãŸããObjective-Cã®ã©ã€ãã©ãªã¯ãå質åäžã®ããã®ãã¹ãå¹çåã«ãåãå¥ããŸãããã¹ãçšã®ã©ã€ãã©ãªã¯ãã¹ãã³ãŒãã®èšè¿°ãç°¡æœã«ããäžè²«æ§ãä¿ã€ããšãå¯èœã«ããŸãã
ããã«ããããŠããããã¹ããçµåãã¹ããªã©ãè¡ãéã«ããã¹ããã©ã¯ãã£ã¹ã®å 容ãç°¡çŽ åã§ããçµæçã«ãã¹ãå šäœã®å質ãåäžããŸãã
ãããã£ãŠãã©ã€ãã©ãªã®äœ¿çšã¯å質ä¿èšŒã«ããã倧ããªåŒ·ã¿ãšãªããŸãã
4.4 ããã©ãŒãã³ã¹åäžãšãªã¹ã¯ç®¡ç
æåŸã«ãObjective-Cã®ã©ã€ãã©ãªã¯ãããã©ãŒãã³ã¹ã®åäžãšãªã¹ã¯ç®¡çã«å¯ŸããŠã倧ãã«è²¢ç®ããŸããã©ã€ãã©ãªãé²ãã ãã¥ãŒãã³ã°ãæé©åãæœãããŠãããšãèªåã§ã³ãŒããæžããããåªããããã©ãŒãã³ã¹ãçºæ®ããŸãã
ãããã£ãŠãããã©ãŒãã³ã¹ãæ±ããããå Žé¢ã§ã¯ãã©ã€ãã©ãªã®äœ¿çšãæå¹ã§ãããšæèšã§ããŸãã
ãŸããã©ã€ãã©ãªã®å©çšã¯æœåšçãªã³ãŒãã®ãã°ãæžå°ããããªã¹ã¯ã®ç®¡çã«ãå¯äžããŸãã
5. Objective-Cã®ã©ã€ãã©ãªã®æŽ»çšæ¹æ³
Objective-Cã掻çšããããã®æ段ã¯ã©ã€ãã©ãªã®å©çšã«ãããŸããã©ã€ãã©ãªã¯ããã§ã«å®æãããæ©èœã®éãŸãã§ããããå©çšããããšã§éçºå¹çãäžãããŸãã
ã§ã¯ãå ·äœçã«ã©ã®ããã«ã©ã€ãã©ãªã䜿çšããã°ããã®ã§ãããããæ¬ç¯ã§ã¯ããã®åºæ¬çãªæŽ»çšæ¹æ³ã解説ããŸãã
ãã®äž»èŠãªæ¹æ³ãšããŠã¯ããã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«ãšã¢ã³ã€ã³ã¹ããŒã«ãããã©ã€ãã©ãªã®èªã¿èŸŒã¿ãããå ·äœçãªã©ã€ãã©ãªã®äœ¿çšäŸããããã©ãã«ã·ã¥ãŒãã£ã³ã°ãšè§£æ±ºçããç解ããããšãéèŠãšãªããŸãã
5.1 ã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«ãšã¢ã³ã€ã³ã¹ããŒã«
ãŸãã¯ã©ã€ãã©ãªã䜿çšããããã®ç¬¬äžæ©ãã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«æ¹æ³ã«ã€ããŠè§£èª¬ããŸããObjective-Cã§ã¯ãCocoaPodsãå©çšããŠã©ã€ãã©ãªã管çããããšãäžè¬çã§ãã
ã³ã³ãœãŒã«ã§ãããžã§ã¯ããã£ã¬ã¯ããªã«ç§»åãããpod initãã³ãã³ãã§PodfileãäœæããŸããç¶ããŠããpod install ã©ã€ãã©ãªåããå®è¡ããããšã§ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ã§ããŸãã
ã¢ã³ã€ã³ã¹ããŒã«ããéã¯ãPodfileãã該åœã©ã€ãã©ãªã®èšè¿°ãåé€ãããpod installããå床å®è¡ããããšã§å¯èœã§ãã
5.2 ã©ã€ãã©ãªã®èªã¿èŸŒã¿
ã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«ãå®äºãããã次ã«å®éã«ã©ã€ãã©ãªãããã°ã©ã å ã§äœ¿çšã§ããããã«ããããã«ãã©ã€ãã©ãªã®èªã¿èŸŒã¿æ¹æ³ãåŠã³ãŸãããã
ã©ã€ãã©ãªãèªã¿èŸŒãã«ã¯importæã䜿ããŸããã#import <ã©ã€ãã©ãª/ããããŒãã¡ã€ã«.h>ãã®åœ¢åŒã§ããã°ã©ã ã®å é ã«èšè¿°ããã©ã€ãã©ãªã䜿çšå¯èœãªç¶æ ã«ããŸãã
ãã®èªã¿èŸŒã¿ã®æé ãçµãããšã§ã該åœã©ã€ãã©ãªã®æ©èœãããã°ã©ã å ã§èªç±ã«å©çšã§ããããã«ãªããŸãã
5.3 å ·äœçãªã©ã€ãã©ãªã®äœ¿çšäŸ
ã©ã€ãã©ãªãå ·äœçã«ã©ããã£ã圢ã§äœ¿çšããã®ãã«ã€ããŠãããã§ã¯äžäŸãšããŠäººæ°ã®ããAFNetworkingã®åºæ¬çãªäœ¿çšäŸã玹ä»ããŸãã
AFNetworkingã¯ãããã¯ãŒã¯éä¿¡ã®ããã®ã©ã€ãã©ãªã§ãã#import
ãããã®äœ¿çšäŸãããç解ã§ããããã«ãã©ã€ãã©ãªã®åãåããããšã§è€éãªæ©èœãçãã³ãŒãã§å®çŸå¯èœãšãªãã®ã§ãã
5.4 ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãšè§£æ±ºç
ã©ã€ãã©ãªã䜿çšããéã«ã¯ãäºæããªããã©ãã«ã«ééããããšããããŸããäŸãã°ãã€ã³ã¹ããŒã«ãããŸãè¡ããªããèªã¿èŸŒã¿ãšã©ãŒãåºããæå³ããåäœã«ãªããªããªã©ã§ãã
ãã®ãããªãã©ãã«ã«ééããæã¯ããŸãã¯å ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ãå©çšè ãäœæãããã¥ãŒããªã¢ã«ãQ&Aãµã€ããªã©ãç©æ¥µçã«æŽ»çšããŸãããã
ãŸããé©åãªãšã©ãŒã¡ãã»ãŒãžãç解ããããã«åºã¥ããåé¡è§£æ±ºã®ã¢ãããŒããè¡ãããšã倧åã§ãããããã®ç¥èãæã€ããšã§ãã©ã€ãã©ãªã®ããé«åºŠãªæŽ»çšãå¯èœãšãªããŸãã
6. Objective-Cã®ã©ã€ãã©ãªã®ä»åŸã®èŠéã
Programmingã®é²æ©ã«äŒŽããObjective-Cã®ã©ã€ãã©ãªãæ¥ã ãã®äŸ¡å€ãé«ããŠããŸããããããæ°ããªèšèªããã¬ãŒã ã¯ãŒã¯ãçãŸããŠããçŸåšãObjective-Cã®ã©ã€ãã©ãªã®èŠéãã«ã€ããŠæ·±å ãããã®æœåšçãªäŸ¡å€ãšæªæ¥æ§ãæããã«ããŸãããã
Objective-Cã®ã©ã€ãã©ãªã®ããã³ã·ã£ã«ãå®å šã«éè±ãããŸã§ãä»åŸãæè¡éçºãé²è¡ãç¶ããã§ãããããã®ãããObjective-Cã®æè¡è ã¯è¿ éã«å€ããç¶æ³ã«å¯Ÿå¿ããèœåãåããŠããããšãæ±ããããŠããŸãã
ãã®ç¯ã§ã¯ãObjective-Cã®ã©ã€ãã©ãªã®ç«¶åã·ããªãªãã©ã€ãã©ãªã®å°æ¥æ§ãçŸåšéçºãç¶ç¶äžã®ããããã®ã©ã€ãã©ãªããããŠç¶ç¶çãªåŠç¿ã®éèŠæ§ã«ã€ããŠè§£èª¬ããŸãã
6.1 ã¢ãã³ãªéçºç°å¢ãšã®ç«¶å
Objective-Cã¯Appleã®iOSã¢ããªéçºã«ãããŠéèŠãªåœ¹å²ãæãããŠããŸãããããã®å°äœã¯Swiftã«ãã£ãŠæºããã€ã€ãããŸããããããObjective-Cã¯æ±ºããŠæ代é ãã§ã¯ãªãã掻çºã«æŽæ°ããç¶ããã©ã€ãã©ãªãšãšãã«ããŸã ãŸã é åçãªéçºç°å¢ãæäŸããŠããŸãã
ãã®äžæ¹ã§ãPythonãJavaãJavaScriptãªã©ã®ãããªä»ã®ããã°ã©ãã³ã°èšèªãšã競åé¢ä¿ã«ãããŸãããããã®èšèªã¯Objective-Cãšæ¯èŒããŠãåŠç¿æ²ç·ãç·©ããã§ãã£ãããã³ãã¥ããã£ã倧ãããããµããŒãã容æã§ãããªã©ã®å©ç¹ãæ ã£ãŠããŸãã
ã ãããšèšã£ãŠObjective-Cãéå»ã®ãã®ãšãªãããã§ã¯ãããŸãããObjective-Cã®ã©ã€ãã©ãªã¯æã¡åã®å®å®æ§ãšåè¶ããããã©ãŒãã³ã¹ã§ãåºå®ãã¡ã³ãæã£ãŠããã®ã§ãããããã®ç¹æ§ã¯Objective-Cãã¢ãã³ãªéçºç°å¢ãšç«¶äºããäžã§æå©ãšãªã£ãŠããŸãã
6.2 Objective-Cãšã©ã€ãã©ãªã®å°æ¥æ§
Objective-Cã¯é·ãæŽå²ãæã¡ãè±å¯ãªã©ã€ãã©ãªãæäŸãããŠããŸãããã®ãããå€ãã³ãŒãããŒã¹ãç¡çã«ææ°ã®ç°å¢ãžç§»è¡ãããå¿ èŠã¯ãªããObjective-Cãšãã®ã©ã€ãã©ãªãç¶ç¶ããŠäœ¿çšããããšã«ã¯äŸç¶ãšããŠå€§ããªäŸ¡å€ããããŸãã
ããã«ãObjective-Cã®å å®æ§ãšç¬ç¹ã®èªæ³ã¯ãç¹å®ã®ã·ããªãªã§ã¯ä»ã®èšèªãäžåãæ§èœãçºæ®ããŸãããããã®çç±ãããObjective-Cãšãã®ã©ã€ãã©ãªã®å°æ¥æ§ã¯ä¿èšŒãããŠããŸãã
ãã®èšŒæ ã«ãçŸåšã§ãObjective-Cã®ã©ã€ãã©ãªã¯ã¢ããããŒããç¶ããããæ°ããªæ©èœãä¿®æ£ãé »ç¹ã«è¿œå ãããŠããŸãããããã®æŽ»åã¯Objective-Cã®çãç¶ãããšã³ã·ã¹ãã ããŸããŸããšç€ºããŠããŸãã
6.3 ãŸã éçºç¶ç¶äžã®ããããã©ã€ãã©ãª
Objective-Cã®ãšã³ã·ã¹ãã ã®äžã«ã¯ããŸã éçºãç¶ç¶äžã®ã©ã€ãã©ãªãå€ãååšããŸãããããã®ã©ã€ãã©ãªã¯ãæ°ããªè¶£åãèŠæ±ãæºããããã®æ°æ©èœãä¿®æ£ãé »ç¹ã«è¿œå ããŠããŸãã
ãã®äžã€ãã”AFNetworking”ã§ããAFNetworkingã¯Objective-Cã§æžãããé«åºŠãªãããã¯ãŒãã³ã°ã©ã€ãã©ãªã§ãiOSãšmacOSã®éçºã«å¹ åºã䜿çšãããŠããŸãã
ãŸããSDWebImageãç®ãèŠåŒµãã¹ãã©ã€ãã©ãªã®äžã€ã§ãããã®ã©ã€ãã©ãªã¯ãéåæç»åããŠã³ããŒãããã³ãã£ãã·ã³ã°ã«ç¹åããŠãããObjective-Cã®éçºè ãé Œãã«ãã匷åãªããŒã«ãšãªã£ãŠããŸãã
6.4 ç¶ç¶çãªåŠç¿ã®éèŠæ§
æè¡ã¯åžžã«é²åããŠããŸããããéçºè ã¯èªèº«ã®ç¥èãåžžã«ææ°ã®ç¶æ ã«ä¿ã€å¿ èŠããããŸããããã¯Objective-Cã®éçºè ã«ãšã£ãŠãäŸå€ã§ã¯ãããŸããã
Objective-Cã®ã³ãã¥ããã£ã¯ç¶ç¶ããŠæ°ããã©ã€ãã©ãªãçã¿åºããæ¢åã®ã©ã€ãã©ãªãéææŽæ°ãããŠããŸããããã«å¯Ÿå¿ãããããéçºè ã¯æ°ããã©ã€ãã©ãªã®ååšãç¥ãããã®äœ¿ãæ¹ãåŠã¶ããšãéèŠã§ãã
ãã®äžã§ãå€ãã©ã€ãã©ãªãç¶æããããæ°ããã©ã€ãã©ãªãšçµã¿åãããŠäœ¿çšãããããããã®çç·Žããæèœãšç¥èãå¿ èŠãšãªã£ãŠããŸããç¶ç¶çãªåŠç¿ã¯ãããã®èŠæ±ã«å¯Ÿå¿ããããã®éèŠãªããŒãšãªããŸãã