
ã°ã©ãã£ã«ã«ã³ãŒããµããŒãç°å¢
第2éšã§ã¯ãäž»ã«Pythonã§å®è¡ãããå®è£ ã«çŠç¹ãåœãŠãŸãã å®è£ ããã³èšç»ãããŠããæ©èœãããã³ææ¡ãããŠãããã€ã¯ãããŒã¯ã¢ããèšèªã«ã€ããŠèª¬æããŸãã
äžè¬çãªæ å ±
ãã®æè¡ã¯ã CodimensionãšåŒã°ãããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®äžéšãšããŠå®è£ ãããŸããã ãã¹ãŠã®ãœãŒã¹ã³ãŒãã¯GPL v.3ã©ã€ã»ã³ã¹ã®äžã§å©çšã§ãã githubã® 3ã€ã®ãªããžããªã§ãã¹ããããŸãã2ã€ã®Pythonæ¡åŒµã¢ãžã¥ãŒã«cdm-pythonparserããã³cdm-flowparserãšIDEèªäœã§ãã æ¡åŒµã¢ãžã¥ãŒã«ã¯äž»ã«C / C ++ã§æžãããŠãããPythonã®IDEã¯ã·ãªãŒãº2ã§ããã°ã©ãã£ãã¯éšåã«ã¯ãQTã©ã€ãã©ãªã®Pythonã©ãããŒ-PyQTã䜿çšãããŸããã
éçºã¯Linuxããã³Linuxã§è¡ãããŸãã 䜿çšãããäž»ãªãã£ã¹ããªãã¥ãŒã·ã§ã³ã¯Ubuntuã§ããã
ãã®ç°å¢ã¯ãPythonã·ãªãŒãº2ã§äœæããããããžã§ã¯ãã§åäœããããã«èšèšãããŠããŸãã
建ç¯
次ã®å³ã¯ãIDEã¢ãŒããã¯ãã£ã瀺ããŠããŸãã

IDEã¢ãŒããã¯ãã£
å³ã®éãéšåã¯ããããžã§ã¯ãã§éçºãããéšåã瀺ããŠããŸãã é»è²-ãµãŒãããŒãã£ã®Pythonã¢ãžã¥ãŒã«ãç·è²-ãµãŒãããŒãã£ã®ãã€ããªã¢ãžã¥ãŒã«ã
ãããžã§ã¯ãã®æåããã1人ã®éçºè ãå¿ èŠãªãã¹ãŠã®ã³ã³ããŒãã³ãã劥åœãªæéå ã«ãŒãããéçºããããšã¯å®å šã«äžå¯èœã§ããããšã¯æããã§ããã ãããã£ãŠãæ¢åã®Pythonããã±ãŒãžã¯ãå¯èœãªéã劥åœãªå Žæã§äœ¿çšãããŸããã äžèšã®å³ã¯ã決å®ãå®å šã«åæ ããŠããŸãã
ãããžã§ã¯ãã®äžéšãšããŠéçºãããã®ã¯3ã€ã®éšåã®ã¿ã§ãã IDEã¯ãéçºã®é«éåãšå®éšã®ç°¡çŽ åãç®çãšããŠPythonã§äœæãããŠããŸãã æ¡åŒµã¢ãžã¥ãŒã«ã¯ãIDEã®å¿çæ§ãé«ããããã«C / C ++ã§èšè¿°ãããŠããŸãã ç°¡åãªããŒãµãŒã®ã¿ã¹ã¯ã¯ãã€ã³ããŒããã¯ã©ã¹ãé¢æ°ãã°ããŒãã«å€æ°ãããã¥ã¡ã³ãè¡ãªã©ãPythonãã¡ã€ã«ïŒãŸãã¯ãããã¡ãŒïŒã§èŠã€ãã£ããã¹ãŠã®ãšã³ãã£ãã£ãå ±åããããšã§ãã ãã®ãããªæ å ±ã®ååšã«ãããããšãã°ãã®ãããªæ©èœãå®è£ ã§ããŸãïŒãã¡ã€ã«ã®å 容ã衚瀺ããããã²ãŒã·ã§ã³ãæäŸãããããžã§ã¯ãå ã®ç¹å®ã®ãããã決ããŠäœ¿çšãããŠããªãé¢æ°ãã¯ã©ã¹ãã°ããŒãã«å€æ°ã®åæãæäŸããããã«æ§æãããŠããŸãã ãããŒããŒãµãŒã®ã¿ã¹ã¯ã¯ããã£ãŒãã®æç»ã«å¿ èŠãªããŒã¿ã䟿å©ãªåœ¢åŒã§æäŸããããšã§ãã
ä»ã®ãã¹ãŠã®ã³ã³ããŒãã³ãã¯ãµãŒãããŒãã£ã§ãã PyQTã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãšãããã¯ãŒã¯éšåã«äœ¿çšãããŸããã ã¡ã€ã³ããã¹ããšãã£ã¿ãšããŠã®QScintillaããã³ãããã°ãããã¹ã¯ãªããã®ãªãã€ã¬ã¯ããããå ¥å/åºåãç¹å®ã®ãªããžã§ã³ã®ãã¡ã€ã«ã®svnããŒãžã§ã³ã®è¡šç€ºãªã©ããã®ä»ã®èŠçŽ ã Graphvizã¯ãäŸåé¢ä¿å³ãªã©ã®ã°ã©ãã£ãã¯èŠçŽ ã®äœçœ®ãèšç®ããããã«äœ¿çšãããŸããã ä»ã®æ¢è£œã®Pythonããã±ãŒãžã䜿çšãããŸããïŒpyflakesãpylintãfilemagicãropeãgprof2dotãªã©ã
ã°ã©ãã£ãã¯ã¹ãã€ãã©ã€ã³ãžã®ã³ãŒã
ããã¹ãããã°ã©ãã£ãã¯ã¹ãžã®ç§»è¡ã®å®è£ ã¯ããã€ãã©ã€ã³ã®ååã«åºã¥ããŠããŸãã å段éã§ãäœæ¥ã®ç¹å®ã®éšåãå®è¡ãããçµæã次ã®æ®µéã«è»¢éãããŸãã 次ã®å³ã¯ããã€ãã©ã€ã³ã®ãã¹ãŠã®æ®µéã瀺ããŠããŸããå·ŠåŽã«ã¯ãœãŒã¹ããã¹ããå ¥åãããå³åŽã«ã¯åºåãæç»ãããå³ã§ãã

