æè¿ãçæç³»AIãšåŒã°ããæè¡ã話é¡ãšãªã£ãŠãããChatGPTãStable Diffusionãªã©ã®AIã§ã¯æç« ã§æç€ºãå ¥åããããšã§ãæç€ºã«æ²¿ã£ãç»åãæç« ãããã°ã©ã ãªã©ãçæããããšãã§ãããããã§ãä»åã¯GitHub Copilotãå©çšããŠãè¿·è·¯ã²ãŒã äœãã«ææŠããŠã¿ãããã©ãã ãæ¥œãã§ãããæ¥œãã¿ã«ããŠæ¬²ããã
æãããŠAIã¯ããã°ã©ããŒã®çžæ£ãšãªãåŸããïŒ - GitHub Copilotã䜿ã£ãŠã¿ãã
å æ¥ãå§åйé£èŒã®JavaScripté£èŒ(ãã¡ã)ã«ãŠãChatGPTãå©çšããŠé»åã¢ããªãäœã£ãŠã¿ããChatGPTã¯æ±çšçšéã§å©çšã§ããAIã§ãããããããªãã«è³ªã®è¯ã粟床ã®ããã°ã©ã ãäœæããããšãã§ãããããã§ä»åã¯ãããããã°ã©ãã³ã°ã«ç¹åããAIã䜿ã£ãŠã¿ãããšæããæãããŠAIã¯ããã°ã©ããŒã®çžæ£ãšãªãåŸãã®ã§ããããã
GitHub Copilot(ãã¡ã)ã¯ãOpenAIã®GPT-3.5 Turboãšããå€§èŠæš¡ãªæ©æ¢°åŠç¿ã¢ãã«ãå©çšãããµãŒãã¹ãšãªã£ãŠããããPythonããJavaScriptããTypeScriptããRubyããGoããC#ããC++ããªã©å¹ åºãããã°ã©ãã³ã°èšèªã«å¯Ÿå¿ããŠãããã¡ãªã¿ã«ããCopilotããšã¯ãå¯æçžŠå£«ããšããæå³ã§ããããã®ååããããããã°ã©ãã³ã°éçºãšããæ ã®ãäŸãšããŠäœ¿ã£ãŠãããããšãæ³å®ããŠããããšãåããã
-

GitHub Copilotã®Webãµã€ã
ãã ããGitHub Copilotã¯ææãšãªã£ãŠãããå人å©çšã§ããã°ãæ10ãã«ã幎100ãã«ãéžæã§ãããåçš¿å·çæç¹ã§60æ¥ã®ããªãŒãã©ã€ã¢ã«æéãèšããããŠããã
Visual Studio Codeã§Copilotã䜿ã£ãŠã¿ãã
GitHub Copilotã¯æåãšãã£ã¿ã®ãã©ã°ã€ã³ãšããŠçšæãããŠãããä»åã¯ãæåãªã³ãŒãã£ã³ã°çšãšãã£ã¿ã®ãVisual Studio Codeããå©çšããŠã¿ããã
æåã«ãGitHub Copilotãæå¹ã«ããããGitHubã¢ã«ãŠã³ããäœæããäžã§ãCopilotã®Webãµã€ããããCopilotã®å©çšãã¯ãããããCopilotã®ãã©ã³ãéžã³ãäœæãã¯ã¬ãžããã«ãŒãã®å ¥åãå¿ èŠãšãªãã
次ã«ãVisual Studio Codeãã€ã³ã¹ããŒã«ããŠãèµ·åãããç»é¢å·ŠåŽã«ããExtensionsã®ã¢ã€ã³ã³ãã¯ãªãã¯ããããäžéšã«ããæ€çŽ¢ããã¯ã¹ã§ãcopilotããæ€çŽ¢ããŠãGitHub Copilotãã®æ¡åŒµãã€ã³ã¹ããŒã«ãããã
Copilotæ¡åŒµãã€ã³ã¹ããŒã«ããäžã§ãæ°èŠãã¡ã€ã«ãäœæãããšã次ã®ãããªãã€ã¢ãã°ã衚瀺ãããã[Sign in to GitHub]ãã¯ãªãã¯ããŠãGitHubã«ãµã€ã³ã€ã³ãããããããŠã飿ºæ©èœãæå¹ã«ãããšå©çšå¯èœã«ãªãã
ãããŠäœ¿ãæ¹ã ããCopilotæ¡åŒµãæå¹ã«ãªã£ãŠããã°ãæ°èŠããã°ã©ã ãäœæããã³ã¡ã³ãã颿°åãèšè¿°ããŠãã°ããåŸ ã€ã ãã ãäœãç¹å¥ãªããŒãæŒãå¿ èŠã¯ãªããå ¥åããã³ã¡ã³ããããã°ã©ã ã«åºã¥ããŠãç¶ãããã°ã©ã ãèªåçæããŠããããçæããããã°ã©ã ã¯èãè²ã®æåã§è¡šç€ºãããã®ã§ããã®éã[Tab]ããŒãæŒããšå®éã«ã³ãŒããæ¿å ¥ãããã
-

