ãåç·šãSwiftã§ãiPhoneã¢ããªäœãäœéšããã³ãºãªã³ïŒ
2019幎12æ7æ¥ãã8æ¥ã®äºæ¥éã«ããããä»å°åžã§ãSwiftã§iPhoneã¢ããªäœãäœéšãã³ãºãªã³ïŒããéå¬ãããŸãããä»å°åžããã£ãŒã«ãã«å 端æè¡ãšæ§ã ãªç£æ¥ãæãåãããæ°äºæ¥ã®åµåºãå 端IT人æã®è²æã»äº€æµã«ããã€ãããŒã·ã§ã³ãçã¿åºããéœåžäœéšã®ã¢ããããŒããç®æããããžã§ã¯ããSENDAI X-TECH Innovation Projectãã®äžç°ãšããŠéå¬ãããåã€ãã³ãã®æ§åãã玹ä»ããŸãããªãŒããã³ã°ã¯åå è å士ã§èªå·±ç޹ä»
æåã«TECH PLAYéå¶äºåå±ãããäºæ¥éã®ã¹ã±ãžã¥ãŒã«ã泚æäºé ã説æãããåŸãåå è å士ã§ããååã»æ®æ®µäœãããŠãã人ãªã®ãã»ãã³ãºãªã³ã§åŠã³ããããšãã«ã€ããŠãåããŒãã«ããšã«èªå·±ç޹ä»ãè¡ãããŸããã

ç¶ããŠãäž»å¬ã®ä»å°åžç£æ¥æ¯è課ã»èæšç°çããããããSENDAI X-TECH Innovation Projectãã«ã€ããŠããããŸã§ã®åãçµã¿ã玹ä»ãããŸããã
ãä»å°åžã«ã¯ITäŒæ¥ããããããããŸãããææ°æè¡ãªã©ãåŠã¶å Žãå°ãªãã£ãããšãããæ¬ãããžã§ã¯ããæšå¹ŽåºŠããç«ã¡äžããŸãããããã«ãšã³ãžãã¢ããã£ã¬ã³ãžã§ããæ©äŒåµåºãè¡ã£ãŠãããæ¥œå€©éçå£ã®æ°ãµãŒãã¹ãææ¡ãããªãŒãã³ã€ãããŒã·ã§ã³ãããžã§ã¯ããªã©ã宿œããŠããŸãããã²ãäžç·ã«ä»å°åžã§ãã³ãã¥ããã£ãå匷äŒãçãäžããŠãããŸãããã

â²ä»å°åž çµæžå± ç£æ¥æ¯è課 èæšç°çãã
ãSwiftã§iPhoneã¢ããªäœãäœéšãã³ãºãªã³ãã¹ã¿ãŒãïŒ
ä»åã®ãã³ãºãªã³ã§åŠã¶ãSwiftUIãã¯ã2019幎6æã®ãWWDC19ãã§çºè¡šããããSwiftèšèªãçšããŠå¹ççã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãå®çŸ©ã§ããUIãã¬ãŒã ã¯ãŒã¯ãSwiftUIãçšãããšãUIéçºãç°¡åã«ã§ããããã«ãªããŸãããã ããSwiftUIã§äœã£ãã¢ããªã¯iOS 13以éã§ããåããŸããã
ãã³ãºãªã³ã®è¬åž«ã¯ãã颚åã°ã©ããŒããªã©ã®çžæ§ã§ã銎æã¿ã®å¢äºéäžéãããåºéšäžåŒ¥ãããé«å æŸããã«ãã¥ãŒã¿ãŒãåããŠããã ããŸããã

â²å·ŠãããåºéšäžåŒ¥ãããå¢äºéäžéãããé«å
æŸãã
ãŸãã¯ãè¬åž«ã®å¢äºããããSwiftUIã«é¢ããåºç€ç¥èãšæ³šæäºé ã説æãããŸããã iPhoneã®ã¢ããªã±ãŒã·ã§ã³ã¯ãXcodeãšããçµ±åéçºç°å¢ã§éçºãè¡ããŸãããSwiftUIã¯Xcode11ããã¢ããªãæžããããã«ãªããŸããOSãææ°ã®Catalinaã§ãªããšãå šéšã®æ©èœã䜿ããŸããã
ãŸããLive Previewãšããå®éã«ã³ãŒããæžããšããªã¢ã«ã¿ã€ã ã«ããœã³ã³ïŒMac)ã®äžã§ ã©ããªç»é¢ã«ãªããã確èªãã§ããæ©èœã䜿ãããã«ãææ°OSã«äžããå¿ èŠããããŸãã ãŸã ã§ããããšã¯å°ãªããUIKitïŒiOSã®UIã³ã³ããŒãã³ãïŒã§ã§ããããšããã¹ãŠã§ããããã§ã¯ãªãã®ã§ããããä»ããæ £ããŠããã°1幎åŸã«ã¯å¿ ã圹ã«ç«ã€ã¯ãããšãå¢äºããã¯èšããŸãã