ã°ã©ãã£ãã¯ã¹ãã€ãã©ã€ã³ãžã®ã³ãŒã
äœæ¥ã¯ããœãŒã¹ããã¹ãããæ§æããªãŒãæ§ç¯ããããšããå§ãŸããŸãã 次ã«ãããªãŒããã€ãã¹ãããæ€åºããããã¹ãŠã®ã³ãŒããããã¯ãã«ãŒããé¢æ°ãªã©ããããã¯ãããŸãã éå±€ããŒã¿æ§é ã«å解ãããŸããã ãã®åŸããœãŒã¹ã³ãŒããä»ããŠå¥ã®ãã¹ãäœæããããã®çµæãã³ã¡ã³ãã«é¢ããæ å ±ãåéãããŸãã ãã€ãã©ã€ã³ã®ããã«é²ãã 段éã§ã¯ãã³ã¡ã³ããå¥åã®ããŒã¿ãšããŠã§ã¯ãªããèªèãããèšèªæ§é ã«æ¢ã«é¢é£ä»ããŠããã»ãã䟿å©ã§ãã ãããã£ãŠã次ã®ã¹ãããã§ã¯ãã³ã¡ã³ããã³ãŒããè¡šãéå±€æ§é ã«ããŒãžããŸãã 説æãããŠããã¢ã¯ã·ã§ã³ã¯ãæé«ã®ããã©ãŒãã³ã¹ãå®çŸããããã«C / C ++ã§èšè¿°ããããããŒããŒãµãŒæ¡åŒµã¢ãžã¥ãŒã«ã«ãã£ãŠå®è¡ãããŸãã
åŸç¶ã®ã¹ãããã¯ãã§ã«IDEå ã«å®è£ ãããŠãããPythonã§èšè¿°ãããŠããŸãã ããã«ãããC ++å®è£ ãšæ¯èŒããŠãã¬ã³ããªã³ã°ã®å®éšãå€§å¹ ã«å®¹æã«ãªããŸãã
æåã«ãä»®æ³ãã£ã³ãã¹ãšåŒã°ããããŒã¿æ§é ã«ãæ¡åŒµã¢ãžã¥ãŒã«ããåä¿¡ããããŒã¿æ§é ã«åŸã£ãŠã°ã©ãã£ãã¯èŠçŽ ãé 眮ãããŸãã 次ã«ã¬ã³ããªã³ã°æ®µéãããããã®äž»ãªã¿ã¹ã¯ã¯ãã¹ãŠã®ã°ã©ãã£ãã¯èŠçŽ ã®ãµã€ãºãèšç®ããããšã§ãã æåŸã«ããã¹ãŠã®ã°ã©ãã£ãã¯èŠçŽ ãé©åã«æç»ãããŸãã
ããããã¹ãŠã®æ®µéã«ã€ããŠè©³ãã説æããŸãã
æ§æããªãŒã®æ§ç¯
ããã¯ãããã¹ãããã°ã©ãã£ãã¯ã¹ãžã®éã®æåã®æ®µéã§ãã ãã®ã¿ã¹ã¯ã¯ããœãŒã¹ããã¹ãã解æããéå±€ããŒã¿æ§é ãæ§æããããšã§ãã ããã¯ããœãŒã¹ããã¹ãããæ§ç¯ãããæ§æããªãŒã䜿çšããŠäŸ¿å©ã«è¡ãããŸãã æããã«ãç§ã¯ãããžã§ã¯ãå°çšã®æ°ããPythonããŒãµãŒãéçºããããããŸããã§ããããããã©ãããããã§ã«çšæãããŠãããã®ã䜿çšããããšããèŠæããããŸããã 幞ããªããšã«ãPythonã€ã³ã¿ããªã¿ã®å ±æã©ã€ãã©ãªã§é©åãªé¢æ°ãèŠã€ãããŸããã ãã®Cã¯ãæå®ãããã³ãŒãçšã«ã¡ã¢ãªå ã«ããªãŒãæ§ç¯ããé¢æ°ã§ãã ãã®æ©èœã®åäœãèŠèŠåããããã«ãæ§ç¯ãããããªãŒãèŠèŠçã«è¡šç€ºãããŠãŒãã£ãªãã£ãäœæãããŸããã ããšãã°ããœãŒã¹ããã¹ãã®å ŽåïŒ
#!/bin/env python # encoding: latin-1 def f(): # What printed? print 154
ãã®ãããªããªãŒãæ§ç¯ãããŸãïŒç°¡æœã«ããããã«ããã©ã°ã¡ã³ãã®ã¿ãæäŸãããŸãïŒã
$ ./tree test.py ã¿ã€ãïŒencoding_declè¡ïŒ0åïŒ0 strïŒiso-8859-1 ã¿ã€ãïŒfile_inputè¡ïŒ0 colïŒ0 ã¿ã€ãïŒstmtè¡ïŒ4åïŒ0 ã¿ã€ãïŒcompound_stmtè¡ïŒ4åïŒ0 ã¿ã€ãïŒfuncdefè¡ïŒ4åïŒ0 ã¿ã€ãïŒNAMEè¡ïŒ4åïŒ0 strïŒdef ã¿ã€ãïŒNAMEè¡ïŒ4åïŒ4 strïŒf ã¿ã€ãïŒãã©ã¡ãŒã¿ãŒè¡ïŒ4åïŒ5 ã¿ã€ãïŒLPARè¡ïŒ4åïŒ5 strïŒïŒ ã¿ã€ãïŒRPARè¡ïŒ4åïŒ6 str :) ã¿ã€ãïŒCOLONè¡ïŒ4 colïŒ7 str :: ã¿ã€ãïŒã¹ã€ãŒãã©ã€ã³ïŒ4åïŒ8 ã¿ã€ãïŒNEWLINEè¡ïŒ4åïŒ8 strïŒ ã¿ã€ãïŒINDENTè¡ïŒ6 colïŒ-1 strïŒ ã¿ã€ãïŒstmtè¡ïŒ6åïŒ4 ã¿ã€ãïŒsimple_stmtè¡ïŒ6åïŒ4 ã¿ã€ãïŒsmall_stmtè¡ïŒ6åïŒ4 ã¿ã€ãïŒprint_stmtè¡ïŒ6åïŒ4 ã ã ã
åºåã§ã¯ãåè¡ã¯ããªãŒããŒãã«å¯Ÿå¿ãããã¹ãã¯ã€ã³ãã³ãã§è¡šç€ºãããããŒãã§ã¯å©çšå¯èœãªãã¹ãŠã®æ å ±ã衚瀺ãããŸãã
äžè¬çã«ãããªãŒã¯éåžžã«ããèŠããŸããè¡ãšåã«é¢ããæ å ±ããããæ£åŒãªPythonææ³ã«å¯Ÿå¿ããåããŒãã®ã¿ã€ãããããŸãã ããããåé¡ããããŸãã ãŸããã³ãŒãã«ã¯ã³ã¡ã³ãããããŸããããããªãŒã«ã¯ã³ã¡ã³ãããããŸããã 第äºã«ããšã³ã³ãŒãã®è¡çªå·ãšåçªå·ã«é¢ããæ å ±ã¯æ£ãããããŸããã 第äžã«ããšã³ã³ãŒãã£ã³ã°ã®ååãå€æŽãããŸããã ã³ãŒãã«ã¯latin-1ããããæ§æããªãŒã¯iso-8859-1ãå ±åããŸãã è€æ°è¡ã®æååãªãã©ã«ã®å Žåãåé¡ããããŸããããªãŒã«ã¯è¡çªå·ã«é¢ããæ å ±ããããŸããã ãããã®é©ãã¯ãã¹ãŠãããªãŒã暪æããã³ãŒãã§èæ ®ããå¿ èŠããããŸãã ãã ãã説æãããŠããåé¡ã¯ãã¹ãŠãããŒãµãŒå šäœã®è€éãã«æ¯ã¹ãŠãããããªããšã§ãã
æ¡åŒµã¢ãžã¥ãŒã«ã¯ãåŸç¶ã®æ®µéã§Pythonã³ãŒãã«è¡šç€ºãããåãå®çŸ©ããŸãã ã¿ã€ãã¯ãã¯ã©ã¹ãã€ã³ããŒãããã¬ãŒã¯ãªã©ãèªèå¯èœãªãã¹ãŠã®èŠçŽ ã«å¯Ÿå¿ããŸãã åã±ãŒã¹ã«åºæã®ããŒã¿åºæã®ã¡ã³ããŒããã³é¢æ°ã«å ããŠããããã¯ãã¹ãŠããã©ã°ã¡ã³ãã®èŠ³ç¹ããèŠçŽ ãèšè¿°ããããšãç®çãšããŠããŸããã€ãŸããããã¹ãã®å§ãŸããšçµããã§ãã
ããªãŒããã©ããŒã¹ãããšãéå±€æ§é ã圢æãããŸããããã¯ControlFlowã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãããèªèããããã¹ãŠã®èŠçŽ ãå¿ èŠãªæ¹æ³ã§ã¹ã¿ãã¯ãããŸãã
ã³ã¡ã³ãé
æ§æããªãŒã«ã³ã¡ã³ãã«é¢ããæ å ±ããªãã£ãããïŒã€ã³ã¿ãŒããªã¿ãŒãã³ã¡ã³ããå¿ èŠãšããªãããšã¯æããã§ãïŒãã³ã¡ã³ããæ倱ãªã衚瀺ããããã«å¿ èŠã§ããããããœãŒã¹ã³ãŒãã®è¿œå ãã¹ãå°å ¥ããå¿ èŠããããŸããã ãã®ããã»ãŒãžã§ã¯ãã³ã¡ã³ãã®åè¡ã«é¢ããæ å ±ãæœââåºãããŸãã ããã¯ç°¡åãªPythonææ³ãšè€æ°è¡ã³ã¡ã³ãã®æ¬ åŠãšããªããã»ããµã®ãããã§ç°¡åã«è¡ããŸãã
ã³ã¡ã³ãã¯ãã©ã°ã¡ã³ãã®ãªã¹ãã®åœ¢åŒã§åéãããŸããåãã©ã°ã¡ã³ãã¯ãäžé£ã®å±æ§ã«ãã£ãŠã³ã¡ã³ãã®1è¡ãèšè¿°ããŸããè¡çªå·ãéå§ãšçµäºã®åçªå·ãã³ã¡ã³ãã®éå§ãšçµäºã®ãã¡ã€ã«å ã®çµ¶å¯Ÿäœçœ®ã
ããšãã°ãã³ãŒãã®å ŽåïŒ
#!/bin/env python # encoding: latin-1 def f(): # What printed? print 154
ãã¥ãŒã®3ã€ã®ãã©ã°ã¡ã³ããåéãããŸãã
LineïŒ1 PosïŒ1 ... ã©ã€ã³ïŒ2ããžã·ã§ã³ïŒ1 ... ã©ã€ã³ïŒ5ããžã·ã§ã³ïŒ5 ...
ã³ã¡ã³ããã³ãŒãã¹ãããããšããŒãžãã
ã°ã©ããäœæããå Žåã2ã€ã®ç°ãªãããŒã¿æ§é ïŒå®è¡å¯èœã³ãŒããšã³ã¡ã³ãïŒã§ã¯ãªãã1ã€ãæ±ãæ¹ã䟿å©ã§ãã ããã«ãããã¢ã€ãã ãä»®æ³ãã£ã³ãã¹ã«é 眮ããããã»ã¹ãç°¡åã«ãªããŸãã ãã®ãããæ¡åŒµã¢ãžã¥ãŒã«ã§å¥ã®ã¹ããããå®è¡ãããŸããã³ã¡ã³ããèªèãããèŠçŽ ã«ããŒãžããŸãã
äŸãèããŠã¿ãŸãããïŒ
# leading comment a = 10 # side comment 1 # side comment 2

