ãã¹ãŠã®ãããžã§ã¯ãã«é©åããåç¬ã®ã¢ãžã¥ãŒã«åæŠç¥ã¯ãããŸãããGradle ã¯æè»æ§ãé«ãããããããžã§ã¯ãããŸãšããæ¹æ³ã«ã€ããŠå¶çŽã¯ã»ãšãã©ãããŸããããã®ããŒãžã§ã¯ããã«ãã¢ãžã¥ãŒã« Android ã¢ããªãéçºããéã«äœ¿çšã§ããäžè¬çãªã«ãŒã«ãšãã¿ãŒã³ã®æŠèŠã«ã€ããŠèª¬æããŸãã
é«åé床ãšäœçµå床ã®åå
ã¢ãžã¥ã©ãŒ ã³ãŒãããŒã¹ã®ç¹åŸŽãšããŠãçµå床ãšåé床ã®ããããã£ã®äœ¿çšããããããŸããçµå床ã¯ãã¢ãžã¥ãŒã«ãçžäºã«äŸåããŠãã床åãã瀺ããŸããåé床ã¯ããã®æèã§ã¯ã1 ã€ã®ã¢ãžã¥ãŒã«ã®èŠçŽ ãæ©èœé¢ã§ã©ã®ããã«é¢é£ããŠãããã瀺ããŸããååãšããŠãçµå床ã¯äœããåé床ã¯é«ããªãããã«ããŠãã ããã
- çµå床ãäœããšã¯ãã¢ãžã¥ãŒã«éã®äŸå床ãå¯èœãªéãäœãããããšãæããŸããããã«ããã1 ã€ã®ã¢ãžã¥ãŒã«ã«å¯Ÿãã倿Žãä»ã®ã¢ãžã¥ãŒã«ã«åãŒã圱é¿ããŒããŸãã¯æå°éã«ã§ããŸããã¢ãžã¥ãŒã«ãä»ã®ã¢ãžã¥ãŒã«ã®å éšåäœãèªèããªãããã«ããå¿ èŠããããŸãã
- åé床ãé«ããšã¯ãã¢ãžã¥ãŒã«ãæ§æããã³ãŒãã®éåã 1 ã€ã®ã·ã¹ãã ãšããŠæ©èœããããšãæããŸããã¢ãžã¥ãŒã«ã«ã¯æç¢ºã«å®çŸ©ããã圹å²ãå¿ èŠã§ããŸãç¹å®ã®ãã¡ã€ã³ç¥èã®ç¯å²å ã«ããå¿ èŠããããŸãããµã³ãã«ã®é»åæžç±ã¢ããªã±ãŒã·ã§ã³ã«ã€ããŠèããŠã¿ãŸããããæžç±é¢é£ã®ã³ãŒããšæ¯æãé¢é£ã®ã³ãŒãã¯ç°ãªã 2 ã€ã®æ©èœãã¡ã€ã³ãªã®ã§ãåãã¢ãžã¥ãŒã«å ã§äœµçšããã®ã¯äžé©åãªå ŽåããããŸãã
ã¢ãžã¥ãŒã«ã®çš®é¡
ã¢ãžã¥ãŒã«ãæŽçããæ¹æ³ã¯ãäž»ã«ã¢ããªã®ã¢ãŒããã¯ãã£ã«ãã£ãŠæ±ºãŸããŸããæšå¥šãããã¢ã㪠ã¢ãŒããã¯ãã£ã«æ²¿ã£ãŠã¢ããªã«å°å ¥ã§ããäžè¬çãªã¢ãžã¥ãŒã«ã«ã¯ã次ã®çš®é¡ããããŸãã
ããŒã¿ ã¢ãžã¥ãŒã«
ããŒã¿ ã¢ãžã¥ãŒã«ã«ã¯éåžžããªããžããªãããŒã¿ãœãŒã¹ãã¢ãã«ã¯ã©ã¹ãå«ãŸããŠããŸããããŒã¿ ã¢ãžã¥ãŒã«ã®äž»ãªåœ¹å²ã¯æ¬¡ã® 3 ã€ã§ãã
- ç¹å®ã®ãã¡ã€ã³ã®ãã¹ãŠã®ããŒã¿ãšããžãã¹ ããžãã¯ãã«ãã»ã«åãã: åããŒã¿ ã¢ãžã¥ãŒã«ã¯ãç¹å®ã®ãã¡ã€ã³ã衚ãããŒã¿ã®åŠçãè¡ããŸããé¢é£ããŠãããã®ã§ããã°ãæ°å€ãã®çš®é¡ã®ããŒã¿ãåŠçã§ããŸãã
- ãªããžããªãå€éš API ãšããŠå ¬éãã: ããŒã¿ ã¢ãžã¥ãŒã«ã®å ¬é API ã¯ã¢ããªã®ä»ã®éšåã«ããŒã¿ãå ¬éãã圹å²ãæ ãããããªããžããªã§ãªããã°ãªããŸããã
- ãã¹ãŠã®å®è£
ã®è©³çްãšããŒã¿ãœãŒã¹ãå€éšããèªèã§ããªãããã«ãã: ããŒã¿ãœãŒã¹ã«ã¯ãåãã¢ãžã¥ãŒã«ã®ãªããžããªããã¢ã¯ã»ã¹ã§ããªãããã«ããå¿
èŠããããŸããå€éšããã¯èªèã§ããªããªããŸãããããå®çŸããã«ã¯ãKotlin ã®å
¬éèšå®ããŒã¯ãŒã
private
ãŸãã¯internal
ã䜿çšããŸãã