iOSã®æ°ããªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ããŠ
iOSïŒiPhone, iPad, AppleWatch, macOSãªã©ïŒã¯ãã©ãããã¶ã€ã³ãšããçœãåºèª¿ã§ããŸãçŽ ææããªããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã䜿ã£ãŠããŸãã2013幎ã«iOS7ã§è£ 食ãæãããã©ãããã¶ã€ã³ã«ãªã£ãã®ã§ãããããããä»ãŸã§ã§äžçªå€§ããªãã¶ã€ã³å€æŽã®ã«ãŒã«ã ã£ãããšãå¢äºããã
ãããŸã§ã®ã¹ãã¥ãŒã¢ãŒãã£ãºã ã§ãªãããªã°ã©ãã£ãã¯ãããæå³ãæ§é ãã·ã³ãã«ã«è¡šããã¶ã€ã³ã«ããŸããããšãããã©ãããã¶ã€ã³ã«ç§»è¡ãSwiftUIãã·ã³ãã«ãªéšåãéããŠæ§é ãäœãUIã«ãªã£ãŠããŸããiPhone, iPad, AppleWatch, macOSãªã©ãããã€ã¹ã®ç»é¢ãµã€ãºãéã£ãŠãåãããšãã§ããããã«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãçµ±äžåãããŠããã®ã§ãã
iOS 13ãããµããŒããããã®ããèæ¯è²ãæããããDark modeããšãiPadã§è€æ°ã®ã¢ããªãç»é¢äžã«åæã«èµ·åã»æäœã§ãããSplit screenãããããŸã§ã¢ããªã«ãã£ãŠè²ã決ãŸã£ãŠããèæ¯è²ãã¢ããªã®å©çšã·ãŒã³ã«ãã£ãŠãè²ãå€ããããããã«ãªã£ããå¢äºããã¯ãããã¶ã€ããŒã«ã¯ãè²ã決ãããšãã£ãèŠãç®ãã°ã©ãã£ã«ã«ãªãã¶ã€ã³ã§ã¯ãªããæ©èœãæå³ãšããŠãã¶ã€ã³ããŠã»ããããšããæå³ããã§ã¯ãªãããšæšæž¬ããŠããŸãã

å¢äºããã¯å®¶ã®éåãå³ãSwiftUIãå®¶å ·ã¯Componentãšãå®¶ã®ãã¶ã€ã³ã«ãããäŸãããä»ãŸã§ã¯çµµãæãããã«ãã¶ã€ã³ããŠãããã®ããæ¢è£œåãåãããŠã¬ã€ã¢ãŠãããããšã§ãã¶ã€ã³ãããåããã©ã³ãã®å®¶å ·ã䜿ã£ãŠãéšå±ã®ã¬ã€ã¢ãŠãã¯äººã«ãã£ãŠå šç¶éãããã«ãåãããŒãã䜿ã£ãŠããå šç¶åããå°è±¡ãéããè¶³ããªããã®ã«é¢ããŠã¯äœããã©ãæ¢è£œåãããå Žåã¯ãªãã¹ã䜿ããšãããã¶ã€ã³ã®æ¹åæ§ã«ãªãããšãããŸãã
SwiftUIã¯æšæºéšåã ãã䜿ãã®ã§ããŠãŒã¶ãŒã«ãšã£ãŠããããšã¯ããã¿ã³ãåããã¶ã€ã³ãªã®ã§è¿·ããªããªãããšããã¶ã€ããŒã¯æšæºéšåã®äžã§äœãããšãã§ããã®ã§æ¥œã«ãªããçè§£ããŠããªããšå®è£ ã倧å€ã§ãããçè§£ããŠããã°ãšãŠã楜ã«ãªããšããã®ãç¹åŸŽã
äžæ¹ãAndroidã¯ã¹ãã¥ãŒã¢ãŒãã£ãºã ãšãã©ãããã¶ã€ã³ã®éãçã£ããããªã¢ã«ãã¶ã€ã³ãå ¥åæ¬ã«åœ±ãæ ãå ¥ããããªã©ãã»ããã©ãããã¶ã€ã³ãšãèšãããŠããŸãã
UIå®çŸ©ãã³ãŒãã§æžã宣èšçUI
SwiftUIã¯ãHTMLã®ããã«ããã³ãã¬ãŒããšã³ãžã³ã®ãããªã³ãŒããæžããŠãããšãã®ãŸãŸUIã«ãªããå®çŸ©ããããšãã§ããããã«ãªããŸãã
ãä»ãŸã§UIãäœããšãã¯ãInterface BuilderãšããããŒã«ã䜿ããXcodeã§ã¯ãçµµæããœããã®ããã«ããŒããèŒããŠãç·ãåŒããŠããã°ã©ã ã远å ããŠããUIãäœã£ãŠãããã ããSwiftUIã¯ãããã£ãGUIæ©èœããªããªã£ã代ããã«ãSwiftã䜿ã£ãŠç»é¢UIãäœãããšãã§ããããã«ãªã£ããéåžžã«ã·ã³ãã«ãªãœãŒã¹ã³ãŒãã ãã§UIãäœããããã«ãªã£ãããšãä»åã®å€§ããªç¹åŸŽã§ããïŒå¢äºããïŒ