ã³ã¡ã³ããã³ãŒãã«ããŒãžãã
äžèšã®ã³ãŒãã®æ§æããªãŒã調ã¹ãçµæãç¹ã«CodeBlockã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãçæãããŸãã ããã«ã¯ãä»ã®ãã£ãŒã«ãã®äžã§ããbodyãleadingCommentãããã³sideCommentãã£ãŒã«ããããããã©ã°ã¡ã³ãã®èŠ³ç¹ãã察å¿ããèŠçŽ ãèšè¿°ããŠããŸãã bodyãã£ãŒã«ãã«ã¯æ§æããªãŒããã®æ å ±ãå ¥åãããã³ã¡ã³ããã£ãŒã«ãã«ã¯Noneãå«ãŸããŸãã
ããã»ãŒãžã®çµæã«åºã¥ããŠãã³ã¡ã³ããåéããããã«3ã€ã®ãã©ã°ã¡ã³ãã®ãªã¹ããäœæãããŸãã ããŒãžãããšããæåã®ãã©ã°ã¡ã³ãã¯CodeBlockã®leadingCommentãã£ãŒã«ããããã³sideCommentãã£ãŒã«ãã®2çªç®ãš3çªç®ã®ãã©ã°ã¡ã³ãã«å ¥åããããã«äœ¿çšãããŸãã ããŒãžã¯ãäž¡æ¹ã®æ å ±æºã§å©çšå¯èœãªè¡çªå·ã«åºã¥ããŠããŸãã
ãããã£ãŠãããŒãžã¹ããŒãžã®åºåã«ã¯ãã¡ã¢ãªå ã®ãã¡ã€ã«ãŸãã¯ãããã¡ã®å 容ã«é¢ããå®å šã«æºåãããåäžã®éå±€ããŒã¿æ§é ããããŸãã
ã¢ãžã¥ãŒã«æ§èœ
äžèšã®ãã€ãã©ã€ã³ã¹ããŒãžã¯C / C ++ã§èšè¿°ãããŠãããPythonã¢ãžã¥ãŒã«ãšããŠèšèšãããŠããŸãã äžè¬çãªçç±ãããããã¹ããå€æŽããããã«äžæåæ¢ããŠãã€ã¢ã°ã©ã ãåæç»ãããšãã®äžå¿«ãªé 延ãé¿ããããã«ãããããã¹ãŠã®æ®µéã®äœæ¥ãè¿ éã«ãããã£ãã®ã§ãã ããã©ãŒãã³ã¹ããã¹ãããããã«ãã¢ãžã¥ãŒã«ã¯æ¢åã®ãã©ãããã©ãŒã ã§èµ·åãããŸããã
- Intel Core i5-3210Mã©ããããã
- Ubuntu 14.04 LTS
æšæºã®Pythonã€ã³ã¹ããŒã«2.7.6ã®ãã¹ãŠã®ãã¡ã€ã«ãåŠçããŸãã 5707ãã¡ã€ã«ã§ã¯ãåŠçã«çŽ6ç§ããããŸããã ãã¡ããããã¡ã€ã«ã®ãµã€ãºã¯ç°ãªããã¢ãžã¥ãŒã«ã®åäœæéã¯ããã«äŸåããŸããããã¡ã€ã«ãããçŽ1ããªç§ãšããå¹³åçµæã¯æéã®æ©åšã§ã¯ãªãããã蚱容ç¯å²ãè¶ ããŠããããã§ãã å®éã«ã¯ãåŠçããå¿ èŠã®ããããã¹ãã¯ã»ãšãã©ã®å Žåæ¢ã«ã¡ã¢ãªã«ä¿åãããŠããããã£ã¹ã¯æäœã®æéã¯å®å šã«ãªããªã£ãŠããããããããã©ãŒãã³ã¹ã«ãã©ã¹ã®åœ±é¿ãåãŒããŸãã
ä»®æ³ãã£ã³ãã¹äžã®é 眮
ãã€ãã©ã€ã³ã®ãã®æ®µéã®ç®æšã¯ãå¿ èŠãªãã¹ãŠã®èŠçŽ ãä»®æ³ãã£ã³ãã¹ã«é 眮ãããããã®éã®çžäºæ¥ç¶ãèæ ®ã«å ¥ããããšã§ãã ä»®æ³ãã£ã³ãã¹ã¯ãé·æ¹åœ¢ã®ã»ã«ãæã€ãã£ã³ãã¹ãšããŠæ³åã§ããŸãã ã»ã«ã¯ç©ºã®å Žåãããã1ã€ã®ã°ã©ãã£ãã¯èŠçŽ ãŸãã¯ãã¹ããããä»®æ³ãã£ã³ãã¹ãå«ãå ŽåããããŸãã ãã®æ®µéã§ã¯ãèŠçŽ ã®çžå¯Ÿçãªé 眮ã®ã¿ãéèŠã§ãããæ£ç¢ºãªå¯žæ³ã¯éèŠã§ã¯ãããŸããã
åæã«ããã£ã³ãã¹ã®ãµã€ãºã¯åºå®ãããŠããããå¿ èŠã«å¿ããŠå³äžã«æ¡å€§ã§ããŸãã ãã®ã¢ãããŒãã¯ãæºåãããããŒã¿æ§é ãšãã£ãŒãã®æç»æ¹æ³ã«å¯Ÿå¿ããŠããŸãã ããã»ã¹ã¯å·Šäžé ããå§ãŸããŸãã å¿ èŠã«å¿ããŠãæ°ããè¡ãšåãè¿œå ãããŸãã ããšãã°ã次ã®ã³ãŒããããã¯ã«æ°ããè¡ãè¿œå ããããããã¯ã«ãµã€ãã³ã¡ã³ããããå Žåã¯æ°ããåãè¿œå ãããŸãã
ã»ã«ã«é 眮ã§ããã°ã©ãã£ãã¯èŠçŽ ã®ã»ããã¯ãèšèªã®èªèå¯èœãªèŠçŽ ã«å°ããªæ¡åŒµåãä»ãããã®ã«ã»ãŒå¯Ÿå¿ããŠããŸãã ããšãã°ãã»ã«ã«ã¯äžããäžã«ã€ãªããã³ãã¯ã¿ãå¿ èŠãªå ŽåããããŸãããèšèªã§ã¯ãã®ãããªèŠçŽ ã¯ãããŸããã
ä»®æ³ãã£ã³ãã¹ã®å Žåããªã¹ãã®ãªã¹ãïŒ2次å é åïŒã䜿çšãããŸããããã¯ããã»ã¹ã®éå§æã«ã¯ç©ºã§ãã
ããã»ã¹ã説æããç°¡åãªäŸãèããŠã¿ãŸãããã
a = 10 # side comment 1 # side comment 2