Copilotæ¡åŒµãã€ã³ã¹ããŒã«ããããããã°ã©ã ãã³ã¡ã³ããå ¥åããŠå°ãåŸ ã£ãŠãããšèªåã§ç¶ãã衚瀺ããã
è¿·è·¯ãèªåçæããŠã¿ãã
ä»åã¯ãæ¬é£èŒã®90åç®ã§ç޹ä»ããPyGameã䜿ã£ãŠè¿·è·¯ã²ãŒã ãäœã£ãŠã¿ããããã®ããã«ãæåã«ã³ãã³ãã©ã€ã³ã§äžèšã®ã³ãã³ããå®è¡ããŠPyGameãã€ã³ã¹ããŒã«ããŠãããã
python3 -m pip install pygame==2.1.2
ããã§æºåã¯æŽã£ããCopilotã«äŸé ŒããŠãè¿·è·¯ãèªåçæããããã°ã©ã ãäœã£ãŠãããããšã«ãããã
Copilotã§ã¯ã颿°åãã³ã¡ã³ããèšè¿°ãããšããã®ç¶ããäºæž¬ããŠèªåçæãããããã§ãVisual Studio Codeãèµ·åããŠãmaze.pyããšãããã¡ã€ã«ãäœæããŠã次ã®ãããªã³ãŒããå ¥åãããã
# è¿·è·¯ãèªåçæãã
# 0:éè·¯ 1:å£ãšãã
def make_maze(size_x, size_y):
# ã©ã³ãã ã«è¿·è·¯ãçæãã
å°ãåŸ ã€ãšãCopilotãç°è²ã®æåã§èªåçæããããã°ã©ã ã衚瀺ããŠããããããã§ã[Tab]ããŒãæŒããšããã°ã©ã ãå®éã«æ¿å ¥ã§ããããªãã[ESC]ããŒãæŒããšãã£ã³ã»ã«ãšãªãã
ããã§ã¯ãããã3è¡ã®ã³ã¡ã³ããš1è¡ã®é¢æ°åãå ¥åããã ãã§ã以äžã®ãããªå®éã®ããã°ã©ã ãäœã£ãŠããããæ¥æ¬èªã§æç€ºãäžãããšãæ¥æ¬èªã®ã³ã¡ã³ããéææ¿å ¥ããŠãããããã ã
# è¿·è·¯ãèªåçæãã
# 0:éè·¯ 1:å£ãšãã
def make_maze(size_x, size_y):
# ã©ã³ãã ã«è¿·è·¯ãçæãã
# --- ãã®è¡ä»¥éãCopilotãçæãã ---
maze = [[1 for i in range(size_x)] for j in range(size_y)]
for i in range(1, size_y-1):
for j in range(1, size_x-1):
maze[i][j] = random.randint(0, 1)
# å£ã®æ°ã調æŽãã
for i in range(1, size_y-1):
for j in range(1, size_x-1):
if maze[i][j] == 1:
if maze[i-1][j] == 1 and maze[i+1][j] == 1 and maze[i][j-1] == 1 and maze[i][j+1] == 1:
maze[i][j] = 0
# ã¹ã¿ãŒãå°ç¹ãšãŽãŒã«å°ç¹ãèšå®ãã
maze[1][1] = 0
maze[size_y-2][size_x-2] = 0
return maze
if __name__ == '__main__':
maze = make_maze(10, 10)
for i in range(len(maze)):
print(maze[i])
ããããæ®å¿µãªãããã®ãŸãŸã§ã¯åããªãã£ããããã°ã©ã ã®äžã§randomã¢ãžã¥ãŒã«ã®randint颿°ã䜿ã£ãŠããããèå¿ã®randomã¢ãžã¥ãŒã«ãã€ã³ããŒãããŠããªããããããããçšåºŠãPythonã®ããšãç¥ã£ãŠããªããã°ãåé¡ã¯è§£æ±ºã§ããªãããšãåãããã€ãŸãããä»»ãã§å šéšäœãããããšã¯ã§ããªãããå ¥åæ¯æŽãããŠãããå¯æçžŠå£«ãšèãããšè¯ãããã ã
ããã§ãããã°ã©ã ã®åé ã«ãimport randomããä»ãå ãããšããšããããåãããã«ãªã£ããã³ãã³ãã©ã€ã³ãããpython3 maze.pyããšã¿ã€ãããŠããã°ã©ã ãå®è¡ããŠã¿ããå ã»ã©æžããããã«ã0ãéè·¯ã§1ãå£ã®éšåã ã
ãããšãäžèšã®ãããªè¿·è·¯ãçæããã®ã確èªã§ãããã±ã£ãšç®ã«ã¯åé¡ãªãããã«èŠããããè¡ãæ¢ãŸãã ããã§è¿·è·¯ã²ãŒã ãšããŠã¯äœ¿ããªãè¿·è·¯ã§ããããšãåãããå šéšèªåã§äœã£ãŠããããšã¯èšããããã»ã©æã£ãéãã®ããã°ã©ã ã§ã¯ãªãã£ãã
ããã«è©³ããæç€ºãå ããŠã¿ãã
ãªããCopilotã¯æ¯åç°ãªãããã°ã©ã ãçæããŠãããããã®ãããããã°ã©ã ãæ°ã«å ¥ããªãå Žåã¯äœæããããã°ã©ã ãæ¶ããŠãæ¹ããŠèªåçæãããã®ãåŸ ã£ãŠãããšãç°ãªãããã°ã©ã ãäœã£ãŠãããã ãã®ãããäœåºŠãããã°ã©ã ãèªåã§äœãçŽããŠããã£ãŠãçŽåŸã®ããããã°ã©ã ãäœæãããã®ãåŸ ã€ã®ãããã ãå ããŠãèªåçæããçŽåŸã«ã[Alt]+ã]ãããŒ(macOSã§ã¯ã[Option]+ã]ã)ãæŒãããšã§ãæ¬¡ã®ææ¡ã衚瀺ããããšãã§ããã
ããã§ããCopilotã§ã¯ããã°ã©ã ãã³ã¡ã³ãã§è©³ããæç€ºãäžããããšã§ãããæç¢ºãªããã°ã©ã ãçæããããã«ãªããããã§ãä»åã¯ä»¥äžã®ãããªæç€ºãæžããŠã¿ãã
# è¿·è·¯ãã©ã³ãã ã«èªåçæãã
# - è¿·è·¯ã®å£ã¯1ãéè·¯ã¯0ãšãã
# - è¿·è·¯ã®ãµã€ãºã¯width * heightãšãã
# - 座æš(1,1)ãã¹ã¿ãŒãå°ç¹ãšãã
# - 座æš(width-2,height-2)ããŽãŒã«å°ç¹ãšãã
# - è¿·è·¯ã®å€åŽã¯å£ãšãã
# æ¬¡ã®æé ã§è¿·è·¯ãçæãã
# 1. è¿·è·¯ãµã€ãº(width,height)ã®å
šãŠãå£ã§åãã
# 2. 座æš(1,1)ãåºç¹ãšããŠã©ã³ãã ã«éè·¯ãæã£ãŠãã
# 3. å³äžã®åº§æš(width-2,height-2)ã«å°éãããçµäºãã
def make_maze(width, height):
ãããšãCopilotã¯æ¬¡ã®ãããªããã°ã©ã ãçæããããã¯ãrandomã¢ãžã¥ãŒã«ã®ã€ã³ããŒããå¿ èŠãšãªã£ããããã以å€ã®ç¹ã¯ãã®ãŸãŸåãããã°ã©ã ãçæããŠãããã
def make_maze(width, height):
# è¿·è·¯ãå£ã§åãã
maze = [[1 for i in range(width)] for j in range(height)]
# åºç¹ãéè·¯ã«ãã
maze[1][1] = 0
# åºç¹ããå³äžãŸã§ã®éãæã
x = 1
y = 1
while x < width - 2 or y < height - 2:
# é²ãæ¹åãã©ã³ãã ã«æ±ºãã
direction = random.randint(0, 3)
if direction == 0 and y < height - 2:
# äžã«é²ã
y += 1
maze[y][x] = 0
elif direction == 1 and x < width - 2:
# å³ã«é²ã
x += 1
maze[y][x] = 0
elif direction == 2 and y > 1:
# äžã«é²ã
y -= 1
maze[y][x] = 0
elif direction == 3 and x > 1:
# å·Šã«é²ã
x -= 1
maze[y][x] = 0
# è¿·è·¯ãè¿ã
return maze
ãªããä»åã¯ã²ãŒã ãã¬ãŒã ã¯ãŒã¯ãšããŠPyGameã䜿ããããã§ãPyGameã§ã°ã©ãã£ã«ã«ã«è¿·è·¯ãæç»ãããã³ãŒããèªåçæãããŠã¿ãããããšãè¿·è·¯ã ãã§ãªãããŒããŒãå ¥åã®æ©èœããŽãŒã«å€å®ãªã©ã®æ©èœãèªåã§çæããŠããããå®ã«äŸ¿å©ã ã
å°ãé·ããªã£ãã®ã§å®æããããã°ã©ã ã¯ãã¡ãã«é 眮ããã®ã§çæãããããã°ã©ã ã«èå³ãããã°èŠãŠã¿ãŠæ¬²ããã
ããã§ãããã°ã©ã ãå®è¡ãããšæ¬¡ã®ããã«è¡šç€ºããããå®è¡ãããã³ã«ç°ãªãè¿·è·¯ãçæãããã®ã確èªã§ããã ããã
çæ³ã®è¿·è·¯èªåçæãç®æããŠæ¹è¯ããŠã¿ãã
ãã ããäœåºŠãå®è¡ããŠã¿ããšåãããšããã以äžã®ããã«ã¹ã«ã¹ã«ã®è¿·è·¯ã«ãªããã¡ã ãäžèšã®ããã°ã©ã ãå®éã«èªãã§ã¿ãã°çç±ã¯åãããšæãããèµ·ç¹(å·Šäž)ããã©ã³ãã ã«æãé²ãå³äžã«è³ããŸã§ç¹°ãè¿ãã®ã ããã©ã³ãã ã«äžäžå·Šå³ã«æãããã«ããŽãŒã«(å³äž)ã«è³ãéã«ã¯ãã»ãšãã©ã®å£ãå£ããŠããŸãããã ã
ã©ããããããå°ã詳ããæç€ºãæžããªããŠã¯ãããªãããã ããã®ããããããããšã³ã¡ã³ãã倿ŽããŠå ·äœçã«æžããŠã¿ããããããçµå±ã¯æã£ãéãã«è¿·è·¯ãäœæããããšã¯ã§ããªãã£ããããããããšãè¯ãããã°ã©ã ãçæããããã«ã¯ããã£ãšã³ã¡ã³ãã®æžãæ¹ã工倫ããå¿ èŠããããããããªãã
ããã§ãå ã»ã©äœã£ãããã°ã©ã ãããŒã¹ã«ããŠæäœæ¥ã§ä¿®æ£ããŠã¿ãããªããå šéšCopilotã«æžãããããããããçšåºŠèªåã®ææã§ããã°ã©ã ãæžãæ¹ãæ©ãç®çã®ããã°ã©ã ãäœæã§ããã
ãªããæ¹è¯ããããã°ã©ã ããã¡ãã«é 眮ããã
çµè« - GitHub Copilot䟿å©ããã
ãããŸã§èŠãããã«ãCopilotã«èªåã§å šãŠãäœã£ãŠãããããšæããšäžå®å šããç®ç«ã£ããããããèªåã§ããçšåºŠããã°ã©ã ãå ¥åããç¹°ãè¿ãã®èšè¿°ãå¿ èŠãªéšåããããããåŠçãå ¥åããå¿ èŠãããéšåã«é¢ããŠã¯ãããªãè¯ãããã°ã©ã ãçæãããã
äŸãã°ãè¿·è·¯ã®éè·¯ãèªåã§äŒžã°ãåŠçã«ãããŠãæå®ã®X座æšã倿Žããããã°ã©ã ãnext_x = x + dir[0]ããæžãããšãããY座æšãåãããã«å€æŽããããã°ã©ã ãnext_y = y + dir[1]ããCopilotãèªåã§æžããŠããããã€ãŸããExcelã®ãªãŒããã£ã«ã®ãããªåŠçãããã°ã©ã äœæã§ããã£ãŠãããã®ã ã
AIã«ããããã°ã©ã çæã«é¢ããŠã¯ãççšãã»ãã¥ãªãã£ãªã©ã®æžå¿µãäžãã£ãŠãããããããèªåã§å šãŠãäœã£ãŠãããã®ã§ã¯ãªããè³¢ããã³ãã¬ãŒããšããŠäœ¿ã£ãããæ±ºãŸãåã£ãåŠçãèªåã§çæããŠããã£ãããšãçšéãéå®ããŠäœ¿ããªãAIãæŽ»ããã€ã€é«å質ãªããã°ã©ã ãäœãããšãã§ãããšæãããCopilotã¯æ¥ã æ¹è¯ãããŠããã®ã§ãä»åŸã®å±éãæ¥œãã¿ã ã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ãæè¡æžãå€ãå·çããŠãããçŽè¿ã§ã¯ããã·ãŽããã¯ãã©ã PythonèªååŠçã®æç§æž(ãã€ããåºç)ããããã«äœ¿ãã!æ¥åã§å®è·µã§ãã! Pythonã«ããAIã»æ©æ¢°åŠç¿ã»æ·±å±€åŠç¿ã¢ããªã®ã€ããæ¹ TensorFlow2察å¿(ãœã·ã )ãããã³ã¬ã§ãã£ããåŠã¶Python(ãã€ããåºç)ããªã©ã