宣èšåUIãšèšãããã³ãŒãã䜿ã£ãŠUIãæ§ç¯ããŠããææ³ã¯ãããæè¿ïŒ2013幎ãããããïŒã®æµè¡ã§ãReact.jsãVue.jsã®ããã«JavaScriptã䜿ã£ãŠç»é¢ãæ§ç¯ããŠããããšãå¢ããŠããã®ã ããã
ãä»ã®ããã°ãã³ã°èšèªã䜿ã£ãããšããã人ã¯ãSwiftã§ãããªã«æ©ãããšã¯ãªããšæããŸããè¯ããæªããããŸãç¹åŸŽã®ãªãèšèªãXcodeãããã§ããŠããã®ã§ãè§Šã£ãŠã¿ãã®ãäžçªããŸãã¯Xcodeãèµ·åããŠã¿ãŠãã ãããïŒå¢äºããïŒ
Swiftã¯åä»ãã匷ããªããžã§ã¯ãèšèª
ããã«è¬çŸ©ã¯æè¡çãªå 容ã«é²ã¿ãã³ãŒããæžããªããã®èª¬æãç¶ããŸããVersion11.2.1ã«ãªã£ãŠããããXcodeã®Swiftã®åãã詊ããŠã¿ãæ©èœãplaygroundãã䜿ããããšããå®è¡çµæãå³åŽã«è¡šç€ºãããããšãªã©ã確èªããŸãã

Swiftã¯åããã£ãããã£ããªããžã§ã¯ãæåèšèªã§ãåæšè«ãšããæ©èœãã€ããŠããŸãããã®åæšè«ã¯ã³ã³ãã¥ãŒã¿ãæšæž¬ããŠããã䟿å©ãªæ©èœãããããã䜿ãããŒã¯ãŒããç»é¢äžã«åºãã®ã§ãããã°ã©ãã³ã°ããã£ããããŠããããã«èŠããŸããäžæ¹ã§ãã³ã³ãã€ã«ãé ããªã£ãŠããŸããšãããã¡ãªããããè¯ããæªããåã匷ãèšèªã®ç¹åŸŽãåããŠããŸãã
åã®åºæ¬ãã倿°ã®varãšå®æ°ã®letã®éããªã©ã«ã€ããŠã説æãããŸãããèšèªã«ãã£ãŠæå³ãéãã®ã§æ··ä¹±ããããšããããŸãããvarã倿°å®çŸ©ãletã宿°å®çŸ©ãšèŠãããšãããšããã¢ããã€ã¹ããã¡ã¢ãªç®¡çã«ã€ããŠã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã§è¡ããŸããSwiftã¯ç¹åŸªç°åç §ãèµ·ãããšãã«ãèªåã§ã¡ã¢ãªãè§£æŸããªããã°ãªããªããªã©ã泚æç¹ãäŒããããŸããã
ForæãDictionaryãClass / Structãªã©ãå¢äºããã®ã©ã€ãã³ãŒãã£ã³ã°ãšãšãã«ä»èšèªãšã®éããSwiftã®ç¹åŸŽãªã©ã解説ãããåå è ãæãåãããã³ãŒãå ¥åãå®è·µããŸãã

å ¬åŒãã¥ãŒããªã¢ã«ã«åŸããSwiftUIã§ã¢ããªãäœæããŠã¿ãã
æŒé£åŸã¯ãããããSwiftUIã®å ¬åŒãã¥ãŒããªã¢ã«ãããšã«ã¢ããªãäœæãããã³ãºãªã³ãžããã¥ãŒããªã¢ã«ã®ãã¡ã€ã«ãããŠã³ããŒãããXcodeã®ç°å¢èšå®ãè¡ããSwiftUIãéžæããããžã§ã¯ãã®ä¿åå ãéžæããŠCreateãã¿ã³ãã¯ãªãã¯ããããžã§ã¯ããäœæãããšãContentView.swiftãéããŸãã

iPhoneã®ç»é¢ãã¥ãŒã«è¡šç€ºããããHello Worldãã®ããã¹ããã«ã¹ã¿ãã€ãºããããæåäœçœ®ã®èª¿æŽãã¬ã€ã¢ãŠãã®å€æŽãªã©ãå®éã«ã³ãŒããè§Šãã¯ãŒã¯ã«æãã§ãããŸãã

