æè³ã«ã€ããŠå°ã
ç§ã¯2019幎ã®å€ã«æè³ã®ãããã¯ã«èå³ãæã¡å§ããããã«ããŸããŸãªåºçç©ããããªããã¬ãŒã®æµ·ã«é£ã³èŸŒã¿ãŸããã圌ãã¯æèŠã®çžéã§ãæè³ã®æ¹æ³ãšå Žæã«ã€ããŠã¢ããã€ã¹ãããŸãããæè³ã®äžçã§ã¯ãåºæ¬çããã³æè¡çãªåæã«åºã¥ããŠæ±ºå®ãäžã2ã€ã®äž»ãªæ¹æ³ãããããšãæããã«ãªããŸãããæåã®æ¹æ³ã¯é·ææè³ã«é©ããŠããã2çªç®ã®æ¹æ³ã¯æšæž¬ã«é©ããŠããŸãã
ãã°ãããããšãããããªå¹Žã«ããããªææã«æè³ãããã©ããªããããªã©ãããŸããŸãªæŽå²çã·ããªãªããã¬ã€ããããšã®ã¡ãªãããçè§£ã§ããŸããããã®çš®ã®åæã«ãããæè³ãšæšæž¬ã«é©ãã蚌åžã®éããæããããšãã§ããåå¿è ã®æè³å®¶ãã©ã®éèååãšã©ã®æéã«æè³ãã䟡å€ãããããçè§£ã§ããŸãã
ã¢ã€ãã¢ã®æçããã¹ããšWebãµãŒãã¹ã¢ãŒããã¯ãã£ã®éžæ
æãçµã€ã«ã€ããããŸããŸãªéèååã«æè³ãããšããæŽå²çãªã·ããªãªãåçã§ããWebãµã€ãã®åœ¢ã§ãµãŒãã¹ãäœæãããšããã¢ã€ãã¢ãçãŸããŸããã
ãããŠæ¬¡ã®ã¹ãããã¯ã3ã€ã®éèŠãªãã€ã³ããç¹å®ããããšã§ããã
- ãã¹ãã®éžæ;
- ãã¯ãããžãŒã¹ã¿ãã¯ãšãµãŒãã¹ã¢ãŒããã¯ãã£ã®éžæã
- åžå Žçžå Žã«é¢ããæ å ±ãåŒãåºãããšãã§ããããŒã¿ã®ãªãŒãã³ãœãŒã¹ãæ€çŽ¢ããŸãã
ãµãŒããŒåŽã§ã¹ã¯ãªãããåçããïŒã€ãŸãããã¹ãŠã®èšç®ãå®è¡ããïŒããšãæãŸããããšãããã«æããã«ãªããŸããããããŠã3ã€ã®çç±ããããŸãã1ã€ç®ã¯ããã¹ãŠã®ã³ãŒãããŠãŒã¶ãŒã«å ¬éããããšã«æµæãããããšã§ãã2ã€ç®ã®çç±ã¯ããããã¯ãŒã¯ãä»ããŠãã¹ãŠã®ããŒã¿ã転éããåºæ¬çãªå¿ èŠããªããœãªã¥ãŒã·ã§ã³ãæ¢ãããšã§ãã3ã€ç®ã¯ããŠãŒã¶ãŒåŽã®ã³ã³ãã¥ãŒãã£ã³ã°æ©èœããã®ç¬ç«æ§ã§ããçªç¶ããŒã¿éãå€ããªããAmazon WebServicesãMicrosoftAzureãªã©ã®ç¹æ®ãªãã©ãããã©ãŒã ã«ããã¯ãšã³ãããããã€ããå¿ èŠãçããå Žåã¯ãå°æ¥ãèŠæ®ããŠéžæãããŸããããã€ãã®ããã«ãååãªéå¿ãããã°ããœãªã¥ãŒã·ã§ã³ã¯æåã¯ã¹ã±ãŒã©ãã«ã«ãªãããã«éžæãããŸãã
ããã°ã©ãã³ã°èšèªã«é¢ããŠã¯ãæåã¯ããã³ããšã³ãã«çãã®äœå°ã¯ãããŸããã§ããããã¹ãŠãããªãæšæºçã§ãïŒhtml + css + javascriptãããã¯ãšã³ãã¯ã仿¥ã®è¿ éãªéçºãšãããã¿ã€ãã³ã°ã§æã人æ°ãããããµããŒããããŠããèšèªã®1ã€ã§ãããããPythonã§äœæããããšã決å®ãããŸããããã®åŸã®ãã¹ãŠã®æ±ºå®ã¯ãããçšåºŠãäžèšã®éžæã®çµæã§ããã
Pythonanywhere.comããã¹ããšããŠéžæãããŸããããã®ç¹åŸŽçãªæ©èœã¯ãpythonã§ã®ããã°ã©ãã³ã°ã察象ãšããŠãããæé¡5ãã«ãšããæ¯èŒçå®äŸ¡ãªæéãæäŸããŠããããšã§ãããã®åŸã®ãŠã§ããµã€ãã®éçºã¯ãDjangoãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠå®è¡ãããŸããããã®ãã¬ãŒã ã¯ãŒã¯ã¯æãåçŽãªãã®ãšã¯èŠãªãããŠããŸãããããã¥ãŒããã³ãã¬ãŒãããã©ã°ã€ã³ã®æ¢è£œã¢ããªã±ãŒã·ã§ã³ã®åœ¢ã§éçºè ã«åºç¯ãªããŒã«ãæäŸããå šäœãšããŠæ¬æ ŒçãªWebãµã€ããæ§ç¯ã§ããŸãã
ããŒã¿ãœãŒã¹ã®éžæã«é¢ããŠã¯ãã»ãšãã©ããã«Yahoo Financeãªã©ã®ãµãŒãã¹ã«æ³šç®ãéãŸããããã«å¿ããŠãPythonçšã®äŸ¿å©ãªAPIãæäŸããyfinanceã©ã€ãã©ãªãæäŸãããŸããã
pythonanywhere.comã®ããã€ãã®æ©èœ
Pythonanywhereãã¹ãã£ã³ã°ã§ã¯ãããã€ãã®ã¢ãŒãã§äœæ¥ã§ããŸãã
- ã³ã³ãœãŒã«ã§pythonã€ã³ã¿ãŒããªã¿ãŒãèµ·åããŸãã
- ãžã¥ãã¿ãŒã©ãããããã§äœæ¥ããŸãã
- æ¬æ ŒçãªWebã¢ããªã±ãŒã·ã§ã³ã®ç«ã¡äžãã
å¿ èŠã«å¿ããŠããã¹ãã£ã³ã°ã䜿çšãããšãä»»æã®pythonWebãã¬ãŒã ã¯ãŒã¯ãã€ã³ã¹ããŒã«ããŠäœ¿çšã§ããŸããå¿ ãããDjangoã§ããå¿ èŠã¯ãããŸããããããšãã°ãåããã©ã¹ã³ã§ãç¿åŸã容æã§ãããšèããããŠããŸããWebã¢ããªã±ãŒã·ã§ã³ã®ã»ããã¢ãããšå ¬éã¯ãæåéãæ°åã¯ãªãã¯ããã ããªã®ã§ãåºæ¬äºé ã«éäžã§ããŸãã
䟿å©ãªããã·ã¥ããŒãã䜿çšãããšããã¡ã€ã«ããã©ã«ããŒãã³ã³ãœãŒã«ããã®ä»ã®èšå®ã«ãã°ããã¢ã¯ã»ã¹ã§ããŸããhttpsãæ¥ç¶ããããã¡ã€ã³åãããã³ãµã€ãã³ã³ãã³ãã®ãã¹ã¯ãŒãä¿è·ã®çµã¿èŸŒã¿ãµããŒããããã·ã¥ããŒãã®ãªã³ã¯ãä»ããŠããã©ãã£ãã¯ã®ç£èŠãšãµãŒããŒãã°ãå©çšã§ããŸãã
ãŸããéçºè ã«ãšã£ãŠééããªããã1ã€ã®äŸ¿å©ãã«ã泚ç®ããããšæããŸãããµãŒããŒãã°ã«å ããŠãããã¯ãšã³ãåŽã§ãšã©ãŒãçºçãããšã察å¿ãã颿°ãã¡ãœãããåŒã³åºããšãã«ã倿°ã®ãã¬ãŒã¹å€ãšããŒã«ã«å€ãçŸåšã®ãã©ãŠã¶ãŒãŠã£ã³ããŠã«è¡šç€ºãããããšããããããŸãããŸããã¹ããŒããã©ã³ã®ãã©ãŠã¶ãŠã£ã³ããŠã§ããã¬ãŒã¹ã確èªã§ããŸãã
ãã®çš®ã®ãããã°ã¢ãŒãã¯å人çã«éåžžã«åœ¹ç«ã¡ãæåéããã®å Žã§ã³ãŒãã®ãšã©ãŒãä¿®æ£ããããšãã§ããŸããã
ééããªã泚ç®ã«å€ãããã1ã€ã®éèŠãªç¹ã¯ãããŒãžã§ã³å¶åŸ¡ã·ã¹ãã ã®æäœã§ããGitãsvnãhg / mercurialã¯ãBashçµã¿èŸŒã¿ã³ã³ãœãŒã«ã§äœ¿çšã§ããŸãã
ããŒã¿ã®æäœ
ãµãã¹ã¯ãªãã·ã§ã³æéããªããåšåº«æ å ±ã®æ¯æ¥ã®æŽæ°ã«ã¢ã¯ã»ã¹ã§ãããããéèæ å ±ãããã€ããŒã®YahooFinanceãšyfinanceã©ã€ãã©ãªãéžæããŸããããªã³ã©ã€ã³ãµãŒãã¹ã¯ãyfinance APIãä»ããŠãç±³åœã®3ã€ã®èšŒåžååŒæNASDAQãNYSEãããã³AMEXãããã®å Žã§æ å ±ãååŸããŸãããã ããéçºè ã®ãµã€ãyfinanceã§ã®åçšå©çšã®çŠæ¢ã«ã€ããŠã®èŠåããããšããäºå®ã«ããã«æ³šæãæãå¿ èŠããããŸãã
WebãµãŒããŒã®çžäºäœçšã®ãã¯ãããžãŒã«é¢ããŠã¯ãhtmlããŒã¯ã¢ãããå«ããã³ãã¬ãŒããæåã«ãã©ãŠã¶ãŒã«ããŒããããŸããæ¬¡ã®ã¹ãããã¯ãget-requestsã¡ãœããã䜿çšããŠãµãŒããŒããå¿ èŠãªãã¹ãŠã®ããŒã¿ãååŸããjavascriptãå®è¡ããããšã§ããããŒãžã³ã³ãã³ãã®æŽæ°ã¯ãjQueryã©ã€ãã©ãªã®ã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠAjaxãã¯ãããžã䜿çšããŠå®è¡ãããŸãã
ãã¹ãŠã®ãªã³ã©ã€ã³ãµãŒãã¹ããŒã¿ã¯ãcsvãšSQLiteã®2ã€ã®åœ¢åŒã§ä¿åãããŸãããã®éžæã«ãããããŒã¿ããŒã¹ãµãŒããŒãã€ã³ã¹ããŒã«ããŠæ§æããªããŠããåºæ¬ããžãã¯ã®å®è£ ããã°ããéå§ã§ããŸããã
Djangoã«ã€ããŠå°ã
ãŸããæ¢è£œã®ãããã¯ã䜿çšããŠãµã€ãã¢ãŒããã¯ãã£ã«çµã¿èŸŒãŸãããéçºãå€§å¹ ã«å éãã3ã€ã®ãœãããŠã§ã¢ã³ã³ããŒãã³ãã«ã€ããŠãåå¥ã«èª¬æããããšæããŸããã€ãŸããDjango管çããã«ãdjango.contrib.sessionsã»ãã·ã§ã³ç®¡çã¢ãžã¥ãŒã«ãããã³excontrib / django_commentsãã¬ãŒã ã¯ãŒã¯ã§ãã
Djangoã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ãšåŒã°ããåå¥ã®ãœãããŠã§ã¢ã³ã³ããŒãã³ããããããžã§ã¯ããæ§ç¯ã§ããŸããäœæããã¢ããªã±ãŒã·ã§ã³ã¯ãããŸããŸãªãããžã§ã¯ãã§åå©çšã§ããŸããäžèšã®ã³ã³ããŒãã³ãããããžã§ã¯ãã«åã蟌ãã«ã¯ãsettings.pyãã¡ã€ã«ã§ããããæç€ºçã«æå®ããå¿ èŠããããŸãã
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.sessions',
'django_comments',
âŠ
]
ããã«ãURLãã¿ãŒã³ã¯ããã©ãŠã¶ãŒåŽããèŠæ±ãè¡ãããã«é©åã«æ§æããå¿ èŠããããŸãã
urlpatterns = [
url(r'^admin/', admin.site.urls)
url(r'^comments/', include('django_comments.urls')),
âŠ
]
äžèšã®ã³ãŒãã¹ãããããããããããã«ãæ¢è£œã®ã³ã³ããŒãã³ããåã蟌ãããšã¯ããã»ã©é£ãããããŸããããã®çµæããããã¯ãããžã§ã¯ãã«æ©èœã®éèŠãªéšåã远å ããŸãã
djangoãã¬ãŒã ã¯ãŒã¯ããããã€ããåŸã管çããã«ãèµ·åããã«ã¯ãsettings.pyãã¡ã€ã«ã®èšå®ã確èªããçµã¿èŸŒã¿ã®ããŒã¿ã¢ãã«ãç§»è¡ããŠãã¹ãŒããŒãŠãŒã¶ãŒãäœæãããšããç°¡åãªæé ãå¿ èŠã§ãã管çè ã«ã¯ãå人ã®ãã°ã€ã³ããã¹ã¯ãŒããããã³ã¡ãŒã«ããã¯ã¹ãå²ãåœãŠãããŸããããã©ã«ãã§ã¯ã管çããã«ã«ã¢ã¯ã»ã¹ããã«ã¯ããã¡ã€ã³URLã«æšæºãã¹/ admin /ã远å ããŸãã
ããã«å ã«ã¯ãçµã¿èŸŒã¿ããŒã¿ããŒã¹ã管çããããã®äŸ¿å©ãªã€ã³ã¿ãŒãã§ã€ã¹ããããŸããããã©ã«ãã§ã¯ããã®ããŒã¿ããŒã¹ã«ã¯ãŠãŒã¶ãŒãšãŠãŒã¶ãŒã°ã«ãŒãã«é¢ããæ å ±ãæ ŒçŽãããŸããããã¯ããµã€ãã§ãŠãŒã¶ãŒèªèšŒãç°¡åã«å®è£ ã§ãããããéåžžã«äŸ¿å©ã§ãããŸãããŠã§ããµã€ãã®ç«ã¡äžãã®éåºŠãæ ¹æ¬çã«éèŠãªå Žåã¯ãæéãç¯çŽããæ°ãããŠãŒã¶ãŒãç²åŸããŠæš©éãä»äžããããã«å¥ã®ããŒãžãäœæããå¿ èŠã¯ãããŸããã管çããã«ã«ç§»åããUIãä»ããŠããŒã¿ããŒã¹ã«æ°ãããšã³ããªã远å ããã ãã§ååã§ãããã ãããã®ãœãªã¥ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒãèªåã§ãã¹ã¯ãŒããç»é²ããã³ãªã»ããããæ©èœãæäŸããªããããå°æ°ã®ãŠãŒã¶ãŒã«ã®ã¿é©ããŠããŸãã
管çããã«ã®ãã1ã€ã®æ©èœã¯ããŠãŒã¶ãŒããŒã¿ã ãã§ãªããååãšããŠãDjangoã®å¶åŸ¡äžã§ããŒã¿ããŒã¹ã«ä¿åãããŠãããã¹ãŠã®ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããããšã§ããããšãã°ãèš±å¯ããããŠãŒã¶ãŒã«é¢ããããŒã¿ã«å ããŠãããŒã¿ããŒã¹ã«ã¯ããµã€ãã®ã³ã³ãã³ããšèšªåè ãæ®ããã³ã¡ã³ããéšåçã«ä¿åãããŸãã
èªåèªèº«ã«ã€ããŠããŒãžã«ãã£ãŒãããã¯ãã©ãŒã ã远å ããããã«äœ¿çšããã©ã€ãããã¯ã«ã€ããŠèª¬æããŸãããã£ãŒãããã¯ãã©ãŒã ã®ä»£ããã«ããã©ãŠã¶ãŸãã¯ãµãŒããŒäžã®ããŒã¿ãåŠçããããã®åå¥ã®ã³ãŒããèšè¿°ããªãããã«ãæšæºã®ã³ã¡ã³ããããã¯ã察å¿ããhtmlãã³ãã¬ãŒãã«çµã¿èŸŒãŸããŸããããå±¥æŽã衚瀺ããæ©èœã¯åé€ãããŸããããã®ã¢ãããŒãã§ã¯ããã£ãŒãããã¯ãã©ãŒã ã®ããŒã¿ãåŠçããããµã€ã蚪åè ã®ã³ã¡ã³ããšåãããŒãã«ã«ä¿åãããŸãã
ã»ãã·ã§ã³ç®¡çã¯ãçµã¿èŸŒã¿ã®django.contrib.sessionsã¢ãžã¥ãŒã«ã䜿çšããŠå®è£ ãããŠããŸããã»ãã·ã§ã³ãªããžã§ã¯ãã«ã¯ããŠãŒã¶ãŒããµã€ãã«ã¢ã¯ã»ã¹ãããšãã«éžæããèšå®ã«é¢ããæ å ±ãæ ŒçŽãããŸããç¹ã«ãã»ãã·ã§ã³ã«ã¯ãéžæããæè³æéãåæãå®è¡ããããã®å±¥æŽæéããµã€ãã®èšèªãä¿åãããŸãã
ãã®ãµã€ããå€èšèªåããæ¹æ³ã«ã€ããŠå°ã詳ãã説æããŸãããã¹ãã£ã³ã°ããã«ã«ç§»åããŠã2åã¯ãªãã¯ããã ãã§èšäºã®ããã¹ããç·šéã§ãããã·ã³ãã«ã§è¿ éãªè§£æ±ºçãèŠã€ããããšãéèŠã§ããããã®ãããèšäºã®ããã¹ããä¿åããããã«ãããŒã¿ããŒã¹ã«ããŒãããã«ãç¬ç«ããããã¹ããã¡ã€ã«ã®åœ¢åŒãéžæããŸãããèšäºã®æ°ãå°ãªãïŒå€§ãŸãã«èšãã°ãæå€§10ïŒãèšèªéžæã®ãªãã·ã§ã³ã2ã€ïŒãã·ã¢èªãšè±èªïŒãããªãããšãèãããšããã®ãœãªã¥ãŒã·ã§ã³ã¯éåžžã«åãå ¥ãããããšæããŸããç¹°ãè¿ããŸãããããã¯ãã¹ãŠèŠæš¡ã«äŸåããŸãã
ãããŠãç§ãæåŸã«çŠç¹ãåœãŠããã®ã¯ãDjangoãã³ãã¬ãŒãã®äœ¿çšã§ããç¹ã«ããã³ãã¬ãŒãã䜿çšãããšã倿°å€ãPythonã³ãŒãããçŽæ¥htmlããŒãžã«ã€ã³ããŒãããããããã€ãã®ç¬ç«ãããããã¯ããhtmlããŒãžãåéãããã§ããŸããäŸãšããŠãã³ãŒãããçŽæ¥äŸã瀺ããŸãã
åçã³ã³ãã³ããå«ãããã€ãã®ãããã¯ãhtmlããŒãžã®äžè¬çãªã¹ã±ã«ãã³ã«åã蟌ãïŒ
html:
{% include article_file_name %}
{% include online_service_file_name %}
{% include comments_file_name %}
Pyhton/backend:
def view_article(request, selected_url_path = 'expected_return'):
âŠ
context = {
âŠ
'article_file_name':article_file_name,
'online_service_file_name':online_service_file_name,
'comments_file_name':comments_file_name,
âŠ
}
return render(request, 'articles/base_blog_page.html', context=context)
ããã§ãarticle_file_nameãonline_service_file_nameãcomments_file_nameã¯ãå®éã«ã¯ãã³ã³ãã³ãã远å ãããhtmlãã¡ã€ã«ãžã®ãã¹ãæž¡ããã倿°ã®ååã§ãã
çµè«ãWebãµãŒãã¹ã®èªå·±éçºã®æçãªçµéš
ãªã³ã¯www.emarkoff.comãã¯ãªãã¯ãããšããããžã§ã¯ãã§ã®ç§ã®äœæ¥ã®çµæã確èªã§ããŸãã
pythonanywhereãã©ãããã©ãŒã ã¯ãéåžžãDjangoããŒã¹ã®Webã¢ããªã±ãŒã·ã§ã³ãéçºããããã®åªãããœãªã¥ãŒã·ã§ã³ã§ãããŸããç¬èªã®ã¢ã€ãã¢ãããå Žåã¯ãããã®Webéçºè ã§ãªããŠãã2ã3ãæã§åºæ¬ãçè§£ããç°¡åãªWebã¢ããªã±ãŒã·ã§ã³ãå®è£ ã§ããŸãã
ãã®ãããªçµéšã¯ãç¹ã«ããŒã¿ãã¹ãã®æ®µéã§ããããŒãžã£ãŒãã¢ããªã¹ããããã³WebéçºãšWebãµãŒãã¹ã矩åçã«åŠçããå¿ èŠããããã¹ãŠã®äººã«ãšã£ãŠéåžžã«åœ¹ç«ã¡ãŸãããµãŒããŒãšã©ãŒã¡ãã»ãŒãžã®æå³ãããããçè§£ããæè¡ãµããŒãããã³éçºæ åœè ãšããçç£çã«éä¿¡ã§ããããã«ãªããŸãã