1. Webã¢ããªã±ãŒã·ã§ã³ãšãµã€ãã®éã
ç§ã«ãšã£ãŠããµã€ãã¯åºæ¬çã«æçã§éçãªãã®ã§ããäŒç€Ÿã®ååºãã¬ã·ãã®ãµã€ããéœåžããŒã¿ã«ããŸãã¯ãŠã£ãã§ãã ãªã¢ãŒããµãŒããŒã«é 眮ããããªã¯ãšã¹ãã«å¿ããŠãã©ãŠã¶ã«æäŸããããäºåã«æºåãããHTMLãã¡ã€ã«ã®ã»ããã
ãµã€ãã«ã¯ããŸããŸãªéçèŠçŽ ãå«ãŸããŠãããHTMLãã¡ã€ã«ã®ããã«ãã®å Žã§çæãããŸããã ã»ãšãã©ã®å Žåããããã¯åçãCSSãã¡ã€ã«ãJSã¹ã¯ãªããã§ãããä»ã®ãã¡ã€ã«ããããŸãïŒmp3ãmovãcsvãpdfã
ããã°ãé£çµ¡ãã©ãŒã ã®ããååºãããããã®å¹æã®ããã©ã³ãã£ã³ã°ããŒãžãç°¡åã«ããããã«ãµã€ããåç §ããŸãã ãã ããå®å šã«éçãªãµã€ããšã¯ç°ãªãããµã€ãã«ã¯æ¢ã«äœããã®ããžãã¹ããžãã¯ãå«ãŸããŠããŸãã
ãŸããWebã¢ããªã±ãŒã·ã§ã³ã¯æè¡çã«è€éãªãã®ã§ãã ããã§ã¯ããŠãŒã¶ãŒã®èŠæ±ã«å¿ããŠHTMLããŒãžããªã³ã¶ãã©ã€ã§çæãããŸãã ã¡ãŒã«ã¯ã©ã€ã¢ã³ãããœãŒã·ã£ã«ãããã¯ãŒã¯ãæ€çŽ¢ãšã³ãžã³ããªã³ã©ã€ã³ã¹ãã¢ãããžãã¹åããªã³ã©ã€ã³ããã°ã©ã ãªã©ããããã¯ãã¹ãŠWebã¢ããªã±ãŒã·ã§ã³ã§ãã
2. Webã¢ããªã±ãŒã·ã§ã³ãšã¯
Webã¢ããªã±ãŒã·ã§ã³ã¯ããã®äž»èŠã³ã³ããŒãã³ãã®ããŸããŸãªçµã¿åããã«å¿ããŠãããã€ãã®ã¿ã€ãã«åé¡ã§ããŸãã
- ããã¯ãšã³ãïŒã¢ããªã±ãŒã·ã§ã³ã®ããã¯ãšã³ããŸãã¯ãµãŒããŒåŽïŒã¯ãã©ãã«ã§ãé 眮ã§ãããªã¢ãŒãã³ã³ãã¥ãŒã¿ãŒã§å®è¡ãããŸãã PHPãPythonãRubyãCïŒãªã©ã®ããŸããŸãªããã°ã©ãã³ã°èšèªã§äœæã§ããŸãã ãµãŒããŒåŽã®ã¿ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãäœæãããšãã»ã¯ã·ã§ã³éã®ç§»è¡ããã©ãŒã ã®éä¿¡ãããŒã¿ã®æŽæ°ã®çµæãšããŠããµãŒããŒã¯æ°ããHTMLãã¡ã€ã«ãçæãããã©ãŠã¶ãŒã®ããŒãžããªããŒããããŸãã
- ããã³ããšã³ãïŒã¢ããªã±ãŒã·ã§ã³ã®ããã³ããšã³ããŸãã¯ã¯ã©ã€ã¢ã³ãåŽïŒã¯ããŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã§å®è¡ãããŸãã ãã®éšåã¯ãJavascriptããã°ã©ãã³ã°èšèªã§æžãããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒããŒã¿ã1ã»ãã·ã§ã³ããé·ãä¿åããå¿ èŠããªãå Žåãã¯ã©ã€ã¢ã³ãããŒãã®ã¿ã§æ§æã§ããŸãã ããšãã°ãåçç·šéè ãç°¡åãªããã¡ããªã©ã§ãã
- ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAãŸãã¯ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒã ããèå³æ·±ããªãã·ã§ã³ã¯ãããã¯ãšã³ããšããã³ããšã³ãã®äž¡æ¹ã䜿çšãããå Žåã§ãã ãããã®çžäºäœçšã䜿çšããŠããã©ãŠã¶ãŒã§ããŒãžããªããŒãããããšãªãåäœããã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã ãŸãã¯ãåçŽåãããããŒãžã§ã³ã§ã¯ãããŒãã£ã·ã§ã³éã®ç§»è¡ã«ãããªããŒããçºçããŸãããããŒãã£ã·ã§ã³å ã®ã¢ã¯ã·ã§ã³ã¯ãªããŒããªãã§å®è¡ãããŸãã
3. Pyhonãã¬ãŒã ã¯ãŒã¯Djangoå¥åããã¯ãšã³ã
éçºã§ã¯ããã¬ãŒã ã¯ãŒã¯ã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®äœæã«åœ¹ç«ã€æ¢è£œã®ã©ã€ãã©ãªãšããŒã«ã®ã»ããã§ãã ããšãã°ãPythonããã°ã©ãã³ã°èšèªã§èšè¿°ãããDjangoãã¬ãŒã ã¯ãŒã¯ã®åäœåçã説æããŸãã
æåã®ã¹ãããã¯ããŠãŒã¶ãŒããã«ãŒã¿ãŒïŒURLãã£ã¹ãããã£ãŒïŒãžã®èŠæ±ã§ãããã®èŠæ±ã¯ãã©ã®é¢æ°ãåŒã³åºããŠèŠæ±ãåŠçãããã決å®ããŸãã 決å®ã¯ãæ£èŠè¡šçŸãšé¢æ°ã®ååã§æ§æãããèŠåã®ãªã¹ãã«åºã¥ããŠè¡ãããŸãããã®ãããªURLã®å Žåããã®ãããªé¢æ°ã§ãã
ã«ãŒã¿ãŒã«ãã£ãŠåŒã³åºãããæ©èœã¯ããã¥ãŒãšåŒã°ããŸãã ä»»æã®ããžãã¹ããžãã¯ãå éšã«å«ããããšãã§ããŸãããã»ãšãã©ã®å Žåã次ã®2ã€ã®ãã¡ã®1ã€ã§ããããŒã¿ã¯ããŒã¿ããŒã¹ããååŸãããæºåãããŠåé¢ã«è¿ãããŸãã ãŸãã¯ããªã¯ãšã¹ããäœããã®ãã©ãŒã ããã®ããŒã¿ãšãšãã«éä¿¡ãããå Žåããã®ããŒã¿ã¯ãã§ãã¯ãããŠããŒã¿ããŒã¹ã«ä¿åãããŸãã
ã¢ããªã±ãŒã·ã§ã³ããŒã¿ã¯ããŒã¿ããŒã¹ïŒDBïŒã«ä¿åãããŸãã æãäžè¬çã«äœ¿çšããããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã ããã¯ãå®çŸ©æžã¿ã®åãæã€ããŒãã«ãããããããã®ããŒãã«ãåã®1ã€ãä»ããŠçžäºæ¥ç¶ãããŠããå Žåã§ãã
ããŒã¿ããŒã¹å ã®ããŒã¿ã¯ãäœæãèªã¿åããå€æŽãããã³åé€ã§ããŸãã ãããã®ã¢ã¯ã·ã§ã³ã瀺ãããã«ãCRUDïŒRead Read Update DeleteïŒãšããç¥èªã«åºãããããšããããŸãã ããŒã¿ããŒã¹å ã®ããŒã¿ãç §äŒããã«ã¯ãç¹å¥ãªSQLèšèªïŒæ§é åç §äŒèšèªïŒã䜿çšãããŸãã
Djangoã§ã¯ãããŒã¿ããŒã¹ãæäœããããã«ã¢ãã«ã䜿çšãããŸãã ãããã䜿çšãããšãéåžžã®pythonéçºè ã«å¯ŸããŠããŒãã«ãèšè¿°ããã¯ãšãªãå®è¡ã§ããŸããããã¯ã¯ããã«äŸ¿å©ã§ãã ãã®å©äŸ¿æ§ã®ããã«æ¯æãå¿ èŠããããŸãããã®ãããªã¯ãšãªã¯ãçŽç²ãªSQLã䜿çšããå Žåã«æ¯ã¹ãŠé ããæ©èœãå¶éãããŸãã
ããŒã¿ããŒã¹ããåä¿¡ããããŒã¿ã¯ãããã³ããžã®éä¿¡çšã«æºåãããŸãã ãã³ãã¬ãŒãã«çœ®ãæããŠãHTMLãã¡ã€ã«ãšããŠéä¿¡ã§ããŸãã ãã ãã1ããŒãžã®ã¢ããªã±ãŒã·ã§ã³ã®å Žåãããã¯ãã¹ãŠã®JSã¹ã¯ãªãããæ¥ç¶ãããŠããHTMLããŒãžãçæããããšãã«1åã ãçºçããŸãã ãã®ä»ã®å ŽåãããŒã¿ã¯ã·ãªã¢ã«åãããJSON圢åŒã§éä¿¡ãããŸãã
4.ããã³ããšã³ããšãåŒã°ããJavascriptãã¬ãŒã ã¯ãŒã¯
ã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã€ã¢ã³ãéšåã¯ãJavascriptïŒJSïŒããã°ã©ãã³ã°èšèªã§èšè¿°ããããŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã§å®è¡ãããã¹ã¯ãªããã§ãã 以åã¯ããã¹ãŠã®ã¯ã©ã€ã¢ã³ãããžãã¯ã¯JQueryã©ã€ãã©ãªã®äœ¿çšã«åºã¥ããŠããŸãããããã«ãããDOMãããŒãžäžã®ã¢ãã¡ãŒã·ã§ã³ãæäœããAJAXãªã¯ãšã¹ããè¡ãããšãã§ããŸãã
DOMïŒããã¥ã¡ã³ããªããžã§ã¯ãã¢ãã«ïŒã¯ãHTMLããŒãžã®æ§é ã§ãã DOMã®æäœã¯ãHTMLã¿ã°ã®æ€çŽ¢ãè¿œå ãå€æŽã移åãããã³åé€ã§ãã
AJAXïŒéåæJavaScriptããã³XMLïŒã¯ããµãŒããŒãžã®éåæïŒããŒãžããªããŒãããã«ïŒãªã¯ãšã¹ããè¡ããããŒã¿ã亀æã§ããããã«ããæè¡ã®äžè¬çãªååã§ãã Webã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã€ã¢ã³ãéšåãšãµãŒããŒéšåã¯ç°ãªãããã°ã©ãã³ã°èšèªã§èšè¿°ãããŠãããããæ å ±ã亀æããã«ã¯ãæ ŒçŽãããŠããããŒã¿æ§é ïŒãªã¹ããèŸæžãªã©ïŒãJSON圢åŒã«å€æããå¿ èŠããããŸãã
JSONïŒJavaScript Object NotationïŒã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§ããŒã¿ã亀æããããã®æ±çšåœ¢åŒã§ãã ããã¯ãä»»æã®ããã°ã©ãã³ã°èšèªã§äœ¿çšã§ããåçŽãªæååã§ãã
ã·ãªã¢ã«åãšã¯ããªã¹ããŸãã¯èŸæžãJSONæååã«å€æããããšã§ãã äŸïŒ
èŸæžïŒ
{ 'id': 1, 'email': 'mail@example.com' }
ã·ãªã¢ã«åãããæååïŒ
'{"id": 1, "email": "mail@example.com"}'
éã·ãªã¢ã«åãšã¯ãæååããªã¹ããŸãã¯èŸæžã«éå€æããããšã§ãã
DOMãæäœããããšã«ãããããŒãžã®ã³ã³ãã³ããå®å šã«å¶åŸ¡ã§ããŸãã AJAXã䜿çšãããšãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§ããŒã¿ã亀æã§ããŸãã ãããã®ãã¯ãããžãŒã䜿çšãããšãSPAããã§ã«äœæã§ããŸãã ãã ããè€éãªã¢ããªã±ãŒã·ã§ã³ãäœæããå ŽåãjQueryããŒã¹ã®ããã³ããšã³ãã³ãŒãã¯ããã«æ··ä¹±ãæããä¿å®ãé£ãããªããŸãã
幞ããªããšã«ãããã¯ããŒã³ããªãªããããAngularãReactãVueãªã©ã®Javascriptãã¬ãŒã ã¯ãŒã¯ãJQueryã«åã£ãŠä»£ãããŸããã ãããã¯ç°ãªãå²åŠãšæ§æãæã£ãŠããŸããããããã¯ãã¹ãŠãã¯ããã«äŸ¿å©ã«ããã³ããšã³ãã§ããŒã¿ã管çããããšãå¯èœã«ããããŒãžéã®ããã²ãŒã·ã§ã³ãäœæããããã®ãã³ãã¬ãŒããšã³ãžã³ãšããŒã«ãæã£ãŠããŸãã
HTMLãã³ãã¬ãŒãã¯ãç¹å®ã®å€ã®ä»£ããã«å€æ°ã䜿çšãããããŸããŸãªæŒç®åïŒ if ã forã«ãŒããªã©ïŒã䜿çšã§ããã¹ããŒãHTMLããŒãžã§ãã å€æ°ã眮æãããæŒç®åãé©çšããããšãã«ãã³ãã¬ãŒãããHTMLããŒãžãååŸããããã»ã¹ã¯ããã³ãã¬ãŒãã¬ã³ããªã³ã°ãšåŒã°ããŸãã
çµæã®ããŒãžããŠãŒã¶ãŒã«è¡šç€ºãããŸãã SPAã®å¥ã®ã»ã¯ã·ã§ã³ã«åãæ¿ããã«ã¯ãå¥ã®ãã³ãã¬ãŒãã䜿çšããŠããŸãã ãã³ãã¬ãŒãã§ä»ã®ããŒã¿ã䜿çšããå¿ èŠãããå Žåããããã®ããŒã¿ã¯ãµãŒããŒããèŠæ±ãããŸãã ããŒã¿ãå«ããã¹ãŠã®ãã©ãŒã éä¿¡ã¯ããµãŒããŒãžã®AJAXãªã¯ãšã¹ãã§ãã
5.ã¯ã©ã€ã¢ã³ããšãµãŒããŒãçžäºã«éä¿¡ããæ¹æ³
ã¯ã©ã€ã¢ã³ãã¯HTTPçµç±ã§ãµãŒããŒãšéä¿¡ããŸãã ãã®ãããã³ã«ã®åºæ¬ã¯ãã¯ã©ã€ã¢ã³ããããµãŒããŒãžã®èŠæ±ãšãã¯ã©ã€ã¢ã³ããããµãŒããŒãžã®å¿çã§ãã
ã¯ãšãªã§ã¯ãéåžžãããŒã¿ãååŸããå Žåã¯GETã¡ãœããã䜿çšããããŒã¿ãå€æŽããå Žåã¯POSTã䜿çšããŸãã ãªã¯ãšã¹ãã«ã¯ããã¹ãïŒãµã€ããã¡ã€ã³ïŒããªã¯ãšã¹ãæ¬æïŒPOSTãªã¯ãšã¹ãã®å ŽåïŒããã®ä»ã®å€ãã®æè¡æ å ±ãå«ãŸããŸãã
ææ°ã®Webã¢ããªã±ãŒã·ã§ã³ã¯ãSSL / TLSæå·åããµããŒãããHTTPã®æ¡åŒµããŒãžã§ã³ã§ããHTTPSãããã³ã«ã䜿çšããŸãã æå·åãããããŒã¿äŒéãã£ãã«ã®äœ¿çšã¯ããã®ããŒã¿ã®éèŠæ§ã«é¢ä¿ãªããã€ã³ã¿ãŒãããäžã§è¯ã圢ã«ãªããŸããã
HTTPã®åã«è¡ãããå¥ã®èŠæ±ããããŸãã ããã¯DNSïŒãã¡ã€ã³ããŒã ã·ã¹ãã ïŒã¯ãšãªã§ãã èŠæ±ããããã¡ã€ã³ããã€ã³ããããŠããIPã¢ãã¬ã¹ãååŸããå¿ èŠããããŸãã ãã®æ å ±ã¯ãã©ãŠã¶ã«ä¿åããããããããã«æéãè²»ããå¿ èŠã¯ãããŸããã
ãã©ãŠã¶ããã®ãªã¯ãšã¹ãããµãŒããŒã«å°éããŠããããã«ã¯Djangoã«å°éããŸããã ãŸããNginx WebãµãŒããŒã«ãã£ãŠåŠçãããŸãã éçãã¡ã€ã«ïŒããšãã°ãç»åïŒãèŠæ±ãããå ŽåãNginxèªäœãã¯ã©ã€ã¢ã³ãã«å¿çããŠãããéä¿¡ããŸãã ãªã¯ãšã¹ããéçã§ãªãå ŽåãNginxã¯ãããDjangoã«ãããã·ïŒè»¢éïŒããå¿ èŠããããŸãã
æ®å¿µãªããã圌ã¯ãã®æ¹æ³ãç¥ããŸããã ãããã£ãŠãå¥ã®å±€ã®ããã°ã©ã ã䜿çšãããŸã-ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã ããšãã°ãPythonã¢ããªã±ãŒã·ã§ã³ã®å ŽåãuWSGIãŸãã¯Gunicornã«ãªããŸãã ãããŠä»ã圌ãã¯Djangoã«ãªã¯ãšã¹ããéä¿¡ããŸãã
Djangoã¯ãªã¯ãšã¹ããåŠçããåŸãHTMLããŒãžãŸãã¯ããŒã¿ãå«ãã¬ã¹ãã³ã¹ãšã¬ã¹ãã³ã¹ã³ãŒããè¿ããŸãã ãã¹ãŠãé 調ã§ããã°ãå¿çã³ãŒãã¯200ã§ãã ããŒãžãèŠã€ãããªãå Žåã-404; ãšã©ãŒãçºçãããµãŒããŒããªã¯ãšã¹ããåŠçã§ããªãã£ãå Žåã500ããããã¯æãäžè¬çãªã³ãŒãã§ãã
6. Webã¢ããªã±ãŒã·ã§ã³ã§ã®ãã£ãã·ã¥
Webã¢ããªã±ãŒã·ã§ã³ãšãœãããŠã§ã¢ã®äž¡æ¹ãããã³ã³ã³ãã¥ãŒã¿ãŒãšã¹ããŒããã©ã³ã®ããã»ããµãŒã¬ãã«ã®äž¡æ¹ã«ååšãããç§ãã¡ãåžžã«ééããå¥ã®ãã¯ãããžãŒã
ãã£ãã·ã¥ã¯ãé »ç¹ã«äœ¿çšãããããŒã¿ããå¥ã®æ¹æ³ã§èšç®ãŸãã¯æºåãããã³ã«ããŒã¿ããŒã¹ããåãåºãã®ã§ã¯ãªããããã«ã¢ã¯ã»ã¹ã§ããå Žæã«ä¿åããéçºã®æŠå¿µã§ãã ãã£ãã·ã¥ã®äœ¿çšäŸïŒ
- Djangoã§ã¯ãã¬ããŒãå ã®ãã£ãŒãã®ããŒã¿ãåä¿¡ããããã«èŠæ±ãããŸããã ããŒã¿ããŒã¹ããããŒã¿ãååŸããæºåããã¯ã€ãã¯ã¢ã¯ã»ã¹ã§ããŒã¿ããŒã¹ã«æ ŒçŽããŸãïŒããšãã°ãmemcachedã1æé䜿çšããŸãïŒã 次ã®ãªã¯ãšã¹ãã§ãããã«memcachedããããããååŸããããã³ããšã³ãã«éä¿¡ããŸãã ããŒã¿ã®é¢é£æ§ããªããªã£ãããšãå€æããå Žåãããããç¡å¹ã«ããŸãïŒãã£ãã·ã¥ããåé€ããŸãïŒã
- éçãã¡ã€ã«ã®ãã£ãã·ã¥ã«ã¯ãCDNïŒã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ïŒãããã€ããŒã䜿çšãããŸãã ãããã¯äžçäžã«ãããµãŒããŒã§ãéçãªé åžçšã«æé©åãããŠããŸãã ãµãŒããŒã§ã¯ãªãCDNã«åçããããªãJSã¹ã¯ãªãããé 眮ããæ¹ãå¹ççãªå ŽåããããŸãã
- ãã¹ãŠã®ãã©ãŠã¶ã¯ãããã©ã«ãã§éçãã¡ã€ã«ã®ãã£ãã·ã¥ãæå¹ã«ããŸãã ããã«ããããµã€ããéãã®ã¯åããŠã§ã¯ãªãããã¹ãŠãèããé«éã«èªã¿èŸŒãŸããŸãã éçºè ã«ãšã£ãŠãã€ãã¹ã¯ããã£ãã·ã¥ãæå¹ã«ãããšãã³ãŒãã«å ããããå€æŽãåžžã«ããã«è¡šç€ºããããšã¯éããªãããšã§ãã