æ©èœã¢ãžã¥ãŒã«
æ©èœãšã¯ãã¢ããªã®æ©èœã®ç¬ç«ããéšåã®ããšã§ãé垞㯠1 ã€ã®ç»é¢ãŸãã¯äžé£ã®å¯æ¥ã«é¢é£ããç»é¢ïŒç»é²ãããŒã決æžãããŒãªã©ïŒã«å¯Ÿå¿ããŸããã¢ããªã«ããã ã㌠ããã²ãŒã·ã§ã³ãããå Žåãããããã®ãªã³ã¯å ã¯æ©èœã§ããããšãå€ãã§ãã

æ©èœã¯ã¢ããªã®ç»é¢ããªã³ã¯å
ã«é¢é£ä»ããããŸãããã®ãããéåžžããžãã¯ãšç¶æ
ãåŠçããããã«é¢é£ä»ãããã UI ãš ViewModel
ããããŸããã©ã®æ©èœãã1 ã€ã®ãã¥ãŒãŸãã¯ããã²ãŒã·ã§ã³ã®ãªã³ã¯å
ã«ã¯éå®ãããŸãããæ©èœã¢ãžã¥ãŒã«ã¯ããŒã¿ ã¢ãžã¥ãŒã«ã«äŸåããŸãã

ã¢ã㪠ã¢ãžã¥ãŒã«
ã¢ã㪠ã¢ãžã¥ãŒã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãšã³ã㪠ãã€ã³ãã§ãããããã¯æ©èœã¢ãžã¥ãŒã«ã«äŸåããéåžžã¯ã«ãŒã ããã²ãŒã·ã§ã³ã«äœ¿çšãããŸãããã«ã ããªã¢ã³ãã«ããã1 ã€ã®ã¢ã㪠ã¢ãžã¥ãŒã«ãããŸããŸãªãã€ããªã«ã³ã³ãã€ã«ã§ããŸãã

ã¢ããªãè€æ°ã®ããã€ã¹ã¿ã€ãïŒèªåè»ãWearããã¬ããªã©ïŒãã¿ãŒã²ãããšããå Žåã¯ãããããã«ã€ããŠã¢ã㪠ã¢ãžã¥ãŒã«ãå®çŸ©ããŸããããã«ããããã©ãããã©ãŒã åºæã®äŸåé¢ä¿ãåé¢ã§ããŸãã