ãã£ã³ãã¹ã«ã°ã©ãã£ãã¯èŠçŽ ãé 眮ãã
äžã®åçã®å·ŠåŽã¯ãã³ãŒãåæã®çµæã«ãã£ãŠåœ¢æãããããŒã¿æ§é ã瀺ããŠããŸãã ControlFlowã€ã³ã¹ã¿ã³ã¹ã«ã¯ãããã€ãã®å±æ§ãšã¹ã€ãŒãã³ã³ãããå«ãŸããŸãããã®ã³ã³ããã«ã¯ãCodeBlockã€ã³ã¹ã¿ã³ã¹ãšãã1ã€ã®èŠçŽ ãããããŸããã
åæç¶æ ã§ã¯ããã£ã³ãã¹ã¯ç©ºã§ãããControlFlowãã€ãã¹ãéå§ãããŸãã ã¢ãžã¥ãŒã«ã¯ãã¹ã³ãŒããã€ãŸã è§äžžé·æ¹åœ¢ã®ãããªã ã€ã³ãã³ããèæ ®ããŠãã°ã©ãã£ãã¯èŠçŽ ã®ãµã€ãºãåŸã§èšç®ããããã«ãã¹ã³ãŒãã®é·æ¹åœ¢ã¯æ¡ä»¶ã«å¿ããŠã³ã³ããŒãã³ãã«åå²ãããŸãïŒé¢ãšè§åºŠã ã¢ãžã¥ãŒã«ã®é·æ¹åœ¢ã®å·Šäžé ããã€ã¢ã°ã©ã ã®äžçªäžã®é ã«ããããããã£ã³ãã¹ã«æ°ããè¡ãè¿œå ããè¡ã«1åãè¿œå ããŠãã¹ã³ãŒãã³ãŒããŒã»ã«ã«èŠçŽ ãé 眮ããŸãã åçŽããŒãžã³ã¯ãã§ã«æåã®ã»ã«ãç ç²ã«ããŠãããããé·æ¹åœ¢ã®äžç«¯ãå³ã«é 眮ããããšã¯ã§ããããã£ã³ãã¹ã暪æãã段éã§ã³ãŒããŒã³ãŒããŒãæ€åºãããæç¹ã§ãé·æ¹åœ¢ã¯ãŸã åäžã®å³åœ¢ãšããŠæç»ãããŸãã
次ã®è¡ã«ç§»åããŸãã ã¢ãžã¥ãŒã«ã«ã¯ãèµ·åæååãšãšã³ã³ãŒãã瀺ãããããŒããããŸãã 察å¿ãããã£ãŒã«ãã®å€ã¯Noneã§ãããã¿ã€ãã«ãæç»ããå¿ èŠããããŸãã ãããã£ãŠããã£ã³ãã¹ã«æ°ããè¡ãè¿œå ããŸãã ãã£ãŒãã§ã¯ãã¿ã€ãã«ã¯é·æ¹åœ¢ã®å åŽã«ãããã«ã€ã³ãã³ããä»ããŠããå¿ èŠããããŸãããã®ãããäœæããè¡ã«ã¿ã€ãã«ãããã«é 眮ããããšã¯ã§ããŸããã æåã®ã»ã«ã«ã¯ãå·Šé¢ã次ã«ã¿ã€ãã«ãé 眮ããå¿ èŠããããŸãã ãããã£ãŠã2ã€ã®åãè¿œå ããæåã«ã¹ã³ãŒããå·Šã«é 眮ãã2çªç®ã«ã¹ã³ãŒãããããŒãé 眮ããŸãã 3çªç®ã®ã»ã«ã«æ£ããé¢ãé 眮ããå¿ èŠã¯ãããŸããã ãŸããæå€§å¹ ã®åã«ããã€ã®åããããã¯ãŸã äžæã§ãã 次ã«ãã³ãŒããŒã³ãŒããŒãæ€åºãããæç¹ã§ãã¹ã³ãŒãã®é·æ¹åœ¢ãå šäœãšããŠæç»ãããŸãã
ã¢ãžã¥ãŒã«ã«ã¯ããã¥ã¡ã³ãè¡ããããå¥ã®è¡ãå¿ èŠã§ãã ããããããã¥ã¡ã³ãã®è¡ã¯ãããŸããã®ã§ãã¹ã€ãŒãã«è¡ããŸãã ã¹ã€ãŒãã®æåã®èŠçŽ ã¯ã³ãŒãã®ãããã¯ã§ãã æ°ããè¡ãè¿œå ãããã®äžã«å·Šé¢ã®åãè¿œå ããŸãã 次ã«ããã1åè¿œå ããŠãã³ãŒããããã¯ã®ã°ã©ãã£ãã¯èŠçŽ ãã»ã«ã«é 眮ããŸãã ãã®äŸã§ã¯ããããã¯ã«æšªæ¹åã®ã³ã¡ã³ãããããããã¯å³åŽã«é 眮ããå¿ èŠããããããå¥ã®åãè¿œå ããŠæšªæ¹åã®ã³ã¡ã³ããã»ã«ã«é 眮ããŸãã
ã¹ã€ãŒãã«ã¯èŠçŽ ããããªãã®ã§ãä»®æ³ãã£ã³ãã¹ãæºåããããã»ã¹ã¯çµäºããŸãã é·æ¹åœ¢ããã³åºé¢ã®å·Šäžé ã¯ãäžããã³å³åŽã§èª¬æããã®ãšåæ§ã®çç±ã§è¿œå ã§ããŸããã ã°ã©ãã£ãã¯èŠçŽ ã®å¹ŸäœåŠç寞æ³ãèšç®ããéã«äœãæ瀺ãããŠããããèæ ®ããå¿ èŠãããã ãã§ãã
ã¬ã³ããªã³ã°
ãã€ãã©ã€ã³ã®ãã®æ®µéã®ã¿ã¹ã¯ã¯ãç»é¢ã«æç»ããããã®ãã¹ãŠã®ã°ã©ãã£ãã¯ããªããã£ãã®ãµã€ãºãèšç®ããããšã§ãã ããã¯ãé 眮ããããã¹ãŠã®ã»ã«ããã©ããŒã¹ããå¿ èŠãªãµã€ãºãèšç®ããŠã»ã«å±æ§ã«ä¿åããããšã«ããè¡ãããŸãã
åã»ã«ã«ã¯ã2ã€ã®èšç®ãããå¹ ãš2ã€ã®é«ãããããŸã-é£æ¥ããã»ã«ã®ãµã€ãºãèæ ®ããŠãå¿ èŠæå°éã§å®éã«å¿ èŠã§ãã
æåã«ãé«ãã®èšç®æ¹æ³ã«ã€ããŠèª¬æããŸãã ããã¯è¡ããšã«çºçããŸãã ä»£å ¥æŒç®åã«å¯Ÿå¿ããèŠçŽ ãå«ãè¡ãæ€èšããŠãã ããã ããã§ãä»£å ¥æŒç®åã1ã€ã®ããã¹ãè¡ãå æããã³ã¡ã³ãã2ã€ãããããšãããããŸãã ããã¯ãã¬ã³ããªã³ã°æã«ã³ã¡ã³ãã»ã«ãç»é¢äžã«ããå€ãã®åçŽãã¯ã»ã«ãå¿ èŠãšããããšãæå³ããŸãã äžæ¹ãè¡ã®ãã¹ãŠã®ã»ã«ã¯åãé«ãã§ãªããã°ãªããŸãããããã§ãªãå Žåãäžã®ã»ã«ã¯ãªãã»ããä»ãã§æç»ãããŸãã ããã¯ãåçŽãªã¢ã«ãŽãªãºã ãæå³ããŸãã è¡å ã®ãã¹ãŠã®ã»ã«ãåã£ãŠãåæå°é«ããèšç®ããå¿ èŠããããŸãã 次ã«ãèšç®ããã°ããããæ倧å€ãéžæããå®éã«å¿ èŠãªé«ããšããŠä¿åããŸãã
ããå°ãè€éãªã®ã¯ãã»ã«ã®å¹ ãèšç®ããç¶æ³ã§ãã ãã®èŠ³ç¹ãããæååã«ã¯2ã€ã®ã¿ã€ãããããŸãã
- é£æ¥ããè¡ã®ã»ã«ã®å¹ ãèæ ®ããŠå¹ ãèšç®ããå¿ èŠããããã®
- é£æ¥ããè¡ã«é¢ä¿ãªãã»ã«å¹ ãèšç®ã§ãããã®
äŸåæååã®è¯ãäŸã¯ifã¹ããŒãã¡ã³ãã§ãã æ¡ä»¶ãããã¯ã®äžã«æç»ããããã©ã³ãã¯ãä»»æã®è€éãã§ããããã£ãŠä»»æã®å¹ ã«ããããšãã§ããŸãã ãããŠãå³ã«æç»ããå¿ èŠããã2çªç®ã®ãã©ã³ãã«ã¯ãäžã®è¡ã«ããæ¡ä»¶ãããã¯ããã®ã³ãã¯ã¿ãŒããããŸãã ããã¯ãäžã®ç·ã«å¿ããŠã³ãã¯ã¿ã»ã«ã®å¹ ãèšç®ããå¿ èŠãããããšãæå³ããŸãã
ãããã£ãŠãç¬ç«ããã©ã€ã³ã®å Žåãå¹ ã¯1åã®ãã¹ã§èšç®ãããæå°å¹ ã¯å®éã®å¹ ãšåãã§ãã
åŸå±è¡ã®é åã®å Žåãã¢ã«ãŽãªãºã ã¯ããè€éã§ãã æåã«ãé åå ã®ãã¹ãŠã®ã»ã«ã®æå°å¹ ãèšç®ãããŸãã 次ã«ãååã®å®éã®å¹ ã¯ãé ååã®ãã¹ãŠã®ã»ã«ã«å¿ èŠãªæå°å¹ ã®æ倧å€ãšããŠèšç®ãããŸãã ã€ãŸããç·ã®é«ããèšç®ããããã«è¡ããããã®ãšéåžžã«äŒŒãŠããŸãã
ãã¹ããããä»®æ³ãã£ã³ãã¹ã®èšç®ã¯ååž°çã«è¡ãããŸãã èšç®äžã«ãéžæãããã©ã³ãã®ã¡ããªãã¯ãããŸããŸãªã»ã«ã®ãã£ãŒã«ããããã¹ãããŒãžã³ãªã©ãããŸããŸãªèšå®ãèæ ®ãããŸãã ãã§ãŒãºãå®äºãããšãã°ã©ãã£ãã¯ããªããã£ããæ¢ã«ã¹ã¯ãªãŒã³ãã£ã³ãã¹ã«é 眮ããããã«å¿ èŠãªãã®ããã¹ãŠæºåãããŠããŸãã
æç»
æç»ã®æ®µéã¯éåžžã«ç°¡åã§ãã QTã©ã€ãã©ãªã¯ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã«äœ¿çšããããããåã®æé ã§èšç®ããã寞æ³ã§ã°ã©ãã£ãã¯ã·ãŒã³ãäœæãããŸãã 次ã«ãä»®æ³ãã£ã³ãã¹ã®ååž°ãã¢ãŒãå®è¡ãããå¿ èŠãªåº§æšãæã€å¿ èŠãªèŠçŽ ãã°ã©ãã£ãã¯ã·ãŒã³ã«è¿œå ãããŸãã
èµ°æ»ããã»ã¹ã¯å·Šäžé ããå§ãŸããçŸåšã®åº§æšã¯0ã0ã«èšå®ãããŸãã次ã«ãåã»ã«ãåŠçããåŸãã©ã€ã³ããã€ãã¹ãããçŸåšã®x座æšã«å¹ ãè¿œå ãããŸãã 次ã®è¡ã«ç§»åãããšãx座æšã¯0ã«ãªã»ãããããåŠçãããã°ããã®è¡ã®é«ããy座æšã«è¿œå ãããŸãã
ããã§ãã³ãŒãã«ãã£ãŠã°ã©ãã£ãã¯ãååŸããããã»ã¹ãå®äºããŸããã
çŸåšãšæªæ¥
次ã«ããã§ã«å®è£ ãããŠããæ©èœãšä»åŸè¿œå ã§ããæ©èœã«ã€ããŠèª¬æããŸãã
äœãè¡ãããã®ãªã¹ãã¯ããªãçãã§ãïŒ
- ã³ãŒãå€æŽã®äžæåæ¢äžã®èªåãã£ãŒãæŽæ°ã
- åæ¹åã®å¯èŠããã¹ããšã°ã©ãã£ãã¯ã®æååæã å
¥åãã©ãŒã«ã¹ãããã¹ããšãã£ã¿ãŒã«ãããç¹å¥ãªããŒã®çµã¿åãããæŒãããå Žåããã€ã¢ã°ã©ã ã¯çŸåšã®ã«ãŒãœã«äœçœ®ã«æãè¿ãããªããã£ããæ€çŽ¢ããŸãã 次ã«ãããªããã£ãã匷調衚瀺ããããã£ãŒããã¹ã¯ããŒã«ããŠããªããã£ãã衚瀺ãããŸãã éæ¹åã§ã¯ãããªããã£ããããã«ã¯ãªãã¯ããŠåæãå®è¡ããŸããããã«ãããããã¹ãã«ãŒãœã«ãç®çã®ã³ãŒãè¡ã«ç§»åããå¿
èŠã«å¿ããŠããã¹ããšãã£ã¿ãŒãã¹ã¯ããŒã«ãããŸãã
- ã¹ã±ãŒãªã³ã°ãã£ãŒãã çŸåšã®å®è£
ã§ã¯ãçµã¿èŸŒã¿ã®QTã©ã€ãã©ãªã¹ã±ãŒãªã³ã°ããŒã«ã䜿çšããŠããŸãã å°æ¥çã«ã¯ããã©ã³ããµã€ãºãå€æŽãããã¹ãŠã®èŠçŽ ã®ãµã€ãºãåèšç®ããããšã«ãããã¹ã±ãŒãªã³ã°ã«çœ®ãæããäºå®ã§ãã
- ã°ã©ããPDFãPNGãSVGã«ãšã¯ã¹ããŒãããŸãã åºåããã¥ã¡ã³ãã®å質ã¯QTã©ã€ãã©ãªã®å®è£
ã«ãã£ãŠæ±ºãŸããŸããããã¯ããã®æ©èœã«äœ¿çšãããã®ã¯ãŸãã«ãã®ããŒã«ã ããã§ãã
- ã¹ã³ãŒãããã²ãŒã·ã§ã³ãã€ã³ã ã°ã©ãã£ãã¯ã¹ã¯ã¹ã³ãŒãã®æŠå¿µãå€çšãããããäžè¬çãªãã€ã¢ã°ã©ã ã«ã¯å€ãã®ãã¹ããããé åãå«ãŸããŸãã ããã²ãŒã·ã§ã³ããŒã«ã¯ãã°ã©ãã£ãã¯ã·ãŒã³äžã®ããŠã¹ã«ãŒãœã«ã®çŸåšäœçœ®ã®ãã¹ããããã¹ã³ãŒãã«é¢ããçŸåšã®ãã¹ã衚瀺ãããŸãã
- ifã¹ããŒãã¡ã³ãã®ãã©ã³ãã®é
眮ãåå¥ã«åãæ¿ããŸãã ããã©ã«ãã§ã¯ãNãã©ã³ããäžã«æç»ãããYãã©ã³ããå³ã«æç»ãããŸãã ãã®å³ã§ã¯ãæ¡ä»¶ãããã¯ã®ã³ã³ããã¹ãã¡ãã¥ãŒã䜿çšããŠãã©ã³ãã®å Žæã亀æã§ããŸãã
- ã°ã©ãã£ãã¯ããªããã£ãã®ããã¹ããåå¥ã«çœ®ãæããŸãã ãããã¯ã®ããã¹ããä»»æã®ããã¹ãã«çœ®ãæãããå ŽåããããŸãã ããšãã°ãå€æ°ãšé¢æ°åŒã³åºãã«é¢ããæ¡ä»¶ã¯é·ãããŸã£ããæããã§ã¯ãªãå ŽåããããŸãããèªç¶èšèªã®ãã¬ãŒãºã¯äœãèµ·ãã£ãŠãããããããã説æã§ããŸãã ã°ã©ãã䜿çšãããšã衚瀺ãããŠããããã¹ããä»»æã®ããã¹ãã«çœ®ãæããããšãã§ããããŒã«ãããã«ãœãŒã¹ã衚瀺ãããŸãã
- ããªããã£ãã®è²ãåå¥ã«çœ®ãæããŸãã ã°ã©ãã£ãã¯ããªããã£ãã匷調衚瀺ããŠãã³ãŒãã®ä»»æã®éšåã«æ³šæãåŒããããšããèŠæãããå ŽåããããŸãã ããšãã°ãæœåšçã«å±éºãªé åãèµ€ã§åŒ·èª¿è¡šç€ºããããå šäœçãªæ©èœãæ åœããèŠçŽ ã«å ±éã®è²ãéžæãããã§ããŸãã ãã®å³ã§ã¯ãããªããã£ãã®èæ¯ããã©ã³ããããã³ã¹ãããŒã¯ã®è²ãå€æŽã§ããŸãã
å®è·µã瀺ãããã«ãæ¢ã«å®è£ ãããŠããããªããã£ãã®åã ã®å€æŽãçµã¿åãããŠäœ¿çšââãããšããã€ã¢ã°ã©ã ã®å€èŠ³ãå€§å¹ ã«å€ããå¯èœæ§ããããŸãã
æ¢åã®ãã¬ãŒã ã¯ãŒã¯ãè£å®ã§ããå¯èœæ§ã¯ãæ³ååã«ãã£ãŠã®ã¿å¶éãããŸãã æãæãããªãã®ãããã«ãªã¹ãããŸãã
- ã¹ã¯ããŒã«æã®ããã¹ããšã°ã©ãã£ãã¯ã®èªååæã
- ãã£ãŒãã®ç·šéã®ãµããŒãïŒãããã¯ã®åé€ã移åãè¿œå ã åã ã®ãããã¯å ã®ããã¹ããç·šéããŸãã ãããã¯ãã³ããŒããŠè²Œãä»ããŸãã
- ãããã¯ã䜿çšããã°ã«ãŒãæäœã®ãµããŒãã
- ãã£ãŒãã®èŠèŠåããããã°ããŸãã å°ãªããšãçŸåšã®ãããã¯ãšãã®äžã®çŸåšã®è¡ã®ãã€ã©ã€ãã
- ãã£ãŒãæ€çŽ¢ããµããŒãããŸãã
- å°å·ãµããŒãã
- ããŸããŸãªèŠçŽ ã®é衚瀺/衚瀺ã®ç®¡çïŒã³ã¡ã³ããããã¥ã¡ã³ãè¡ãé¢æ°æ¬äœãã¯ã©ã¹ãã«ãŒããªã©ã
- ããŸããŸãªã¿ã€ãã®ã€ã³ããŒãã®åŒ·èª¿è¡šç€ºïŒãããžã§ã¯ãå ãã·ã¹ãã å ãæªç¢ºèªã
- ãã€ã¢ã°ã©ã äžã®è¿œå ã®éèšèªãããã¯ãŸãã¯ç»åã®ãµããŒãã
- ã¹ããŒãã¹ã±ãŒãªã³ã°ã ããã€ãã®åºå®ã¬ãã«ã®ã¹ã±ãŒã«ãå ¥åã§ããŸãããã¹ãŠã®èŠçŽ ãã³ã¡ã³ããšããã¥ã¡ã³ããŒã·ã§ã³è¡ãªããã¯ã©ã¹ãšé¢æ°ããããŒã®ã¿ããµããã£ã¬ã¯ããªå ã®ãã¡ã€ã«éã®äŸåé¢ä¿ãå€éšãªã³ã¯ãžã®ãã€ã³ã¿ãŒã ãã®åäœãä»»æã®ä¿®é£Ÿåã䜿çšããŠããŠã¹ãã€ãŒã«ã«ä¿®æ£ãããšãéåžžã«è¿ éã«æŠèŠæ å ±ãååŸã§ããŸãã
- è€æ°ã®ãããã¯ã1ã€ã«ãŸãšããŠããŒã«ããã¯ããŸãã å ±åã¿ã¹ã¯ãå®è¡ãããããã¯ã®ã°ã«ãŒãã¯ããã€ã¢ã°ã©ã äžã§åŒ·èª¿è¡šç€ºãããç¬èªã®ã°ã©ãã£ãã¯ã¹ãšããã¹ããæäŸããã1ã€ã®ãããã¯ã«æããããããšãã§ããŸãã ããã§ã®èªç¶ãªå¶éã¯ãã°ã«ãŒãã«ã¯1ã€ã®å ¥åãš1ã€ã®åºåãå¿ èŠã§ããããšã§ãã ãã®ãããªæ©èœã¯ãæªç¥ã®ã³ãŒããæäœãããšãã«äŸ¿å©ã«ãªãå ŽåããããŸãã è€æ°ã®ãããã¯ãé 眮ãããŠããããšãç解ããå Žåã¯ãã°ã«ãŒããçµã¿åãããŠãããšãã°ãMD5èšç®ããªã©ã®ç®çã®çœ²åãæã€1ã€ã®ãããã¯ã«çœ®ãæããããšã§ããã€ã¢ã°ã©ã ã®è€éãã軜æžã§ããŸãã ãã¡ããããã€ã§ã詳现ã«æ»ãããšãã§ããŸãã ãã®é¢æ°ã¯ããã€ã¢ã°ã©ã ã®3çªç®ã®æ¬¡å ã®å°å ¥ãšèŠãªãããšãã§ããŸãã
CML v.1
åã®ã»ã¯ã·ã§ã³ã«ãªã¹ããããæ©èœã¯ã2ã€ã®ã°ã«ãŒãã«åé¡ã§ããŸãã
- ã³ãŒãã«é¢é£ããæ å ±ã®ä¿åãèŠæ±ããã
- å®å šã«ã³ãŒãã«äŸåããŸããã
ããšãã°ãã¹ã±ãŒãªã³ã°æ©èœã¯ã³ãŒãããå®å šã«ç¬ç«ããŠããŸãã çŸåšã®ã¹ã±ãŒã«ã¯ãçŸåšã®IDEèšå®ãšããŠä¿åããå¿ èŠããããŸãã
äžæ¹ããã©ã³ãã¹ã€ããã³ã°ãç¹å®ã®ãªãã¬ãŒã¿ã«é¢é£ä»ããããŠããå Žåãããã«é¢ããæ å ±ã¯äœããã®æ¹æ³ã§ä¿åããå¿ èŠããããŸãã çµå±ã®ãšããã次ã®ã»ãã·ã§ã³ã§ã¯ã以åã«èŠå®ããããšããã«æç»ããå¿ èŠããããŸãã
æããã«ãè¿œå æ å ±ãä¿åããã«ã¯2ã€ã®æ¹æ³ããããŸãããœãŒã¹ããã¹ãã«çŽæ¥ä¿åããããå¥ã®ãã¡ã€ã«ã«ä¿åããããããã«ã¯å€æ°ã®ãã¡ã€ã«ã«ä¿åãããã§ãã 決å®ãäžãéã次ã®èæ ®äºé ãèæ ®ãããŸããã
- éçºè ã®ããŒã ããããžã§ã¯ãã«åãçµãã§ãããäžéšã®éçºè ãã³ãŒãã衚瀺ããã°ã©ãã£ã«ã«æ©èœãããŸã䜿çšããŠãããšæ³åããŠãã ããããŸããã³ãŒããæäœããããã®åºæ¬çãªèæ ®äºé ã®ä»ã®éšåã§ã¯ãvimã®ã¿ã䜿çšããŸãããã®å Žåãè¿œå æ å ±ãã³ãŒããšã¯å¥ã«ä¿åãããŠããå Žåãç°ãªããã£ã³ãã®ã¡ã³ããŒã«ãã代æ¿ã³ãŒãç·šéäžã®äžè²«æ§ã¯ãäžå¯èœã§ã¯ãªãã«ããŠããéåžžã«å°é£ã§ãã確ãã«ãè¿œå æ å ±ã¯ããæç¹ã§ééã£ãŠããããšãããããŸãã
- è¿œå ã®ãã¡ã€ã«ã®ã¢ãããŒããéžæãããå Žåããããžã§ã¯ãã®ã³ã³ãã³ããæ£ããããããŒãžã§ã³ç®¡çã·ã¹ãã ã§äœæ¥ãããšãã«ããŒã ã®è¿œå ã®åªåãå¿ èŠã«ãªããŸãã
- éçºè ãè¿œå ã®ããŒã¯ã¢ãããå°å ¥ããå Žå-ããšãã°ãç解ã§ããªãæ¡ä»¶ã®é·ãã³ãŒããé©åãªãã¬ãŒãºã«çœ®ãæããå Žå-ããã¯æ¥œãã¿ã®ããã§ã¯ãããŸãããããã®ãããªããŒã¯ã¢ããã¯è²Žéã§ãããã®ãããªçŸãã圢ã§ãªããŠããã°ã©ãã£ãã¯ã¹ã䜿çšããªã人ããã®å€ã䜿çšã§ããããã«ããŠãããšäŸ¿å©ã§ãã
ãããã£ãŠãè¿œå æ å ±ããœãŒã¹ããã¹ããšãšãã«ãã¡ã€ã«ã«çŽæ¥ä¿åããããã®ã³ã³ãã¯ããªãœãªã¥ãŒã·ã§ã³ãããå Žåã¯ãããã䜿çšããããšããå§ãããŸãããã®ãããªè§£æ±ºçãèŠã€ãããCMLïŒCodimension Markup LanguageãšåŒã°ããŸããã
CMLã¯ãPythonã³ã¡ã³ãã䜿çšãããã€ã¯ãããŒã¯ã¢ããèšèªã§ããåCMLã³ã¡ã³ãã¯ã1ã€ä»¥äžã®é£æ¥ããè¡ã§æ§æãããŸããæåã®è¡ã®åœ¢åŒã¯æ¬¡ã®ããã«éžæãããŸãã
# cml <> <> [ =]
ãããŠãç¶ç¶è¡ã®åœ¢åŒã¯æ¬¡ã®ãšããã§ãã
# cml+ < cml >
ãªãã©ã«cmlããã³cml +ã¯ãCMLã³ã¡ã³ããä»ãšåºå¥ãããã®ã§ããæŽæ°ã§ããããŒãžã§ã³ã¯ãCMLãé²åããå Žåã«å°æ¥å°å ¥ãããŸãããã¿ã€ãã¯ãã³ã¡ã³ãããã£ãŒãã«ã©ã®ããã«åœ±é¿ãããã決å®ããŸãã䜿çšãããã¿ã€ãã¯ãrtïŒããã¹ãã®çœ®æã®ç¥ïŒãªã©ã®æååèå¥åã§ããkey = valueã®ãã¢ã¯ãå¿ èŠãªãã¹ãŠã®ãã©ã¡ãŒã¿ãŒã説æããæ©äŒãæäŸããŸãã
ã芧ã®ãšããããã®ãã©ãŒãããã¯ã·ã³ãã«ã§äººéãèªã¿ããã圢åŒã§ãããããã£ãŠãIDEã䜿çšãããšãã ãã§ãªããããã¹ãã衚瀺ãããšãã«ããè¿œå ã®æçšãªæ å ±ãæœåºããå¯èœæ§ã®èŠä»¶ãæºããããŸããããã«ãã°ã©ãã£ãã¯ã¹ã䜿çšãã人ãšäœ¿çšããªã人ãšã®éã®å¯äžã®èªçºçãªåæã¯ãCMLã³ã¡ã³ããç Žããªãããšã§ãã
CMLïŒããã¹ã眮æ
ããã¹ãã眮æããããã®CMLã³ã¡ã³ãã®èªèã¯æ¢ã«å®è£ ãããŠããŸãããããã¯ã®åã®å é ã®ã³ã¡ã³ããšããŠè¡šç€ºãããå ŽåããããŸããäŸïŒ
# cml 1 rt text="Believe me, I do the right thing here" False = 154

