åãã³ãŒããšã誰ãèªãã§ãåããããããã°ã®å°ãªãã³ãŒãã«ã¯ã倧ããªå·®ããããŸãããã®å·®ãåããŠãããã®ããã³ãŒããã©ãŒããã¿ãŒïŒèªåæŽåœ¢ããŒã«ïŒãšéçè§£æããŒã«ïŒã³ãŒãã®åé¡ãå®è¡åã«æ€åºããããŒã«ïŒãâš
æ¯åã¹ããŒã¹ã®æ°ãæ°ããããæªå®çŸ©å€æ°ã®ã¿ã€ãã«å®è¡æãŸã§æ°ã¥ããªãã£ããââãããªâå°å³ã ãã©æéæ³¥æ£âãªäœæ¥ããããŒã«ã«äžžæãã§ããããã«ãªããŸãã仿¥ããããªãã®ã³ãŒãããèŠéããã»ã©ã¯ãªãŒã³ã«ããããŠé äžã«ãªã£ãŠãããŸããðª
ã³ãŒããã©ãŒããã¿ãŒã¯ãã³ãŒãã®ãã©ãŒãããïŒèŠãç®ïŒãèªåã§æŽããŠãããããŒã«ã§ããããšãã° if x==1: ã®ããã« == ã®å·Šã«ã¹ããŒã¹ããªããå³ã«äœèšãªç©ºçœã䞊ãã§ããã³ãŒãããã£ããšããŸãããªãã ãèªã¿ã«ããã§ãããã
ãã©ãŒããã¿ãŒãéããšãããããã¹ããŒã¹ã»æ¹è¡ã»ã€ã³ãã³ããã«ãŒã«ã«æ²¿ã£ãŠèªåã§æŽããããšãã§ããŸããåäœïŒåŠçïŒãã®ãã®ã¯å€ãããèŠãç®ã ãããããã«æããŠãããã®ããã€ã³ããprint( "hello" ) ã print("hello") ã«ããã¡ããã¡ãã®ãªã¹ããæŽç¶ãšäžŠãã 圢ã«ââãã¡ãã¡æåã§çŽãæéãæ¶ããŠãªããªããŸããð
Pythonã«ã¯ PEP 8 ãšããå
¬åŒã¹ã¿ã€ã«ã¬ã€ãããããåºæ¬çãªãã©ãŒããã¿ãŒã¯ãã® PEP 8 ã«æ²¿ã£ãŠã³ãŒããæŽããŠãããŸããð ããªãåããããå®çªããŒã«ãPEP 8 ã«èšèŒãããŠããã«ãŒã«ã«å¿ å®ã«æŽåœ¢ããŠãããŸããã·ã³ã°ã«ã¯ã©ãŒããããã«ã¯ã©ãŒãã«å€ããããšãã£ãâ奜ã¿âã®é åã«ã¯èžã¿èŸŒãŸãªãã®ã§ãèªåã®ã¹ã¿ã€ã«ãä¿ã¡ãã人ã«åããŠããŸãã
# ã€ã³ã¹ããŒã«
pip install autopep8
# å®è¡ïŒ-i ãªãã·ã§ã³ã§äžæžãä¿åïŒ
autopep8 -i target_file.py
ãã£ãããã ãã§ãã¡ã€ã«ãèªåæŽåœ¢ãããŸãããªã¹ãèŠçŽ ã®éã®ã«ã³ããååæŒç®åã®ååŸã®ã¹ããŒã¹ã颿°åŒã³åºãã®æ¬åŒ§åšããªã©ãäžæ°ã«ãããã«ãªããŸããâš
PEP 8 ã«å ããŠç¬èªã®ãã©ã¹Î±ã«ãŒã«ã§ãä¿®æ£ããããã¡ãã£ãšå³ããã®ãã©ãŒããã¿ãŒãããšãã°æååã®ã·ã³ã°ã«ã¯ã©ãŒãã¯ãã¹ãŠããã«ã¯ã©ãŒãã«èªå倿ãããŸãããèšå®ã§æ©ãæéããªããããããããŒã ã§å®å šã«æžãæ¹ãçµ±äžãããããšããäººã«æ¯æãããŠããŸãã
JetBrainsã®PyCharmã«ã¯æšæºã§ãã©ãŒããã¿ãŒæ©èœãçµã¿èŸŒãŸããŠãããCtrl + Alt + LïŒmacOS㯠Option + Command + LïŒã§å³åº§ã«æŽåœ¢ã§ããŸãããšãã£ã¿äŸåã«ããããªããã° autopep8 ã Black ããIDEã«ä»»ããããªãã·ã§ãŒãã«ããã§ââ䜿ãåããå¹ããŸããâšïž
éçè§£æãšã¯ãPythonãå®è¡ããããšãªãã³ãŒããè§£æããŠãåé¡ç¹ããã°ãèŠã€ããŠãããä»çµã¿ã®ããšãããšãã° print(z) ãšæžããŠããã®ã« z ãã©ãã«ãå®çŸ©ãããŠããªãââæ®éã«å®è¡ããã° NameError ã§æ¢ãŸããŸãããéçè§£æããŒã«ãªãå®è¡åã«ãã®ççŸãææããŠãããŸãã
ãã©ããå®è¡ããã°åãããããïŒããšæããããããŸãããã1ãæç®ã®ãšã©ãŒã§æ¢ãŸã£ããããã以éã®åé¡ã«ã¯æ°ã¥ããŸãããè€æ°è¡ã«ãŸããã£ãŠæªå®çŸ©å€æ°ãæ£åšããŠããã±ãŒã¹ã§ã¯ãéçè§£æããŒã«ãäžåºŠã«ãã¹ãŠã®ç®æããªã¹ãã¢ããããŠãããã®ã§ããã°ä¿®æ£ã®å¹çãæ®µéãã§ããâ¡
Pythonéçè§£æããŒã«ã®äžã§ãç¹ã«æåãªã®ã Flake8ãéçè§£æã«å ããŠãPEP 8 ããŒã¹ã®ã³ãŒãã¹ã¿ã€ã«ãã§ãã¯ïŒpycodestyleïŒãåæã«èµ°ãããŠãããåªããã®ã§ãã
# ã€ã³ã¹ããŒã«
pip install flake8
# å®è¡
flake8 target_file.py
ãããšã3è¡ç®ã§ z ãå®çŸ©ãããŠããŸããããšãã£ãææãåºåãããŸããCIã«çµã¿èŸŒãã°ãããŒã éçºã§ãåè³ªãæ ä¿ãããããªããŸããð¡ïž
PyCharmã¯ããã©ã«ãèšå®ã®ãŸãŸã§ããã³ãŒããæžããŠããæäžããéçè§£æãèµ°ã£ãŠããŸããæªå®çŸ©å€æ°ãåã®ççŸã«ã¯èµ€ãæ³¢ç·ãåŒæ°äžè¶³ã«ã¯é»è²ã®ãã€ã©ã€ããåºãã®ã§ãæžããªããåé¡ã«æ°ã¥ããŸããð
ãããã®ããŒã«ãç䟡ãçºæ®ããã®ã¯ãCIïŒç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒãšçµã¿åããããšããããŒã ã§ã³ãŒãã管çããŠãããšãã誰ãã PEP 8 ãå®ããã«ã³ãŒããæžããŠããŒãžããŠããŸãâŠâŠãšããã®ã¯ãããã話ã§ãã
CIã« Flake8 ã autopep8 ãçµã¿èŸŒãã§ããã°ãããŒãžåã«èªåã§ãã§ãã¯ãèµ°ããã«ãŒã«éåãããã°ãã®å Žã§èŠåã人éããã¡ãã¡ææããªããŠããã³ãŒãå質ãèªç¶ã«ä¿ãããä»çµã¿ãäœããŸãããããããã®éçºçŸå Žã®ã¹ã¿ã³ããŒãã§ããð
倧äºãªã®ã¯ãå šéšãå®ç§ã«äœ¿ãããšãã§ã¯ãªããèªåã®éçºã¹ã¿ã€ã«ã»ããŒã ã®èŠæš¡ã«å¿ããŠé©æé©æã§éžã¶ããšãäžäººéçºãªãPyCharmä»»ãã§ãOKãããŒã éçºãªãautopep8/Flake8/CI飿ºãçéã§ãã
ãã©ãŒããã¿ãŒãéçè§£æã¯ã䜿ãã°çµãããã§ã¯ãªãããªããã®ã«ãŒã«ãæšå¥šãããŠããããçè§£ããããšã§ãããè¯ãã³ãŒããæžããããã«ãªããŸããåŠç¿ã«åœ¹ç«ã€æžç±ãšã¬ãžã§ãããå³éžããŸããã
Pythonã§ã¯ãªãŒã³ãã€ä¿å®ããããã³ãŒããæžãããã®å®è·µçæéããã©ãŒããã¿ãŒã§ã¯æŽããããªããèšèšã¬ãã«ã®èªã¿ããããã身ã«ã€ããŸãã
ãåãããããäžè³ªããžãããã®Pythonãšã³ãžãã¢ãå¿ ãéãéãéçè§£æããŒã«ãææããå 容ã®âæå³âãæ·±ãçè§£ã§ããŸãã
èšèªæ©èœãæ·±ãç¥ãããšã§ããã©ãŒããã¿ãŒãéçè§£æãææããâãªãâãè ¹èœã¡ããŸããäžçŽããäžçŽãžã¹ãããã¢ããããã人ã®å®çªæžã
éçè§£æãšäžŠãã§ãã³ãŒãåè³ªãæ ä¿ãã䞡茪ãããã¹ãããpytestã䜿ã£ãå®è·µçãªãã¹ãã®æžãæ¹ãåŠã¹ãå¿ èªæžã§ãã
éçè§£æã®ææã«å¿ããŠãªãã¡ã¯ã¿ãªã³ã°ããæéã¯ãæ³å以äžã«ã¿ã€ãã³ã°ãå€ãäœæ¥ãæéµæãè¯ããè€æ°ããã€ã¹åæ¿ã«ã察å¿ããäžå°ããããšäœæ¥å¹çãåçã«å€ãããŸãã
èªåã®ã³ãŒãã¹ã¿ã€ã«ïŒç¹ã«ã¯ã©ãŒãã®å¥œã¿ïŒãæ®ããããªã autopep8ãèšå®ã§æ©ãŸãçµ±äžæãæåªå
ããããªã Black ããããããããŒã ã§äœ¿ãå Žåã¯ãã¡ã³ããŒã§åæãããã®ãæ¡çšããŸãããã
å人éçºãªãPyCharmã®éçè§£æã ãã§ãååãªã±ãŒã¹ãå€ãã§ãããã ãããŒã éçºã§CIã«çµã¿èŸŒããªã Flake8 ãªã©ã®ã³ãã³ãã©ã€ã³ã§åãããŒã«ãå¿ é ã«ãªããŸãããšãã£ã¿ã«äŸåããªãä»çµã¿ãå¿ èŠã ããã§ãã
ãã©ãŒããã¿ãŒã¯åŠçïŒåäœïŒãå€ãããèŠãç®ã ããæŽããããã«äœãããŠããŸãããã ãå€§èŠæš¡ãªãã¡ã¯ã¿ãªã³ã°ååŸã§ã¯ã念ã®ããGitãªã©ã§ããŒãžã§ã³ç®¡çãããã¹ãã§åäœç¢ºèªããã®ãéåã§ããð¡ïž
ã絶察ãã§ã¯ãããŸããããPythonã³ãã¥ããã£ã§åºãå ±æãããŠããã«ãŒã«ãªã®ã§ãå®ã£ãæ¹ãä»äººã«ãèªåã«ãèªã¿ããããªããŸããããŒã ã«ç¬èªã«ãŒã«ãããå Žåã¯ãã¡ããåªå ã§ãã
æ®å¿µãªãã100ïŒ ã§ã¯ãããŸãããåã®äžæŽåãæªå®çŸ©å€æ°ãªã©âéçã«åããåé¡âã¯æ€åºã§ããŸãããããžãã¯ã®èª€ãã¯ãã¹ããå®è¡ã§ç¢ºèªããå¿ èŠããããŸããéçè§£æïŒåäœãã¹ãã®çµã¿åãããå質ä¿èšŒã®çéã§ããâ
ã³ãŒããã©ãŒããã¿ãŒã¯ã³ãŒãã®èŠãç®ããéçè§£æããŒã«ã¯ã³ãŒãã®è«ççãªççŸããããããèªåã§ãã§ãã¯ããŠãããé Œãããçžæ£ã§ããautopep8 ã Black ã§ãã©ãŒããããæŽããFlake8 ãPyCharmã§ãã°ã®èœãæ©æçºèŠââãã®ç¿æ
£ãã€ãã ãã§ãã³ãŒãã®å質ã¯é©ãã»ã©äžãããŸããð
倧åãªã®ã¯ããããŒã«ã«é Œãããšããæ¥ããããããªãããšãããã»ã©ããŒã«ã䜿ãåãããã®åã®æéãèšèšãããžãã¯ã®æ€èšã«å ãŠãŠããŸãã仿¥ããèªåã®ãããžã§ã¯ãã«å°å ¥ããŠã空ããæéã§ãã£ãšé¢çœãã³ãŒããæžããŠãããŸããããð
ð ãåãã³ãŒãããããèœã¡ãª…
ð Pythonã®ãå¶åŸ¡æ§æã…
ð ãæååãèªåšã«æãã人ã…
ð ãèªã¿ãããã³ãŒããã¯å€æ°…
ð ããã°ã©ãã³ã°ã®ãã¹ãŠã¯ã…
ð ãæååã«å€æ°ãå ¥ãããã…