å ±éã¢ãžã¥ãŒã«
å ±éã¢ãžã¥ãŒã«ïŒã³ã¢ã¢ãžã¥ãŒã«ãšãåŒã°ããŸãïŒã«ã¯ãä»ã®ã¢ãžã¥ãŒã«ãé »ç¹ã«äœ¿çšããã³ãŒããå«ãŸããŠããŸããããã«ããåé·æ§ãäœããªããŸãããŸãããããã®ã¢ãžã¥ãŒã«ãã¢ããªã®ã¢ãŒããã¯ãã£ã®ç¹å®ã®ã¬ã€ã€ã衚ãããšã¯ãããŸãããå ±éã¢ãžã¥ãŒã«ã®äŸã以äžã«ç€ºããŸãã
- UI ã¢ãžã¥ãŒã«: ã¢ããªå ã§ã«ã¹ã¿ã UI èŠçŽ ã粟å¯ãªãã©ã³ãã£ã³ã°ã䜿çšããå Žåã¯ããŠã£ãžã§ãã ã³ã¬ã¯ã·ã§ã³ãã«ãã»ã«åããŠããã¹ãŠã®æ©èœãåå©çšã§ããããã«ã¢ãžã¥ãŒã«åããããšãæ€èšããŠãã ãããããã«ãããè€æ°ã®æ©èœéã§ UI ã®äžè²«æ§ãä¿ã€ããšãã§ããŸããããšãã°ãããŒããäžå 管çãããŠããå Žåããªãã©ã³ãã£ã³ã°æã«æéã®ããããªãã¡ã¯ã¿ãªã³ã°ãåé¿ã§ããŸãã
- ã¢ããªãã£ã¯ã¹ ã¢ãžã¥ãŒã«: ãã©ããã³ã°ã¯ãããžãã¹èŠä»¶ã«ãã£ãŠæ±ºãŸã«ããšãå€ãããœãããŠã§ã¢ ã¢ãŒããã¯ãã£ã«ã€ããŠèæ ®ããå¿ èŠã¯ã»ãŒãããŸãããé¢é£ã®ãªãå€ãã®ã³ã³ããŒãã³ãã§ã¯ãå€ãã®å Žåãã¢ããªãã£ã¯ã¹ ãã©ãã«ãŒã䜿çšãããŸãããã®ãããªå Žåã¯ãå°çšã®ã¢ããªãã£ã¯ã¹ ã¢ãžã¥ãŒã«ãçšæããããšãããããããŸãã
- ãããã¯ãŒã¯ ã¢ãžã¥ãŒã«: å€ãã®ã¢ãžã¥ãŒã«ã§ãããã¯ãŒã¯æ¥ç¶ãå¿ èŠãšããå Žåã¯ãHTTP ã¯ã©ã€ã¢ã³ãã®æäŸã«ç¹åããã¢ãžã¥ãŒã«ã®çšæãæ€èšããŠãã ãããããã¯ãã¯ã©ã€ã¢ã³ããã«ã¹ã¿ã èšå®ãå¿ èŠãšããå Žåã«ç¹ã«äŸ¿å©ã§ãã
- ãŠãŒãã£ãªã㣠ã¢ãžã¥ãŒã«: ãŠãŒãã£ãªãã£ïŒãã«ããŒãšãåŒã°ããŸãïŒã¯éåžžãã¢ããªå šäœã§åå©çšãããå°èŠæš¡ã®ã³ãŒãã§ãããŠãŒãã£ãªãã£ã®äŸãšããŠã¯ããã¹ããã«ããŒãé貚ãã©ãŒããã颿°ãã¡ãŒã«æ€èšŒããŒã«ãã«ã¹ã¿ã æŒç®åãªã©ããããŸãã
ãã¹ã ã¢ãžã¥ãŒã«
ãã¹ã ã¢ãžã¥ãŒã«ã¯ãã¹ãå°çšã® Android ã¢ãžã¥ãŒã«ã§ãããã®ã¢ãžã¥ãŒã«ã«ã¯ããã¹ãã®å®è¡ã«ã®ã¿å¿ èŠã§ãã¢ããªã®å®è¡æã«ã¯äžèŠãªãã¹ãã³ãŒãããã¹ããªãœãŒã¹ããã¹ãäŸåé¢ä¿ãå«ãŸããŸãããã¹ã ã¢ãžã¥ãŒã«ã¯ãã¹ãåºæã®ã³ãŒããã¡ã€ã³ã¢ããªãšåé¢ããããã«äœãããŠãããã¢ãžã¥ãŒã« ã³ãŒãã®ç®¡çãšä¿å®ã容æã«ãªããŸãã
ãã¹ã ã¢ãžã¥ãŒã«ã®ãŠãŒã¹ã±ãŒã¹
次ã®äŸã¯ããã¹ã ã¢ãžã¥ãŒã«ã®å®è£ ãç¹ã«åœ¹ã«ç«ã€ã±ãŒã¹ã衚ããŠããŸãã
å ±æãã¹ãã³ãŒã: ãããžã§ã¯ãã«è€æ°ã®ã¢ãžã¥ãŒã«ããããäžéšã®ãã¹ãã³ãŒããè€æ°ã®ã¢ãžã¥ãŒã«ã«é©çšãããå Žåã¯ããã¹ã ã¢ãžã¥ãŒã«ãäœæããŠã³ãŒããå ±æã§ããŸããããã«ãããéè€ãæé€ããããã¹ãã³ãŒããä¿å®ãããããªããŸããå ±æãã¹ãã³ãŒãã«ã¯ãã«ã¹ã¿ã ã¢ãµãŒã·ã§ã³ããããã£ãŒãªã©ã®ãŠãŒãã£ãªã㣠ã¯ã©ã¹ã颿°ã«å ããã·ãã¥ã¬ãŒãããã JSON ã¬ã¹ãã³ã¹ãªã©ã®ãã¹ãããŒã¿ãå«ããããŸãã
ãã£ãããšãããã«ãæ§æ: ãã¹ã ã¢ãžã¥ãŒã«ã«ãã£ãŠãã¹ãçšã®
build.gradle
ãã¡ã€ã«ãä¿æã§ãããã£ãããšãããã«ãæ§æã«ã§ããŸãããã¹ãã«ã®ã¿é¢é£ããæ§æã®ããã§ã¢ã㪠ã¢ãžã¥ãŒã«ã®build.gradle
ãã¡ã€ã«ãéç¶ãšãªãããšãé²ããŸããçµ±åãã¹ã: ãã¹ã ã¢ãžã¥ãŒã«ã§ã¯ããŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ãŒã¹ãããžãã¹ ããžãã¯ããããã¯ãŒã¯ ãªã¯ãšã¹ããããŒã¿ããŒã¹ ã¯ãšãªãªã©ãã¢ããªã®ããŸããŸãªéšåã®ã€ã³ã¿ã©ã¯ã·ã§ã³ããã¹ãããçµ±åãã¹ããä¿åã§ããŸãã
å€§èŠæš¡ã¢ããª: ãã¹ã ã¢ãžã¥ãŒã«ã¯è€éãªã³ãŒãããŒã¹ãšè€æ°ã®ã¢ãžã¥ãŒã«ãæã€å€§èŠæš¡ã¢ããªã§ç¹ã«åœ¹ã«ç«ã¡ãŸãããã®ãããªã±ãŒã¹ã§ã¯ããã¹ã ã¢ãžã¥ãŒã«ã«ãã£ãŠã³ãŒããæŽçã§ããä¿å®æ§ãæ¹åããŸãã