ããã¹ããå€æŽãããã³ãŒããããã¯
GUIããã®ãµããŒãã¯ãŸã ãããŸããããã®ãããªã³ã¡ã³ãã¯ãããã¹ããšãã£ã¿ãŒããã®ã¿è¿œå ã§ããŸããtextãã©ã¡ãŒã¿ã®ç®çã¯éåžžã«æçœã§ãããrtã¿ã€ãã¯ãreplace textã®ç¥èªã«åºã¥ããŠéžæãããŸãã
CMLïŒãã©ã³ãã¹ã€ããã³ã°ã®å Žå
ãã©ã³ããæ¢ã«å®è£ ãããŠããå Žåãåãæ¿ããããã®CMLã³ã¡ã³ããèªèããŸãããµããŒãã¯ãããã¹ãåŽãšã°ã©ãã£ãã¯ã¹åŽã®äž¡æ¹ã§è¡ãããŸããæ¡ä»¶ãããã¯ã®ã³ã³ããã¹ãã¡ãã¥ãŒããã³ã¡ã³ããéžæãããšãã³ã¡ã³ããã³ãŒãã®é©åãªå Žæã«æ¿å ¥ããããã£ãŒããå床çæãããŸãã
# cml 1 sw if False == 154: print("That's expected") else: print("Hmmm, has the code above been run?")