SwiftUIã§ã¯ã瞊ç©ã¿ã暪ç©ã¿ãããšããããã«éšåã远å ããŠãã¬ã€ã¢ãŠããè¡ã£ãŠãããŸãããã®çµã¿åãããã¶ã€ã³ã«æ¬ ãããªãæ°Žå¹³æ¹åã«é 眮ããHStackãåçŽæ¹åã«é 眮ããVStackã«ã€ããŠãã©ã€ãã³ãŒãã£ã³ã°ãããªãã解説ããã®åŸãåå è ãããããã³ãŒããæžãã¯ãŒã¯ãè¡ããŸãã


ç¶ããŠã¯ãç»åãšå°å³ã远å ããŠãç°¡åãªèŠ³å æ¡å ãããã®ã¢ããªãäœæãç»åã䞞圢ã«åãåãCircleImageæ©èœããšãã§ã¯ãæ©èœãªã©ãäœæããããéšåïŒMapViewïŒã¯ãMapKitãšããããŒã«ã䜿ãã緯床ãšçµåºŠããMapViewã«å°å³ã衚瀺ããã³ãŒããæžããŸãã

ãã¥ãŒããªã¢ã«ã®ã¢ã¡ãªã«ã»ã«ãªãã©ã«ãã¢ã®å°å³ãæ±äº¬ã®å°å³ã«å€ããããç»åãšå°å³ã远å ããŠããå¿çšèª²é¡ã«ããã£ã¬ã³ãžããŸããã

次ã®ã»ã¯ã·ã§ã³ã§ã¯ãLandmarkã®ãªã¹ãïŒå Žæã»ç»åã»ååïŒãåºãŠãã芳å å°æ¡å ã¢ããªãäœããŸãã瞊ã«é·ããªã¹ããäœãLandmarkRowããGroupã«ããŠå€§ãããåºå®ããŠãªã¹ããã³ããŒããLandmarkDetailãªã©ãã³ãŒãã£ã³ã°ãããšãããŸã§ã§ãäžæ¥ç®ã®ã¯ãŒã¯ã¯çµäºãšãªããŸããã

äžæ¥ç®ã®ãã³ãºãªã³çµäºåŸã¯æèŠªäŒã§äº€æµãæ·±ãã
ãã³ãºãªã³çµäºåŸã¯ãè¬åž«ã®å¢äºéäžéããããã¥ãŒã¿ãŒã®åºéšäžåŒ¥ãããé«å æŸãããä»å°åžåœ¹æã®èæšç°ããã»äœè€ãããTECH PLAY éå¶äºåå±ã»ã¹ã¿ããã亀ããŠã®æèŠªäŒãéå¬ãåå è å士ã®äº€æµãç©æ¥µçã«è¡ãããæè¡ãã³ãã¥ããã£ãªã©ã®è©±é¡ã§çãäžãããŸããã

â¶ïžã€ãã³ãã¬ããŒãã®åŸç·šã¯ãã¡ãïŒãåŸç·šãSwiftã§ãiPhoneã¢ããªäœãäœéšããã³ãºãªã³ïŒ
â¶ïžä»å°åžäž»å¬ã®ã€ãã³ã
ã2019幎11æ7æ¥(å)ïœ11æ8æ¥(æ¥)ãKotlinã§Webã¢ããªã±ãŒã·ã§ã³ãéçºããŠã¿ãããã³ãºãªã³
ã2019幎12æ7æ¥(å)ïœ12æ8æ¥(æ¥)ãSwiftã§iPhoneã¢ããªäœãäœéšïŒ
ã2020幎1æ18æ¥(å)ïœ1æ19æ¥(æ¥)ãã¢ããªUIãã¶ã€ã³å®è·µãã³ãºãªã³
ã2020幎2æ7æ¥(å)ïœ2æ8æ¥(æ¥)ããã¶ã€ã³ã·ã³ãã³ã°äœéšè¬åº§
ã2020幎2æ29æ¥(å)ïœ3æ1æ¥(æ¥)ãããžãã¹ãã©ã³æ§ç¯ã¯ãŒã¯ã·ã§ãã
ããããã€ãã³ã
é¢é£ããã€ãã³ã

Swiftã§iPhoneã¢ããªäœãäœéšïŒ
2019幎12æ07æ¥ (å)ããããã®èšäº

ãåŸç·šãSwiftã§ãiPhoneã¢ããªäœãäœéšããã³ãºãªã³ïŒ

ReactNativeã§ã¹ããåãã®ã¢ããªãäœã ââä»å°åžäž»å¬ã®ãReactNativeåå¿è åããã³ãºãªã³ãã¬ããŒã