ã¢ãžã¥ãŒã«éã®éä¿¡
ã¢ãžã¥ãŒã«ãå®å šã«åé¢ãããŠããããšã¯ãŸãã§ãå€ãã®å Žåãä»ã®ã¢ãžã¥ãŒã«ã«äŸåããä»ã®ã¢ãžã¥ãŒã«ãšéä¿¡ããŠããŸããã¢ãžã¥ãŒã«ã飿ºããŠé »ç¹ã«æ å ±ã亀æããå Žåã§ããçµå床ãäœãæããããšãéèŠã§ãã2 ã€ã®ã¢ãžã¥ãŒã«éã®çŽæ¥éä¿¡ã¯ãã¢ãŒããã¯ãã£ã®å¶çŽã®å Žåã®ããã«ãæãŸãããªãå ŽåããããŸãããŸãã埪ç°äŸåé¢ä¿ã®å Žåãªã©ããããäžå¯èœãªå ŽåããããŸãã

ãã®åé¡ã解決ããã«ã¯ã3 ã€ç®ã®ã¢ãžã¥ãŒã«ã§ã¡ãã£ãšãŒã·ã§ã³ 2 ã€ã®ã¢ãžã¥ãŒã«éã®éãã§ãã¡ãã£ãšãŒã¿ ã¢ãžã¥ãŒã«ã¯ãäž¡æ¹ã®ã¢ãžã¥ãŒã«ããã®ã¡ãã»ãŒãžããªãã¹ã³ããå¿ èŠã«å¿ããŠè»¢éã§ããŸãããã®ãµã³ãã«ã¢ããªã§ã¯ãè³Œå ¥æç¶ãç»é¢ã§è³Œå ¥å¯Ÿè±¡ã®æžç±ãèªèããå¿ èŠããããŸããããã¯å¥ã®æ©èœã«å«ãŸããå¥ã®ç»é¢ã§ã€ãã³ããçºçããå Žåã§ãåæ§ã§ãããã®å Žåãã¡ãã£ãšãŒã¿ã¯ãããã²ãŒã·ã§ã³ ã°ã©ããææããã¢ãžã¥ãŒã«ïŒéåžžã¯ã¢ã㪠ã¢ãžã¥ãŒã«ïŒã§ãããã®äŸã§ã¯ãããã²ãŒã·ã§ã³ã䜿çšããNavigation ã³ã³ããŒãã³ãã«ããããŒã æ©èœããæ±ºæžæ©èœã«ããŒã¿ãæž¡ããŸãã
navController.navigate("checkout/$bookId")
決æžå
ã¯ãæžç± ID ãåŒæ°ãšããŠåãåããããã䜿çšããŠæžç±ã«é¢ããæ
å ±ãååŸããŸãããã¹ãã£ããŒã·ã§ã³æ©èœã® ViewModel
å
ã®ããã²ãŒã·ã§ã³åŒæ°ãååŸããã«ã¯ãä¿åæžã¿ç¶æ
ãã³ãã«ã䜿çšããŸãã
class CheckoutViewModel(savedStateHandle: SavedStateHandle, âŠ) : ViewModel() {
val uiState: StateFlow<CheckoutUiState> =
savedStateHandle.getStateFlow<String>("bookId", "").map { bookId ->
// produce UI state calling bookRepository.getBook(bookId)
}
âŠ
}
ããã²ãŒã·ã§ã³åŒæ°ãšããŠãªããžã§ã¯ããæž¡ããªãããã«ããŠãã ããã代ããã«ãããŒã¿ã¬ã€ã€ãŒããç®çã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããŠèªã¿èŸŒãããã«æ©èœã§äœ¿çšãããã·ã³ãã«ãª ID ã䜿çšããŸããããã«ãããçµå床ãäœãæããããšãã§ãããä¿¡é Œã§ããå¯äžã®æ å ±æºãã®ååãéµå®ã§ããŸãã
以äžã®äŸã§ã¯ãäž¡æ¹ã®æ©èœã¢ãžã¥ãŒã«ãåãããŒã¿ ã¢ãžã¥ãŒã«ã«äŸåããŠããŸããããã«ãããã¡ãã£ãšãŒã¿ ã¢ãžã¥ãŒã«ã転éããå¿ èŠãããããŒã¿éãæå°éã«æããã¢ãžã¥ãŒã«éã®çµå床ãäœãæããããšãã§ããŸããã¢ãžã¥ãŒã«ã¯ãªããžã§ã¯ããæž¡ã代ããã«ãããªããã£ã ID ã亀æããå ±æããŒã¿ ã¢ãžã¥ãŒã«ãããªãœãŒã¹ãèªã¿èŸŒã¿ãŸãã