Nåå²ãå³åŽã«ããifã¹ããŒãã¡ã³ã
äžèšã®äŸã§ã¯ãNåå²ã¯æ¡ä»¶ã®å³åŽã«æãããŠããŸãã
ãã®CMLã³ã¡ã³ãã¯ãã©ã¡ãŒã¿ãŒãå¿ èŠãšããªãããšãããããŸãããããŠããã®ã¿ã€ãswã¯ãåèªã¹ã€ããã®ç¥èªã«åºã¥ããŠéžæãããŸãã
CMLïŒè²ã®å€æŽ
è²ã®å€æŽã«é¢ããCMLã³ã¡ã³ãã®èªèã¯æ¢ã«å®è£ ãããŠããŸãããããã¯ã®åã®å é ã®ã³ã¡ã³ããšããŠè¡šç€ºãããå ŽåããããŸããäŸïŒ
# cml 1 cc background="255,138,128" # cml+ foreground="0,0,255" # cml+ border="0,0,0" print("Danger! Someone has damaged False")

åå¥ã®è²ã§ãããã¯ïŒ
èæ¯ïŒèæ¯ãã©ã¡ãŒã¿ãŒïŒããã©ã³ãè²ïŒåæ¯ãã©ã¡ãŒã¿ãŒïŒãããã³é¡ã®è²ïŒå¢çç·ãã©ã¡ãŒã¿ãŒïŒã®è²ã®å€æŽããµããŒãããŸããccã¿ã€ãã¯ãã«ã¹ã¿ã ã«ã©ãŒãšããèšèã®ç¥èªã«åºã¥ããŠéžæãããŸãã
GUIããã®ãµããŒãã¯ãŸã ãããŸããããã®ãããªã³ã¡ã³ãã¯ãããã¹ããšãã£ã¿ãŒããã®ã¿è¿œå ã§ããŸãã
CMLïŒã°ã«ãŒãã®æãããã¿
çŸåšããã®ã¿ã€ãã®ã³ã¡ã³ãã¯ãµããŒããããŠããŸããããæ©èœãå®è£ ããæ¹æ³ã¯ãã§ã«æããã§ãã
ã¢ã¯ã·ã§ã³ã®ã·ãŒã±ã³ã¹ã¯æ¬¡ã®ãšããã§ãããŠãŒã¶ãŒã¯å¶éãèæ ®ããŠããã€ã¢ã°ã©ã äžã®ãããã¯ã®ã°ã«ãŒããéžæããŸããã°ã«ãŒãã«ã¯1ã€ã®å ¥åãš1ã€ã®åºåããããŸãã次ã«ãã³ã³ããã¹ãã¡ãã¥ãŒããé ç®ãéžæããŸãïŒã°ã«ãŒãã«çµåããŸãã次ã«ããŠãŒã¶ãŒã¯ã°ã«ãŒãã®ä»£ããã«æç»ãããããã¯ã®ã¿ã€ãã«ãå ¥åããŸããå ¥åã®æåŸã«ããã£ãŒãã¯æŽæ°ããã圢åŒã§åæç»ãããŸãã
æããã«ãåäžã®ãšã³ãã£ãã£ãšããŠã®ã°ã«ãŒãã®å Žåãã³ãŒãã«ã¯éå§ç¹ãšçµäºç¹ããããŸãããããã£ãŠã次ã®ãããªå Žæã«CMLã³ã¡ã³ããæ¿å ¥ã§ããŸãã
# cml gb uuid="..." title="..." . . . # cml ge uuid="..."
ããã§ã¯ãã°ã«ãŒãã®äœææã«uuidãã©ã¡ãŒã¿ãèªåçã«çæãããŸãããã¹ãã¬ãã«ã¯ããã€ã§ããããããã°ã«ãŒãã®éå§ãšçµäºã®ãã¢ãæ£ããèŠã€ããããã«å¿ èŠã§ããtitleãã©ã¡ãŒã¿ãŒã®ç®çã¯æããã§ã-ããã¯ãŠãŒã¶ãŒãå ¥åããããã¹ãã§ããã¬ã³ãŒãã¿ã€ãgbãšgeã¯ãããããã°ã«ãŒãéå§ãšã°ã«ãŒãçµäºãšããåèªã®ç¥èªã®ç®çã§å°å ¥ãããŸããã
uuidã䜿çšãããšãããŸããŸãªãšã©ãŒã蚺æããããšãã§ããŸããããšãã°ãããã¹ããç·šéããçµæãCMLã³ã¡ã³ãã®ãã¢ã®1ã€ãåé€ãããå¯èœæ§ããããŸããuuidã䜿çšã§ãããã1ã€ã®ã±ãŒã¹ã¯ãIDEã°ã«ãŒãã«ä¿åããããšã§ããIDEã°ã«ãŒãã¯ã次ã®ã»ãã·ã§ã³ã§æå°åãããããã«è¡šç€ºãããå¿ èŠããããŸãã
å¯äœçš
ãã®ããŒã«ã䜿çšããå®è·µã«ããããã®æè¡ã«ã¯ãåæéçºæã«ã¯ãŸã£ããèæ ®ãããªãã£ãèå³æ·±ãå¯äœçšãããããšãããããŸããã
第äžã«ãçæãããå³ãããã¥ã¡ã³ãåããã³ååãšã®è°è«ã«äœ¿çšãããšäŸ¿å©ã§ããããšãããããŸãããå€ãã®å Žåãããã°ã©ãã³ã°ã«é¢ä¿ããªãããäž»é¡åéã®å°é家ã§ãããã®ãããªå Žåãå®è¡ãããããšãæå³ããŠããªãããã¢ã¯ã·ã§ã³ã®ããžãã¯ã«å¯Ÿå¿ããPythonã®æ£åŒãªæ§æã«å¯Ÿå¿ããã³ãŒããæºåãããŸãããçæããããã£ãŒãã¯ãããã¥ã¡ã³ãã«æ¿å ¥ãããããå°å·ãããŠè°è«ãããŸãããããžãã¯ãç°¡åã«å€æŽã§ãããšããè¿œå ã®å©äŸ¿æ§ãæããã«ãªããŸãã-ã°ã©ãã¯å¿ èŠãªãã¹ãŠã®ã€ã³ãã³ãã§å³åº§ã«åæç»ãããã°ã©ãã£ãã¯ã䜿çšããæåæäœãå¿ èŠãšããã«èª¿æŽãããŸãã
第äºã«ãèå³æ·±ãçŽç²ã«å¿ççãªå¹æãçŸããŸãããéçºè ã¯ãCodimensionã䜿çšããŠç¬èªã®é·æã³ãŒããéãããšããããã€ã¢ã°ã©ã ããããã«èŠããããšã«æ°ã¥ããŸãã-è€éãããããçŽããããã§ãããããŠãããæŽç·Žãããå³ãåŸãããã«ã圌ã¯ããã¹ãã«å€æŽãå ããå®éã«ã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°ãšåçŽåãå®è¡ããŸãããããã«ãããç解ã®è€éãã軜æžãããã³ãŒããããã«ãµããŒããããŸãã
第äžã«ãPythonåãã«éçºãè¡ããããšããäºå®ã«ããããããããã®æè¡ã¯ä»ã®ããã°ã©ãã³ã°èšèªã«ãæ¡åŒµã§ããå¯èœæ§ããããŸãã Pythonã¯ããã€ãã®çç±ãããã¹ãã®å ŽãšããŠéžã°ããŸãããèšèªã¯äººæ°ããããŸãããåæã«æ§æçã«ã·ã³ãã«ã§ãã
è¬èŸ
ãã®ãããžã§ã¯ãã®äœæ¥ãæäŒã£ãŠããããã¹ãŠã®äººã«æè¬ããããšæããŸããååã®Dmitry KazimirovãIlya LoginovãDavid Makelhaniãããã³Sergey FukanchikããããŸããŸãªæ®µéã§ã®éçºã®ããŸããŸãªåŽé¢ãæ¯æŽããŠãããããšã«æè¬ããŸãã
Codimension IDEã§ã®äœæ¥ã§äœ¿çšãããPythonãªãŒãã³ãœãŒã¹ããã±ãŒãžã®äœæè ããã³éçºè ã«æè¬ããŸãã