- 家åºæåž«ã®ããã®ããŒãœãã«ãã£ãŒãã£ãŒã¢ããªã
- ãµãã«ãŒããŒãã¡ã³ãçšã®LocalFootballã¢ããªã
- æ©åšã¬ã³ã¿ã«çšã®PhoRentã¢ããªã
- æçã¬ã·ãã®TastyThingsã¢ããªã
家åºæåž«ã®ããã®ããŒãœãã«ãã£ãŒãã£ãŒã¢ããª
åŠçãå¢ããã»ã©ãèç©ããããã¹ãŠã®æ å ±ã家åºæåž«ãæ§é åããŠä¿åããããšãé£ãããªããŸãããã¹ãŠãé ã®äžã§ç¶æããããããŸããŸãªã¡ãã£ã¢ãããŸããŸãªåœ¢åŒã§ç¬èªã®ã¹ãã¬ãŒãžã¹ããŒã ãèãåºãå¿ èŠããããŸãããããã¯äžäŸ¿ã§ãããããã£ãŠã圌ãã¯å®¶åºæåž«ã®ä»äºã«é¢é£ãããã¹ãŠã®ãã®ãä¿åããŠæ§é åããã¢ããªã±ãŒã·ã§ã³ãäœæããŸããã
ã¢ããªã±ãŒã·ã§ã³ã¯3ã€ã®ã¡ã€ã³ç»é¢ã§æ§æãããŠããŸãã
- æå»è¡šã
- åŠçã
- ãã¡ã€ãã³ã¹ã
ã¹ã±ãžã¥ãŒã«ç»é¢ã§ã¯ãç¹å®ã®æ¥ä»ã®ã¬ãã¹ã³ããã°ããèŠã€ããããšãã§ããŸããã¿ã€ãã«ã¯æã®ååãviewModelããæååãšããŠååŸããŸãïŒã¢ããªã±ãŒã·ã§ã³ã¯MVVMã¢ãŒããã¯ãã£ãã¿ãŒã³ã«åŸã£ãŠèšè¿°ãããŠããŸãïŒãææ¥ã®ãããã¯ã¯éçã¹ã¿ãã¯ãã¥ãŒã§ããæã®æ¥æ°-ã»ã«ã®æ°ãéžæããæã®æ¥æ°ã«å¯Ÿå¿ããcollectionView +æã®æåã®ææ¥ãåºæºãšãããªãã»ããã
ã«ã¬ã³ããŒã®äžã«ã¯tableViewããããåœæ¥ã®ã¬ãã¹ã³ã«é¢ããäž»ãªæ å ±ã衚瀺ãããŸããçåŸã®åçãšååãã¬ãã¹ã³ã®ååãæ¥æãã¬ãã¹ã³ã®æéïŒã¬ãã¹ã³ãæ¯æãããŠããå ŽåãäŸ¡æ Œã©ãã«ã¯ç·è²ã«ãªããŸãïŒã
çåŸã®ç»é¢é»è©±åž³ã®ããã«ããã¹ãŠã®åŠçã®ãªããžããªãšããŠæ©èœããŸããå šç»é¢ã®tableViewã§ããåãã«ã¹ã¿ã ã»ã«ã䜿çšãããç°ãªãæ å ±ã®ã¿ãå ¥åãããŸãã
åŠçãã¯ãªãã¯ãããšãã¢ããªã±ãŒã·ã§ã³ã®åœŒã®å人ããŒãžã«ç§»åããŸãããå«ãïŒ
- æ¯æãããéçŽãšåéã«é¢ããæ å ±ã
- æ¥ä»ãšæå»ã§ãœãŒãããããéå»ããã³ä»åŸã®ãã¹ãŠã®ã¯ã©ã¹ã®ãªã¹ãã
StackViewã«ã¯ãææã¬ãã¹ã³ãšåéã®éé¡ã瀺ãããããã¿ã³ããããŸãããããã¯ãªãã¯ãããšãMapKitããŒã¹ã®mapControllerãéããçåŸã®äœæãšåçã衚瀺ãããŸããããã§ãã€ãã³ã°ã«ãŒããäœãããšãã§ããŸãã
ãããŠãçåŸã®å人çšããŒãžã®ã¬ãã¹ã³ãã¯ãªãã¯ãããšããã®ã¬ãã¹ã³ã«é¢ãããã¹ãŠã®æ å ±ãèšèŒãããå¥ã®ããŒãžãéããŸãã
- æéãšæ¯æãç¶æ³ã
- 宿é¡ã
- ã¬ãã¹ã³ããŒãã
- ã¬ãã¹ã³ã®åçãè¿œå ããŸããã
ã¬ãã¹ã³ããŒãžã¯ãããã¯ã§æ§æãããŠããŸãïŒ
- äžçªäžã®ãã®ã¯ãã¬ãã¹ã³ã®åºæ°ããã®æ¥ä»ãæéãããã³è²»çšã«é¢ããæ å ±ãå«ãstackViewã§ãã
- äž-åçãè¿œå ããããã®æšªã¹ã¯ããŒã«ä»ãã®ã³ã¬ã¯ã·ã§ã³ã
- äžã®1ã€ã¯ã宿é¡ãéå»ã®ã¬ãã¹ã³ã«é¢ããã¡ã¢ãããã³å°æ¥ã®ããã·ã¥éç¥çšã®ããã¹ãããã¯ã¹ãå«ã3ã€ã®textViewã§ãã
æåŸã«ã3çªç®ã®ã¡ã€ã³ç»é¢ã¯ãã¡ã€ãã³ã¹ç»é¢ã§ããäžååã«ã¯ããã®æã®ãã¹ãŠã®ææã¬ãã¹ã³ã®ã°ã©ããäœæãããŸããäžã«ããããã®ã¬ãã¹ã³ã®ãªã¹ããæ¥ä»é ã«ç€ºããŸãããã¹ãŠã®æªæãã®ã¢ã¯ãã£ããã£ããªã¹ãããŠãtableViewã«è¡šç€ºããããšãã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ãã¯ãããžãŒã䜿çšããŠäœæãããŸããïŒ
- Firebaseã
- ã³ã¢ããŒã¿ã
- MVVMã
FirebaseããŒã¿ããŒã¹ã¯ãåçãé€ããã¹ãŠã®çåŸãšã¯ã©ã¹ã®ããŒã¿ãä¿åããããã«äœ¿çšãããŸãããŸãããã®ããŒã¿ããŒã¹ã䜿çšãããšãã³ãŒããè€è£œããã«ãªãã©ã€ã³ã§äœæ¥ã§ããŸããFirebaseã¯ã©ãŠãã¹ãã¬ãŒãžã¯ã¯ã©ã¹ã®çåŸã®åçãšã¹ãããã·ã§ãããä¿åããããã«äœ¿çšãããåçã䜿çšãããªãã©ã€ã³äœæ¥ã¯CoreDataã䜿çšããŠæäŸãããŸããæ¿èªã«ã¯Firebase Authenticationã䜿çšãããŸããã¢ãŒããã¯ãã£ã«é¢ããŠã¯ããããžã§ã¯ãã¯MVVMãã¿ãŒã³ã«åŸã£ãŠæ§ç¯ãããŸããã
å°æ¥çã«ã¯ãåŠçåãã®ã¢ããªã家åºæåž«ãšåŠçéã®ãã£ãããäœæããäºå®ã§ãã
ãããžã§ã¯ãããŒã ïŒVasily SakharovãNikita Pavlovã
ãããžã§ã¯ãã®ä¿è·ã
ãµãã«ãŒããŒãã¡ã³ãçšã®LocalFootballã¢ããª
ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ããã¡ã³ããã¬ãŒã€ãŒãããã³ããŒãã¡ã³ãäž»å¬è ã®äž¡æ¹ã«ãšã£ãŠèå³æ·±ããã®ã§ããããã§ã¯ãå¿ èŠãªãã¹ãŠã®æ å ±ã確èªã§ããŸãã
- ããŒãã¡ã³ãããŒã¿ã
- 2ã€ã®åœ¢åŒã®ãªãŒããŒããŒãã
- ææ°ã®ããŒã çµ±èšã
- è©Šåã®ã¹ã±ãžã¥ãŒã«ãšçµæã
LocalFootballã¯ããŒã¿ãã«ã¬ã³ããŒã«è¿œå ããä»åŸã®è©Šåã«ã€ããŠäºåã«éç¥ããããšãã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ã¯æ¬¡ã®ãšããã§ãã
ã¢ããªã±ãŒã·ã§ã³ã¯ãã¯ãããžãŒã䜿çšããŠäœæãããŸããïŒ
- MVC +äŸåæ§æ³šå ¥
- CoreData + FetchResultsController
- SwiftyJSON
- .xib + AutoLayout
- SDWebImage
- EventKit
ãããžã§ã¯ãã¯MVCã¢ãŒããã¯ãã£ã«åºã¥ããŠæ§ç¯ãããŠããããã®ãã¿ãŒã³ã®å žåçãªåé¡ãåé¿ããããã«ãèè ã¯æ¬¡ã®ããšãè¡ããŸãã
- ãã¹ãŠã®ViewControllerã®å ±éã®UIããžãã¯ãåå¥ã®ã¹ãŒããŒã¯ã©ã¹ã«åé¢ããŸããã
- ã«ã¬ã³ããŒã®ããäœæ¥ãå¥ã®ã¢ãžã¥ãŒã«ã«ç§»åããŸããã
- åããŒãã«ã»ã«ã«ã³ã³ãã£ã®ã¥ã¬ãŒã¿ã¯ã©ã¹ã䜿çšããŸããã
ãã®ãããžã§ã¯ãã§ã¯ããããã¯ãŒã¯å±€ã«äŸåæ§æ³šå ¥ãã¿ãŒã³ã䜿çšããŸãããŸãããã¹ãããŒã¿ã䜿çšããŠç°¡åã«æ§æå¯èœãªã¯ã©ã¹ãäœæãããšãããŸããŸãªã·ããªãªãšãšã©ãŒåŠçã®ãã¹ãã«åœ¹ç«ã¡ãŸãã
CoreDataã¯ãããã€ã¹ã«ããŒã¿ãæ ŒçŽããããã衚瀺ããããã«äœ¿çšãã
FetchResultsController
ãŸããã€ã³ã¿ãŒãã§ã€ã¹ã¯.xibãã¡ã€ã«ãšAutoLayoutã§æ§ç¯ãããŠããŸãã SwiftyJSONã¯ããŒã¿ã®è§£æã«äœ¿çšãããSDWebImageã¯ç»åã®èªã¿èŸŒã¿ãšè¡šç€ºã«äœ¿çšãããSwiftLintã䜿çšããŠã³ãŒãã®çŽç²æ§ãä¿èšŒãããŸãã
ããŒã ãããŒãã¡ã³ãã®ç»é¢ã衚瀺ããããã®æ å ±ã®éãå°ãªãããããããã«å¿ èŠãªãã¹ãŠã®ããŒã¿ã1ã€ã®èŠæ±ã§ããŒããããŸããéåžžãããã«å€ãã®äžèŽããããããäžåºŠã«ãã¹ãŠãããŠã³ããŒãããããšã¯ãå§ãã§ããŸããããããã®è¿œå èªã¿èŸŒã¿ã®ããã«ãããŒãžããŒã·ã§ã³ãã¢ããªã±ãŒã·ã§ã³ã«å®è£ ãããŸããã
å°æ¥çã«ã¯èšç»ãããŠããŸãïŒ
- åç°¿ã䜿çšããŠããµãã«ãŒããŒã ã®è©³çŽ°ç»é¢ãäœæããŸãã
- çŸåšã®äžèŽã¹ã³ã¢ã§ããã·ã¥éç¥ãè¿œå ããŸãã
- ããŒãã¡ã³ãäž»å¬è çšã®å¥ã®ã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã
ãããžã§ã¯ãããŒã ïŒAnna AkentievaãDaria LeonovaãDanil Rogozinã
ãããžã§ã¯ãã®ä¿è·ã
æ©åšã¬ã³ã¿ã«çšã®PhoRentã¢ããª
ãŸããåçæ©æã®ã¬ã³ã¿ã«çšã®ã¢ããªã±ãŒã·ã§ã³ãäœæããŸãããä»æ¥ãããã¯ãã§ã«åžå Žã®æ³šç®ãã¹ãã»ã°ã¡ã³ãã§ããã䟿å©ãªç¹æ®ã¢ããªã±ãŒã·ã§ã³ã¯ãããŸãããPhoRentã¯ãã¬ã³ã¿ã«çšã«æäŸãããæ©åšããã°ããèŠèŠçã«ç¢ºèªããæ¡ä»¶ãæ¯èŒããŠã泚æããã®ã«åœ¹ç«ã¡ãŸãã
ã¬ã³ã¿ã«ååã¯ã«ããŽãªãŒã«åãããŠããŸããã¬ã³ã¿ã«äŸ¡æ Œãšã¡ãŒã«ãŒã«ããæ€çŽ¢ãšãã£ã«ã¿ãŒããããŸããè³è²žåäœã®æ°ãæå®ã§ããŸã-æ倧å€ã¯ããŒã¿ããŒã¹ã®çŸåšã®æ®é«ã«ãã£ãŠå¶éãããŸãã泚æã§ãªãŒã¹ã®éå§æ¥ãæå®ããããšãã§ããŸããéžæããããã¹ãŠã®ã¢ã€ãã ãæåã«ã«ãŒãã«å ¥ãããã次ã«ãŠãŒã¶ãŒãåèšã¬ã³ã¿ã«æéãæ¯æããŸãããããã¡ã€ã«ã«ã¯ãéå»ã®æ³šæã«é¢ããæ å ±ãæ ŒçŽãããŸãã
ãã ãããã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠãåçæ©æã ãã§ãªããäžè¬ã«ããããç©åãã¬ã³ã¿ã«ã§ããŸãïŒãããããäžåç£ãšèŒžéãé€ããŠããããã®åžå Žã»ã°ã¡ã³ãã«ã¯ãã§ã«æ·±å»ãªããŒã«ããããŸãïŒããããã£ãŠãPhoRentã¯ãäœããåããå¿ èŠããã人ã ãã§ãªããã¯ã©ã€ã¢ã³ãããŒã¹ãæ¡å€§ããå¿ èŠãããäŒæ¥ã«ãšã£ãŠã䟿å©ãªããŒã«ã«ãªããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ãã¯ãããžãŒã䜿çšããŠäœæãããŸããïŒ
- è¿ éã
- KingFisherã
- Node.jsã
- FireBaseã
- FireStoreã
ã¢ããªã±ãŒã·ã§ã³ã¯ãMVPã¢ãŒããã¯ãã£ãã¿ãŒã³ã«åŸã£ãŠæ§ç¯ãããŸããããã¯æ§ã ãªã¿ã¹ã¯ã®ããã®ãµãŒãã¹ãè¿œå ããŸããïŒ
- ãŠã£ã³ããŠãäœæããããã®ModuleBuilderã
- ãããã®éã®éä¿¡ãšé·ç§»ã®ããã®ã«ãŒã¿ãŒã
- ãããã¯ãŒã¯çšã®NetworkServiceã
ã¹ããŒãªãŒããŒãã¯äœ¿çšãããªãã£ãããããã¹ãŠã®é·ç§»ã¯ã³ãŒãã§è¡ãããäžéšã®ããŒãžã¯xibã§ã¬ã³ããªã³ã°ãããŸãã
顧客ãšæ³šæã«é¢ããæ å ±ãä¿åããããã«ããµãŒããŒéšåãNode.jsã§èšè¿°ãããFireStoreã䜿çšãããŸããåãFireStoreã«ç»åã®URLãä¿åãããç»åèªäœãFireBaseã¹ãã¬ãŒãžã«ãããKingFisherã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã«ããŒããããŸãããŠãŒã¶ãŒã¯FirebaseAuthãéããŠèªèšŒãããŸãã
補åãå«ãŸããè¡šã®ã»ã«ã®äžéšã¯ãç¹å®ã®äŒç€Ÿã®ããŒãºã«å¿ããŠã«ã¹ã¿ãã€ãºã§ããŸãããŠãŒã¶ãŒãããã¡ã€ã«ã§ã¯ãã¢ãã¿ãŒãèšå®ã§ããã¡ãŒã«ã¢ãã¬ã¹ãšé»è©±çªå·ã®ãã§ãã¯ããããŸãã
ãããžã§ã¯ãããŒã ïŒElena KacharminaãIlya BuzyrevãAlexander Setrovã
ãããžã§ã¯ãã®ä¿è·ã
TastyThingsæçã¢ããª
èè ã¯ãçŸå³ããæçãšãã®èª¿çãžã®æã«è§ŠçºãããŸããã圌ãã¯ãæ°ã«å ¥ãã®ã¬ã·ãããã¹ãŠæå ã«çœ®ãããã£ãã®ã§ããªãã©ã€ã³ã§äœæ¥ããŠæçã®ã«ããªãŒéãèªåçã«èšç®ã§ãã䟿å©ãªã¢ããªã±ãŒã·ã§ã³ãäœæããŠä¿åããŸããã
TastyThingsã«ã¯ãœãŒã·ã£ã«æ©èœããããŸãããŠãŒã¶ãŒã¯ã¬ã·ããå ±æã§ããŸãããŠãŒã¶ãŒè©äŸ¡ã·ã¹ãã ãšã¬ã·ãã奜ãã«ãªãèœåããããŸãããã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšãããšãå·èµåº«ã ãã§ãªããé£æã䜿ã£ãŠèå³æ·±ãæçã
調çããããšãã§ããŸããFirebaseã¯ãã¬ã·ãããŠãŒã¶ãŒããŒã¿ã®ä¿åãæ¿èªã«äœ¿çšãããŸãã
ã€ã³ã¿ãŒãã§ã€ã¹å šäœãSwiftUIã§äœæãããŸãã
ãããžã§ã¯ãããŒã ïŒAnton UkhanovãIlya Shevchukã
ãããžã§ã¯ãã®ä¿è·ã
* * *
éããªããAndroidéçºãC ++ããã¥ãŒã©ã«ãããã¯ãŒã¯ãããã³ããšã³ãéçºãGoãã€ã³ã¿ãŒãã§ãŒã¹äœæã«ãããæãèå³æ·±ãåæ¥ãããžã§ã¯ãã«ã€ããŠãäŒãããŸããç§ãã¡ã®æè²ãããžã§ã¯ãã®è©³çŽ°ã«ã€ããŠã¯ããã¡ãã®ãªã³ã¯ãã芧ãã ããããããŠãããé »ç¹ã«Technostreamãã£ã³ãã«ã«ã¢ã¯ã»ã¹ããŸããããã°ã©ãã³ã°ãéçºãããã³ãã®ä»ã®åéã«é¢ããæ°ãããã¬ãŒãã³ã°ãããªãå®æçã«è¡šç€ºãããŸãã