äŸåé¢ä¿ã®é転
äŸåé¢ä¿ã®é転ãšã¯ãæœè±¡åãå ·äœçãªå®è£ ããåé¢ããããã«ã³ãŒããæŽçããããšã§ãã
- æœè±¡å: ã¢ããªå ã®ã³ã³ããŒãã³ããŸãã¯ã¢ãžã¥ãŒã«ãçžäºã«ããåãããæ¹æ³ãå®çŸ©ããã³ã³ãã©ã¯ããæœè±¡åã¢ãžã¥ãŒã«ã«ã¯ãã·ã¹ãã ã® API ãå®çŸ©ãããã€ã³ã¿ãŒãã§ãŒã¹ãšã¢ãã«ãå«ãŸããŠããŸãã
- å ·äœçãªå®è£ : æœè±¡åã¢ãžã¥ãŒã«ã«äŸåããæœè±¡åã®åäœãå®è£ ããã¢ãžã¥ãŒã«ã
æœè±¡åã¢ãžã¥ãŒã«ã§å®çŸ©ãããåäœã«äŸåããã¢ãžã¥ãŒã«ã¯ãç¹å®ã®å®è£ ã§ã¯ãªããæœè±¡åèªäœã«ã®ã¿äŸåããå¿ èŠããããŸãã

