ãã®ã¬ã€ãã§ã¯ãJava ãã€ã¯ããµãŒãã¹ãšã¯äœãããã®èšèšãšäœææ¹æ³ãåŠã³ãŸãããŸããJava ãã€ã¯ããµãŒãã¹ ã©ã€ãã©ãªã«é¢ãã質åãããã€ã¯ããµãŒãã¹ã®äœ¿çšã®å®çŸå¯èœæ§ã«ã€ããŠã説æããŸããJava ãã€ã¯ããµãŒãã¹ã®ç¿»èš³ãšé©å¿: å®è·µã¬ã€ãã
Java ãã€ã¯ããµãŒãã¹: åºæ¬
ãã€ã¯ããµãŒãã¹ãç解ããã«ã¯ããŸããã€ã¯ããµãŒãã¹ã§ã¯ãªããã®ãå®çŸ©ããå¿ èŠããããŸããããã¯ãã¢ããªã¹ãã§ã¯ãããŸããã - Java ã¢ããªã¹: ããã¯äœã§ããããŸããã®é·æãšçæã¯äœã§ãã?Java ã¢ããªã¹ãšã¯äœã§ãã?
ããªããéè¡ããã£ã³ããã¯ã®æ°èäŒæ¥ã§åããŠãããšæ³åããŠãã ãããæ°ããéè¡å£åº§ãéèšããããã«äœ¿çšã§ããã¢ãã€ã« ã¢ããªããŠãŒã¶ãŒã«æäŸããŸããJava ã³ãŒãã§ã¯ãããã«ããã³ã³ãããŒã©ãŒ ã¯ã©ã¹ãååšããŸããç°¡ç¥åãããšæ¬¡ã®ããã«ãªããŸãã@Controller
class BankController {
@PostMapping("/users/register")
public void register(RegistrationForm form) {
validate(form);
riskCheck(form);
openBankAccount(form);
// etc..
}
}
次ã®ããšãè¡ãã«ã¯ã³ã³ãããŒã©ãŒãå¿
èŠã§ãã
- ç»é²ãã©ãŒã ã確èªããŸããã
- ãŠãŒã¶ãŒã®äœæã®ãªã¹ã¯ã確èªããŠãéè¡å£åº§ãæäŸãããã©ããã決å®ããŸããã
- éè¡å£åº§ãéèšããŸããã
BankController
æ®ãã®ãœãŒã¹ãšãšãã«ããããã€ã¡ã³ãçšã® Bank.jar ãŸã㯠Bank.war ãã¡ã€ã«ã«ããã±ãŒãžåãããŸããããã¯ãéè¡ãéå¶ããããã«å¿
èŠãªãã¹ãŠã®ã³ãŒããå«ãå€ãè¯ãã¢ããªã¹ã§ãã倧ãŸããªèŠç©ãããšããŠã.jar (ãŸã㯠.war) ãã¡ã€ã«ã®åæãµã€ãºã¯ 1 ïœ 100 MB ã®ç¯å²ã«ãªããŸããããã§ããµãŒããŒäžã§ .jar ãã¡ã€ã«ãå®è¡ããã ãã§æžã¿ãŸããJava ã¢ããªã±ãŒã·ã§ã³ããããã€ããããã«å¿
èŠãªäœæ¥ã¯ããã ãã§ãã å³ãå·Šäžã®åè§åœ¢: ã¢ãã©ã« (ãªã·ãã¯) ãã³ã¯ java -jar Bank.jar (ã¢ããªãµãŒããŒãžã® cp .war/.ear) ã®ãããã€ã¡ã³ããå³ã®é·æ¹åœ¢: ãã©ãŠã¶ãéããŸãã
Java ã¢ããªã¹ã®åé¡ã¯äœã§ãã?
Java ã¢ããªã¹ã«ã¯æ¬è³ªçã«äœãåé¡ã¯ãããŸããããã ããçµéšäžããããžã§ã¯ãå ã§æ¬¡ã®ããšãèµ·ããããšãããã£ãŠããŸãã- å€ãã®ããã°ã©ããŒãããŒã ãã³ã³ãµã«ã¿ã³ããåããŠããŸã...
- ...éåžžã«ææ§ãªèŠä»¶ãæã€é¡§å®¢ããã®å§åãåããŠãåãäžæ岩ã®äžã§...
- æ°å¹Žä»¥å ã«...
Java ã¢ããªã¹ã®ãµã€ãºãçž®å°ããã«ã¯ã©ãããã°ããã§ãã?
åœç¶ã®çåãçããŸã: ã¢ããªã¹ãã©ã®ããã«å°ããããã? çŸåšãbank.jar 㯠1 ã€ã® JVMã1 ã€ã®ãµãŒããŒäžã® 1 ã€ã®ããã»ã¹ã§å®è¡ãããŠããŸãããã以äžã§ããã以äžã§ããããŸããããããŠä»ã次ã®ãããªè«ççãªèããé ã«æµ®ãã¶ãããããŸãããããããããªã¹ã¯æ€èšŒãµãŒãã¹ã¯äŒç€Ÿã®ä»ã®éšéã§ã䜿çšã§ããã®ã§ããããã¯ãç§ã®ã¢ããªã·ã㯠ãã³ãã³ã° ã¢ããªã±ãŒã·ã§ã³ãšã¯çŽæ¥é¢ä¿ãããŸãããããããã¢ããªã¹ããåãåºããŠå¥ã®è£œåãšããŠå±éããå¿ èŠãããã§ãããã? ã€ãŸããæè¡çã«èšãã°ãå¥ã® Java ããã»ã¹ãšããŠå®è¡ãããŸãããJava ãã€ã¯ããµãŒãã¹ãšã¯äœã§ãã?
å®éã«ã¯ããã®ãã¬ãŒãºã¯ãã¡ãœããåŒã³åºããriskCheck()
BankController ããè¡ãããªãããšãæå³ããŸãããã®ã¡ãœãããŸã㯠Bean ã³ã³ããŒãã³ããšãã®ãã¹ãŠã®è£å©ã¯ã©ã¹ã¯ãç¬èªã® Maven ãŸã㯠Gradle ãããžã§ã¯ãã«ç§»åãããŸãããŸããéè¡ã¢ããªã¹ãšã¯ç¬ç«ããŠå±éãããããŒãžã§ã³ç®¡çäžã«çœ®ãããŸãããã ãããã€ã¯ããµãŒãã¹ã®å®çŸ©ã¯è§£éã®äœå°ãããããããã®æœåºããã»ã¹å
šäœãæ°ãã RiskCheck ã¢ãžã¥ãŒã«èªäœããã€ã¯ããµãŒãã¹ã«å€ããããã§ã¯ãããŸãããããã«ãããããŒã å
ãäŒæ¥å
ã§é »ç¹ã«è°è«ãè¡ãããŸãã
- 5 ïœ 7 ã¯ã©ã¹ã¯ãããžã§ã¯ã ãã€ã¯ãã§ãã?
- 100 ãŸã㯠1000 ã¯ã©ã¹...ããã§ããã€ã¯ãã§ãã?
- ãã€ã¯ããµãŒãã¹ã¯äžè¬çã«ã¯ã©ã¹ã®æ°ã«é¢ä¿ããŸãã?
- ãµã€ãºããã¡ã€ã³ã®å¢çã«é¢ä¿ãªããåå¥ã«ãããã€ããããã¹ãŠã®ãµãŒãã¹ããã€ã¯ããµãŒãã¹ãšåŒã³ãŸãããã
- ãµãŒãã¹ééä¿¡ãã©ã®ããã«èª¿æŽããããèããŠã¿ãŸããããç§ãã¡ã®ãã€ã¯ããµãŒãã¹ã«ã¯ãçžäºã«éä¿¡ããæ¹æ³ãå¿ èŠã§ãã
Java ãã€ã¯ããµãŒãã¹éã®éä¿¡ã確ç«ããã«ã¯ã©ãããã°ããã§ãã?
äžè¬ã«ãåæéä¿¡ãšéåæéä¿¡ã® 2 ã€ã®ãªãã·ã§ã³ããããŸããåæéä¿¡ïŒïŒHTTPïŒ/REST
éåžžããã€ã¯ããµãŒãã¹éã®åæéä¿¡ã¯ãHTTP ããã³ XML ãŸã㯠JSON ãè¿ã REST ã®ãããªãµãŒãã¹ãä»ããŠè¡ãããŸãããã¡ãããä»ã®ãªãã·ã§ã³ããããããããŸãã - å°ãªããšãGoogle ãããã³ã« ãããã¡ãŒãéžæããŠãã ãããå³æã®å¿çãå¿ èŠãªå Žåã¯ãREST éä¿¡ã䜿çšããããšããå§ãããŸãããã®äŸã§ã¯ãå£åº§éèšåã«ãªã¹ã¯æ€èšŒãå¿ èŠãªãããããããŸãã«è¡ãå¿ èŠãããããšã§ãããªã¹ã¯ãã§ãã¯ããªããã°ã¢ã«ãŠã³ãã¯ååšããŸããã以äžã®ããŒã«ã«ã€ããŠã¯ããåæ Java REST åŒã³åºãã«æé©ãªã©ã€ãã©ãªã¯ã©ãããã®ã»ã¯ã·ã§ã³ã§èª¬æããŸããã¡ãã»ãŒãžã³ã° - éåæéä¿¡
éåæãã€ã¯ããµãŒãã¹éä¿¡ã¯ãéåžžãJMS å®è£ ãšã¡ãã»ãŒãžã亀æãããã AMQPãªã©ã®ãããã³ã«ã䜿çšãããããããšã«ãã£ãŠå®çŸãããŸããããã§ãéåžžããšæžããã®ã«ã¯çç±ããããŸããé»åã¡ãŒã«ãš SMTP ã®çµ±åã®æ°ã¯éå°è©äŸ¡ã§ããªããšããŸããããããã«å¯Ÿå¿ããå¿ èŠããªãå Žåã«äœ¿çšããŠãã ãããããšãã°ããŠãŒã¶ãŒããä»ããè³Œå ¥ããã¿ã³ãã¯ãªãã¯ããå Žåãããªãã¯è«æ±æžãçæããããšèããŸãããã®ããã»ã¹ã¯ããŠãŒã¶ãŒã®è³Œå ¥èŠæ±ãšå¿çã®ãµã€ã¯ã«å ã§çºçããã¹ãã§ã¯ãããŸããã以äžã§ã¯ãéåæ Java ã¡ãã»ãŒãžã³ã°ã«æé©ãªããŒã«ã«ã€ããŠèª¬æããŸããäŸ: Java ã§ã® REST API åŒã³åºã
åæãã€ã¯ããµãŒãã¹éä¿¡ãéžæãããšä»®å®ããŸãããã®å Žåãäœã¬ãã«ã® Java ã³ãŒã (äžã§ç€ºãããã®) ã¯æ¬¡ã®ããã«ãªããŸãã(ããã§ã®äœã¬ãã«ãšã¯ããã€ã¯ããµãŒãã¹éä¿¡ã§ã¯ãå®éã® HTTP åŒã³åºããããŠãŒã¶ãŒãæœè±¡åããã¯ã©ã€ã¢ã³ã ã©ã€ãã©ãªãéåžžäœæããããšããäºå®ãæå³ããŸã)ã@Controller
class BankController {
@Autowired
private HttpClient httpClient;
@PostMapping("/users/register")
public void register(RegistrationForm form) {
validate(form);
httpClient.send(riskRequest, responseHandler());
setupAccount(form);
// etc..
}
}
ã³ãŒãã«åºã¥ããŠãBank ãš RiskCheck ãšãã 2 ã€ã® Java (ãã€ã¯ã) ãµãŒãã¹ããããã€ããå¿
èŠãããããšãããããŸãããã®çµæã2 ã€ã® JVM ããã»ã¹ãå®è¡ãããããšã«ãªããŸãã Java ãã€ã¯ããµãŒãã¹ ãããžã§ã¯ãã®éçºã«å¿
èŠãªã®ã¯ããã ãã§ãã1 ã€ã®ã¢ããªã·ã㯠ãããžã§ã¯ãã§ã¯ãªããããå°ããªãã£ã³ã¯ (.jar ãŸã㯠.war ãã¡ã€ã«) ãæ§ç¯ããŠãããã€ããã ãã§ãããã¢ããªã¹ãã©ã®ããã«ãã€ã¯ããµãŒãã¹ã«åå²ããã¹ãã?ããšãã質åã«å¯Ÿããçãã¯äŸç¶ãšããŠäžæã§ãããããã®ããŒã¹ã¯ã©ããããå°ããå¿
èŠããããŸãã?æ£ãããµã€ãºã決å®ããã«ã¯ã©ãããã°ããã§ãã? 確èªãããã
Java ãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£
å®éãäŒæ¥ã¯ããŸããŸãªæ¹æ³ã§ãã€ã¯ããµãŒãã¹ ãããžã§ã¯ããéçºããŠããŸãããã®ã¢ãããŒãã¯ãæ¢åã®ã¢ããªã¹ããã€ã¯ããµãŒãã¹ ãããžã§ã¯ãã«å€æããããšããŠããã®ãããããšããããžã§ã¯ããæåããéå§ããããšããŠããã®ãã«ãã£ãŠç°ãªããŸããã¢ããªã¹ãããã€ã¯ããµãŒãã¹ãž
æãè«ççãªã¢ã€ãã¢ã® 1 ã€ã¯ãæ¢åã®ã¢ããªã¹ãããã€ã¯ããµãŒãã¹ãæœåºããããšã§ããããã§ã®æ¥é èŸãmicroãã¯ãå®éã«ã¯ãæœåºããããµãŒãã¹ãæ¬åœã«å°ããããšãæå³ããããã§ã¯ãªããå¿ ãããããã§ããããã§ã¯ãªãããšã«æ³šæããŠãã ãããçè«çèæ¯ãèŠãŠã¿ãŸããããã¢ã€ãã¢: ã¢ããªã¹ããã€ã¯ããµãŒãã¹ã«åå²ãã
ãã€ã¯ããµãŒãã¹ã®ã¢ãããŒãã¯ã¬ã¬ã·ãŒ ãããžã§ã¯ãã«é©çšã§ããŸããã ãããã:- ã»ãšãã©ã®å Žåããã®ãããªãããžã§ã¯ãã¯ç¶æãå€æŽãæ¡åŒµããããšãå°é£ã§ãã
- éçºè ãã管çè ãŸã§ã誰ããç°¡çŽ åãæãã§ããŸãã
- ãã¡ã€ã³ã®å¢çãïŒæ¯èŒçïŒæ確ã§ããã€ãŸãããœãããŠã§ã¢ãäœããã¹ãããæ£ç¢ºã«ç¥ã£ãŠããŸãã
- ãããã£ãŠããŠãŒã¶ãŒ ããŒã¿ (ååãäœæãé»è©±çªå·ãªã©) ã®åŠçãââå¥ã®ãã€ã¯ããµãŒãã¹ãã¢ã«ãŠã³ã管çãã«åé¢ããã®ãåççã§ãã
- ãããã¯ããŠãŒã¶ãŒã®ãªã¹ã¯ ã¬ãã«ããã§ãã¯ããåè¿°ã®ããªã¹ã¯ ãã§ãã«ãŒ ã¢ãžã¥ãŒã«ãã¯ãä»ã®å€ãã®ãããžã§ã¯ããäŒç€Ÿã®éšéã§ã䜿çšã§ããŸãã
- ãŸãã¯ãè«æ±æžã PDF 圢åŒãŸãã¯ã¡ãŒã«ã§éä¿¡ããè«æ±ã¢ãžã¥ãŒã«ã
ã¢ã€ãã¢ã®å®è£ : ä»ã®äººã«ãã£ãŠããã
äžã§èª¬æããã¢ãããŒãã¯ãçŽã UML ã®ãããªå³ã«é©ããŠããŸãããã ãããã¹ãŠãããã»ã©åçŽã§ã¯ãããŸããããã®å®éã®å®è£ ã«ã¯ã綿å¯ãªæè¡çæºåãå¿ èŠã§ããã¢ããªã¹ããäœãæœåºãããšãããã«ã€ããŠã®ç§ãã¡ã®ç解ãšæœåºããã»ã¹èªäœã®éã«ã¯ã倧ããªã®ã£ããããããŸããã»ãšãã©ã®ãšã³ã¿ãŒãã©ã€ãº ãããžã§ã¯ãã¯ãéçºè ããããšãã° 7 幎åã®ããŒãžã§ã³ã® Hibernate ãæ°ããããŒãžã§ã³ã«ã¢ããã°ã¬ãŒãããããšãæãã段éã«éããŠããŸããã©ã€ãã©ãªãããã«äŒŽã£ãŠæŽæ°ãããŸãããäœããå£ããŠããŸãå±éºæ§ãéåžžã«ãããŸããã§ã¯ããã®åãéçºè ããããŒã¿ããŒã¹ ãã©ã³ã¶ã¯ã·ã§ã³ã®å¢çãäžæçãªå€ä»£ã®ã¬ã¬ã·ãŒ ã³ãŒããæãäžããŠãæ確ã«å®çŸ©ããããã€ã¯ããµãŒãã¹ãæœåºããå¿ èŠãããã®ã§ãããã? å€ãã®å Žåããã®åé¡ã¯éåžžã«è€éã§ããã¯ã€ãããŒãã建ç¯äŒè°ã§ã¯ã解決ãã§ããŸããã Twitter éçºè @simonbrown ã®èšèãåŒçšãããšã ããã¯äœåºŠã§ãèšããŸã...人ã ãã¢ããªã¹ãæ£ããæ§ç¯ã§ããªãå Žåããã€ã¯ããµãŒãã¹ã¯åœ¹ã«ç«ã¡ãŸããã ãµã€ã¢ã³ã»ãã©ãŠã³ãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£ã«åºã¥ããŠãŒããããããžã§ã¯ããäœæãã
æ°ãã Java ãããžã§ã¯ãã®å Žåãåã®éšåã® 3 ã€ã®çªå·ä»ããã€ã³ãã¯å°ãç°ãªã£ãŠèŠããŸãã- çœçŽã®ç¶æ ããå§ããã®ã§ãã¡ã³ããã³ã¹ããããã®ãè·ç©ãã¯ãããŸããã
- éçºè ã¯ãå°æ¥çã«ã¯ç©äºãã·ã³ãã«ã«ããŠãããããšèããŠããŸãã
- åé¡: ãã¡ã€ã³å¢çã®å šäœåãéåžžã«ææ§ã§ãããœãããŠã§ã¢ãå®éã«äœãè¡ãã¹ãããããããŸãã (ãã³ã: ã¢ãžã£ã€ã« ;))
æè¡çãªãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£
æåã®ç¹ã¯éçºè ã«ãšã£ãŠæãæçœãªããã§ãããããã匷ãæšå¥šããªã人ãããŸããHadi Hariri æ°ã¯ãIntelliJ ã§ã®ãExtract Microserviceããªãã¡ã¯ã¿ãªã³ã°ãæšå¥šããŠããŸãã次ã®äŸã¯éåžžã«åçŽåãããŠããŸãããå®éã®ãããžã§ã¯ãã§èŠ³å¯ãããå®è£ ã¯ãæ®å¿µãªããããã®äŸããããã»ã©é¢ããŠããŸããã ãã€ã¯ããµãŒãã¹ä»¥å@Service
class UserService {
public void register(User user) {
String email = user.getEmail();
String username = email.substring(0, email.indexOf("@"));
// ...
}
}
éšåæåå Java ãã€ã¯ããµãŒãã¹ã䜿çšããå Žå
@Service
class UserService {
@Autowired
private HttpClient client;
public void register(User user) {
String email = user.getEmail();
//ÑепеÑÑ Ð²ÑзÑваеЌ substring microservice via http
String username = httpClient.send(substringRequest(email), responseHandler());
// ...
}
}
ã€ãŸããæ確ãªçç±ããªããæ¬è³ªçã« Java ã¡ãœããåŒã³åºãã HTTP åŒã³åºãã«ã©ããããŠããããšã«ãªããŸãããã ãããã®çç±ã® 1 ã€ã¯ãçµéšäžè¶³ãš Java ãã€ã¯ããµãŒãã¹ ã¢ãããŒãã匷å¶ããããšããããšã§ããæšå¥šäºé
: ããã¯è¡ããªãã§ãã ããã
ã¯ãŒã¯ãããŒæåã®ãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£
次ã«äžè¬çãªã¢ãããŒãã¯ãJava ãã€ã¯ããµãŒãã¹ãã¯ãŒã¯ãã㌠ããŒã¹ã®ã¢ãžã¥ãŒã«ã«åå²ããããšã§ããå®éã®äŸ: ãã€ãã§ã¯ã(å ¬ç) å»åž«ã®èšºå¯ãåãããšããå»åž«ã¯ããªãã®èšªåãå»ç CRM ã·ã¹ãã ã«èšé²ããå¿ èŠããããŸããä¿éºããæ¯æããåãåãããã«ãå»åž«ã¯ããªãã®æ²»ç (ããã³ä»ã®æ£è ã®æ²»ç) ã«é¢ããããŒã¿ã XML çµç±ã§ä»²ä»æ¥è ã«éä¿¡ããŸãããããŒã«ãŒã¯ãã® XML ãã¡ã€ã«ã調ã¹ãŠã(ç°¡ç¥åããŠ) 次ã®ããã«ããŸãã- æ£ãã XML ãã¡ã€ã«ãåä¿¡ããããã©ããã確èªããŸãã
- ããã¯ããã®åŠçœ®ã®åŠ¥åœæ§ããã§ãã¯ããããšã«ãªããããšãã°ã婊人ç§å»ãã1æ¥ã«3åã®æ¯ã®ã¯ãªãŒãã³ã°åŠçœ®ãåãã1æ³å ã¯ãããçãããããã«èŠããã
- XML ãä»ã®å®åçãªããŒã¿ãšçµã¿åãããŸãã
- XML ãã¡ã€ã«ãä¿éºäŒç€Ÿã«è»¢éããŠæ¯æããéå§ããŸãã
- ãããŠçµæãå»åž«ã«éä¿¡ãããæåããŸãã¯ãæå³ãåãã次第ããã®é²é³ãåéä¿¡ããŠãã ããããšããã¡ãã»ãŒãžãå»åž«ã«æäŸããŸãã
- 1 ã€ã® XML ãã¡ã€ã«ãåŠçããããã« 6 ã€ã®ã¢ããªã±ãŒã·ã§ã³ããããã€ããå¿ èŠããããŸãã?
- ãããã®ãã€ã¯ããµãŒãã¹ã¯æ¬åœã«çžäºã«ç¬ç«ããŠããã®ã§ãããã? ãããããç¬ç«ããŠå°å ¥ã§ããŸãã? ããŒãžã§ã³ã API ã¹ããŒã ãç°ãªãå Žåã¯?
- æ€èšŒãã€ã¯ããµãŒãã¹ãæ©èœããªãå Žåãä¿¡é Œæ§ãã€ã¯ããµãŒãã¹ã¯äœãããŸãã? ã·ã¹ãã ã¯ãŸã æ©èœããŠããŸãã?
- ãããã®ãã€ã¯ããµãŒãã¹ã¯åãããŒã¿ããŒã¹ãå ±æããŸãã (DB ããŒãã«ã«å ±éã®ããŒã¿ãå¿ ãå¿ èŠã§ã)ããããšãããããç¬èªã®ããŒã¿ããŒã¹ãæã£ãŠããŸãã?
- âŠãªã©ãªã©ã
- ã¢ããªã±ãŒã·ã§ã³ã 1 ã€ã ããããã€ããå¿ èŠã¯ãªããå°ãªããšã 6 ã€ãããã€ããå¿ èŠããããŸãã
- ãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£ãã©ããŸã§é²ããããã«ãã£ãŠã¯ãè€æ°ã®ããŒã¿ããŒã¹ããããã€ããå¿ èŠãããå ŽåããããŸãã
- åã·ã¹ãã ããªã³ã©ã€ã³ã§ãããé©åã«åäœããŠããããšã確èªããå¿ èŠããããŸãã
- ãã€ã¯ããµãŒãã¹éã®åŒã³åºããæ¬åœã«åŸ©å åãããããšã確èªããå¿ èŠããããŸã (ãJava ãã€ã¯ããµãŒãã¹ã®åŸ©å åãé«ããæ¹æ³ããåç §)ã
- ãããŠãããŒã«ã«éçºèšå®ããçµ±åãã¹ãã«è³ããŸã§ããã®ã»ããã¢ãããæå³ãããã®ä»ãã¹ãŠã®ããšã
- ããªãã Netflix ã§ã¯ãªãå Žå (ãããããããªã㯠Netflix ã§ã¯ãããŸãã)...
- éçºç°å¢ãéããšã5 ç§ã§ç°¡åã«åŸ©å ã§ããéçšããŒã¿ããŒã¹ãç Žæ£ããã«ãªã¹ ã¢ã³ããŒãåŒãèµ·ãããããªãéåžžã«åŒ·åãªäœæ¥ã¹ãã«ãæã£ãŠããå Žåãé€ããŸãã
- ãããã¯ã@monzo ã®ãããªæ°åã§ãã§ãããããšãã£ãŠ 1500 åã®ãã€ã¯ããµãŒãã¹ãè©ŠããŠã¿ãããšèããŠãã人ãããã§ãããã
GO TO FULL VERSION