äŸ
åäœã®ããããŒã¿ããŒã¹ãå¿ èŠãšãªãæ©èœã¢ãžã¥ãŒã«ããããšããŸããæ©èœã¢ãžã¥ãŒã«ã¯ãããŒã¿ããŒã¹ã®å®è£ æ¹æ³ïŒããŒã«ã« Room ããŒã¿ããŒã¹ããªã¢ãŒã Firestore ã€ã³ã¹ã¿ã³ã¹ãªã©ïŒã«ã¯é¢ä¿ãããŸãããå¿ èŠãªã®ã¯ãã¢ããªã±ãŒã·ã§ã³ ããŒã¿ã®ä¿åãšèªã¿åãã®ã¿ã§ãã
ãããå®çŸããããã«ãæ©èœã¢ãžã¥ãŒã«ã¯ç¹å®ã®ããŒã¿ããŒã¹å®è£ ã§ã¯ãªããæœè±¡åã¢ãžã¥ãŒã«ã«äŸåããŸãããã®æœè±¡åã«ãã£ãŠã¢ããªã®ããŒã¿ããŒã¹ API ãå®çŸ©ãããŸããã€ãŸããããŒã¿ããŒã¹ã®æäœæ¹æ³ã«é¢ããã«ãŒã«ãèšå®ãããŸããããã«ãããæ©èœã¢ãžã¥ãŒã«ã¯åºç€ãšãªãå®è£ ã®è©³çŽ°ãææ¡ããŠããªããŠããä»»æã®ããŒã¿ããŒã¹ã䜿çšã§ããŸãã
å ·äœçãªå®è£ ã¢ãžã¥ãŒã«ã¯ãæœè±¡åã¢ãžã¥ãŒã«ã§å®çŸ©ããã API ã®å®éã®å®è£ ãæäŸããŸãããã®ããã«ããã®å®è£ ã¢ãžã¥ãŒã«ã¯æœè±¡åã¢ãžã¥ãŒã«ã«ãäŸåããŸãã
äŸåé¢ä¿ã€ã³ãžã§ã¯ã·ã§ã³
ãããŸã§ã®èª¬æã«ã€ããŠãæ©èœã¢ãžã¥ãŒã«ãšå®è£ ã¢ãžã¥ãŒã«ãã©ã®ããã«é£æºããã®ãçåã«æã人ãããã§ãããããã®çãã¯ãäŸåé¢ä¿ã€ã³ãžã§ã¯ã·ã§ã³ã§ããæ©èœã¢ãžã¥ãŒã«ã¯ãå¿ èŠãªããŒã¿ããŒã¹ ã€ã³ã¹ã¿ã³ã¹ãçŽæ¥äœæãããå¿ èŠãªäŸåé¢ä¿ãæå®ããŸãããããã®äŸåé¢ä¿ã¯å€éšïŒéåžžã¯ã¢ã㪠ã¢ãžã¥ãŒã«ïŒããæäŸãããŸãã
releaseImplementation(project(":database:impl:firestore"))
debugImplementation(project(":database:impl:room"))
androidTestImplementation(project(":database:impl:mock"))
ã¡ãªãã
API ãšãã®å®è£ ãåé¢ãããšã次ã®ãããªã¡ãªããããããŸãã
- äºææ§: API ã¢ãžã¥ãŒã«ãšå®è£ ã¢ãžã¥ãŒã«ãæç¢ºã«åé¢ããããšã«ãããAPI ã䜿çšããã³ãŒãã倿Žããããšãªããåã API ã«è€æ°ã®å®è£ ãéçºããŠåãæ¿ããããšãã§ããŸããããã¯ãç¶æ³ã«ãã£ãŠç°ãªãæ©èœãåäœãå¿ èŠãªã·ããªãªã§ç¹ã«åœ¹ç«ã¡ãŸããããšãã°ããã¹ãçšã®ã¢ãã¯å®è£ ãšæ¬çªç°å¢çšã®å®éã®å®è£ ãæ¯èŒã§ããŸãã
- åé¢: åé¢ãšã¯ãæœè±¡åã䜿çšããã¢ãžã¥ãŒã«ãç¹å®ã®ãã¯ãããžãŒã«äŸåããªããªãããšãæããŸããåŸã§ããŒã¿ããŒã¹ã Room ãã Firestore ã«å€æŽããå Žåã倿Žã¯ãžã§ããè¡ãç¹å®ã®ã¢ãžã¥ãŒã«ïŒå®è£ ã¢ãžã¥ãŒã«ïŒã§ã®ã¿è¡ãããããŒã¿ããŒã¹ã® API ã䜿çšããä»ã®ã¢ãžã¥ãŒã«ã«ã¯åœ±é¿ããªãããã倿Žã¯ç°¡åã«ã§ããŸãã
- ãã¹ãã®å®¹ææ§: API ãå®è£ ããåé¢ããããšã§ããã¹ããå€§å¹ ã«ç°¡åã«ãªããŸããAPI ã³ã³ãã©ã¯ãã«å¯ŸããŠãã¹ãã±ãŒã¹ãäœæã§ããŸãããŸããããŸããŸãªå®è£ ã䜿çšããŠãã¢ãã¯å®è£ ãªã©ã®ããŸããŸãªã·ããªãªããšããžã±ãŒã¹ããã¹ãã§ããŸãã
- ãã«ãã®ããã©ãŒãã³ã¹ã®æ¹å: API ãšãã®å®è£ ãå¥ã ã®ã¢ãžã¥ãŒã«ã«åå²ããå Žåãå®è£ ã¢ãžã¥ãŒã«ã倿ŽããŠãããã«ãã·ã¹ãã 㯠API ã¢ãžã¥ãŒã«ã«å¿ããŠã¢ãžã¥ãŒã«ãåã³ã³ãã€ã«ããå¿ èŠããããŸãããããã«ããããã«ãæéãççž®ãããçç£æ§ãåäžããŸããç¹ã«ãã«ãæéãé·ããªãããå€§èŠæš¡ãªãããžã§ã¯ãã§ãã®åŸåã¯é¡èã§ãã
åé¢ãã¹ãæç¹
次ã®å Žåã¯ãAPI ã®å®è£ ãã API ãåé¢ããããšãããããããŸãã
- 倿§ãªæ©èœ: ã·ã¹ãã ã®äžéšãè€æ°ã®æ¹æ³ã§å®è£ ã§ããå Žåã¯ãæç¢ºãª API ã䜿çšããããšã§ãããŸããŸãªå®è£ ã®äºææ§ãç¶æã§ããŸããããšãã°ãOpenGL ã Vulkan ã䜿çšããã¬ã³ããªã³ã° ã·ã¹ãã ããPlay ãŸãã¯èªç€Ÿã®èª²é API ãšé£æºã§ãã課éã·ã¹ãã ã䜿çšã§ããŸãã
- è€æ°ã®ã¢ããªã±ãŒã·ã§ã³: ãã©ãããã©ãŒã éã§å ±æãããæ©èœãåããè€æ°ã®ã¢ããªãéçºããå Žåã¯ãå ±éã® API ãå®çŸ©ãããã©ãããã©ãŒã ããšã«ç¹å®ã®å®è£ ãéçºã§ããŸãã
- ç¬ç«ããããŒã : åé¢ã«ãããç°ãªãããããããŒãããŒã ãã³ãŒãããŒã¹ã®ç°ãªãéšåã«ã€ããŠåæã«äœæ¥ã§ããŸããããããããŒã¯ API ã³ã³ãã©ã¯ããçè§£ããæ£ãã䜿çšããå¿ èŠããããŸãããä»ã®ã¢ãžã¥ãŒã«ã®å®è£ ã®è©³çŽ°ãæ°ã«ããå¿ èŠã¯ãããŸããã
- å€§èŠæš¡ãªã³ãŒãããŒã¹: ã³ãŒãããŒã¹ãå€§èŠæš¡ãªå Žåãè€éãªå ŽåãAPI ãå®è£ ããåé¢ããããšã§ãã³ãŒãã®ç®¡çã容æã«ãªããŸããããããããšã§ãã³ãŒãããŒã¹ããã现ãããçè§£ãããããã¡ã³ããã³ã¹ããããåäœã«åããããšãã§ããŸãã
å°å ¥æ¹æ³
äŸåé¢ä¿ã®é転ãå®è£ ããæé ã¯æ¬¡ã®ãšããã§ãã
- æœè±¡åã¢ãžã¥ãŒã«ãäœæãã: ãã®ã¢ãžã¥ãŒã«ã«ã¯ãæ©èœã®åäœãå®çŸ©ãã APIïŒã€ã³ã¿ãŒãã§ãŒã¹ãšã¢ãã«ïŒãå«ãŸããŠããå¿ èŠããããŸãã
- å®è£
ã¢ãžã¥ãŒã«ãäœæãã: å®è£
ã¢ãžã¥ãŒã«ã¯ API ã¢ãžã¥ãŒã«ã«äŸåããæœè±¡åã®åäœãå®è£
ããå¿
èŠããããŸãã
å³ 10. å®è£ ã¢ãžã¥ãŒã«ã¯æœè±¡åã¢ãžã¥ãŒã«ã«äŸåããŸãã - äžäœã¢ãžã¥ãŒã«ãæœè±¡åã¢ãžã¥ãŒã«ã«äŸåããã: ã¢ãžã¥ãŒã«ãç¹å®ã®å®è£
ã«çŽæ¥äŸåãããã®ã§ã¯ãªããæœè±¡åã¢ãžã¥ãŒã«ã«äŸåãããŸããäžäœã¢ãžã¥ãŒã«ã¯å®è£
ã®è©³çްãç¥ã£ãŠããå¿
èŠã¯ãªããã³ã³ãã©ã¯ãïŒAPIïŒã®ã¿ãå¿
èŠã§ãã
å³ 11. äžäœã¢ãžã¥ãŒã«ã¯å®è£ ã§ã¯ãªãæœè±¡åã«äŸåããŸãã - å®è£
ã¢ãžã¥ãŒã«ãæäŸãã: æåŸã«ãäŸåé¢ä¿ã®å®éã®å®è£
ãæå®ããå¿
èŠããããŸããå
·äœçãªå®è£
ã¯ãããžã§ã¯ãã®èšå®ã«ãã£ãŠç°ãªããŸãããéåžžã¯ã¢ã㪠ã¢ãžã¥ãŒã«ã䜿çšããããšãããããããŸããå®è£
ãæäŸããã«ã¯ãéžæãããã«ã ããªã¢ã³ããŸãã¯ãã¹ã ãœãŒã¹ã»ãããžã®äŸåé¢ä¿ãšããŠæå®ããŸãã
å³ 12. ã¢ã㪠ã¢ãžã¥ãŒã«ã¯å®éã®å®è£ ãæäŸããŸãã
äžè¬çãªãã¹ã ãã©ã¯ãã£ã¹
åé ã§è¿°ã¹ãããã«ããã«ãã¢ãžã¥ãŒã« ã¢ããªãéçºããæ¹æ³ãšããŠå¯äžã®æ£è§£ã¯ãããŸãããå€ãã®ãœãããŠã§ã¢ ã¢ãŒããã¯ãã£ãšåæ§ã«ãã¢ããªãã¢ãžã¥ãŒã«åããæ¹æ³ãæ°å€ãååšããŸããããã§ãã以äžã®æšå¥šäºé ã«åŸãããšã§ãã³ãŒãã®å¯èªæ§ãä¿å®æ§ããã¹ãã®å®¹ææ§ãåäžããŸãã
èšå®ã®äžè²«æ§ãç¶æãã
ã©ã®ã¢ãžã¥ãŒã«ã§ããèšå®ãªãŒããŒããããçºçããŸããã¢ãžã¥ãŒã«æ°ãäžå®ã®ãããå€ã«éãããšãäžè²«ããèšå®ã®ç®¡çãé£ãããªããŸããããšãã°ãåã¢ãžã¥ãŒã«ã§åãããŒãžã§ã³ã®äŸåé¢ä¿ã䜿çšããããšãéèŠã§ããäŸåé¢ä¿ã®ããŒãžã§ã³ãäžããããã ãã«å€æ°ã®ã¢ãžã¥ãŒã«ãæŽæ°ããå¿ èŠãããå Žåãäœæ¥éãå¢ããã ãã§ãªããééããçããå¯èœæ§ãé«ããªããŸãããã®åé¡ã解決ããã«ã¯ãGradle ã®ããããã®ããŒã«ã䜿çšããŠèšå®ãäžå åããŸãã
- ããŒãžã§ã³ ã«ã¿ãã°: åæäžã« Gradle ã«ãã£ãŠçæãããäŸåé¢ä¿ã®åå®å šãªãªã¹ãã§ããããã¯ããã¹ãŠã®äŸåé¢ä¿ã 1 ãæã§å®£èšã§ããããã«ããããã®å Žæã§ããããžã§ã¯ãå ã®ãã¹ãŠã®ã¢ãžã¥ãŒã«ã䜿çšã§ããŸãã
- ã³ã³ãã³ã·ã§ã³ ãã©ã°ã€ã³: ã¢ãžã¥ãŒã«éã§ãã«ãããžãã¯ãå ±æããŸãã
å ¬éç¯å²ãå¯èœãªéãéå®ãã
ã¢ãžã¥ãŒã«ã®å
¬éã€ã³ã¿ãŒãã§ãŒã¹ã¯æå°éã«ãšã©ããå¿
èŠãªãã®ããå
¬éããªãããã«ããå¿
èŠããããŸããå®è£
ã®è©³çްãå€éšã«æŒæŽ©ããªãããã«ããªããã°ãªããŸããããã¹ãŠã®å
容ã«ã€ããŠãå¯èœãªéãç¯å²ãéå®ããŸããKotlin ã®å
¬éèšå®ã¹ã³ãŒã private
ãŸã㯠internal
ã䜿çšããŠã宣èšãã¢ãžã¥ãŒã« ãã©ã€ããŒãã«ããŸããã¢ãžã¥ãŒã«ã§äŸåé¢ä¿ã宣èšããå Žåã¯ãapi
ããã implementation
ãåªå
ããŠäœ¿çšããŠãã ãããåè
ã®å Žåãã¢ãžã¥ãŒã«ã䜿çšããåŽã«å¯ŸããŠãäŸåé¢ä¿ã®æšç§»ãå
¬éãããŸããimplementation ã䜿çšãããšãåãã«ããå¿
èŠãªã¢ãžã¥ãŒã«ã®æ°ãå°ãªããªãããããã«ãæéãççž®ãããŸãã
Kotlin ã¢ãžã¥ãŒã«ãš Java ã¢ãžã¥ãŒã«ãåªå ãã
Android Studio ããµããŒãããã¢ãžã¥ãŒã«ã«ã¯ã次㮠3 ã€ã®éèŠãªã¿ã€ãããããŸãã
- ã¢ã㪠ã¢ãžã¥ãŒã«: ã¢ããªã±ãŒã·ã§ã³ã®ãšã³ã㪠ãã€ã³ãã§ãããœãŒã¹ã³ãŒãããªãœãŒã¹ãã¢ã»ããã
AndroidManifest.xml
ãå«ããããšãã§ããŸããã¢ã㪠ã¢ãžã¥ãŒã«ã®åºåã¯ãAndroid App BundleïŒAABïŒãŸã㯠Android Application PackageïŒAPKïŒã§ãã - ã©ã€ãã©ãª ã¢ãžã¥ãŒã«: å 容ã¯ã¢ã㪠ã¢ãžã¥ãŒã«ãšåãã§ãããããã¯ä»ã® Android ã¢ãžã¥ãŒã«ã§äŸåé¢ä¿ãšããŠäœ¿çšãããŠããŸããã©ã€ãã©ãª ã¢ãžã¥ãŒã«ã®åºå㯠Android ArchiveïŒAARïŒã§ãæ§é çã«ã¯ã¢ã㪠ã¢ãžã¥ãŒã«ãšåäžã«ãªããŸãããAndroid ArchiveïŒAARïŒãã¡ã€ã«ã«ã³ã³ãã€ã«ãããåŸã§ä»ã®ã¢ãžã¥ãŒã«ã§äŸåé¢ä¿ãšããŠäœ¿çšã§ããŸããã©ã€ãã©ãª ã¢ãžã¥ãŒã«ã䜿çšãããšãå€ãã®ã¢ã㪠ã¢ãžã¥ãŒã«ã§åãããžãã¯ãšãªãœãŒã¹ãã«ãã»ã«åããŠåå©çšã§ããŸãã
- Kotlin ããã³ Java ã®ã©ã€ãã©ãª: Android ã®ãªãœãŒã¹ãã¢ã»ããããããã§ã¹ã ãã¡ã€ã«ã¯å«ãŸããŠããŸããã
Android ã¢ãžã¥ãŒã«ã«ã¯ãªãŒããŒãããã䌎ããããã§ããã ã Kotlin ãŸã㯠Java ã䜿çšããããšãããããããŸãã