æ¬é£èŒã®51åç®ã§WebSocketãå©çšãããªã¢ã«ã¿ã€ã ãã£ããã®äœãæ¹ã玹ä»ããŸãããããããååã¯LANå ã§åããæ¹æ³ã玹ä»ããã ããªã®ã§å©çšç¯å²ã¯çããã®ã§ãããããã§ãä»åã¯ãç¡æã§ä»®æ³ãã·ã³ã䜿ããGoogle Colabã«ãµãŒããŒãç«ãŠãŠãã£ããã¢ããªãåãããããã«æ¹è¯ããŠã¿ãŸãããã
ç¡æã§ãã£ãããµãŒããŒãæ§ç¯ã§ããïŒïŒ
ä»åã¯Google Colabäžã«WebSocketã®ãµãŒããŒãç«ãŠãŠããã£ããã¢ããªãäœæããæ¹æ³ã玹ä»ããŸããããããGoogle Colabãšã¯ããã©ãŠã¶ãã Python ãèšè¿°ãå®è¡ã§ãããµãŒãã¹ã§ããåŠçãç ç©¶è ãªã©æ©æ¢°åŠç¿ãªã©ããŒã¿ãµã€ãšã³ã¹ãå®è·µããããã®æ¹ã®ãã®ã§ãããããããã®å®æ ã¯ãGoogleã®é«æ§èœãªãã·ã³ãæå€§12æéç¡æã§è²žãåºããŠããã倪ã£è ¹ãªãµãŒãã¹ãªã®ã§ãã
ãããŠãçŽ æŽãããããšã«ãColabäžã§ãªã§ãããåããããšãã§ããã®ã§ããããã§ãä»åã¯Colabäžã«ãªã§ãããšWebSocketãã»ããã¢ããããŠããã£ãããµãŒããŒãšããŠäœ¿ã£ãŠã¿ãŸãããã
Colabã«ãã°ã€ã³ããŠæ°èŠããŒãããã¯ãäœãã
Colabã䜿ãã«ã¯ãGoogleã¢ã«ãŠã³ããå¿ èŠã§ãããã¡ãColabã«ã¢ã¯ã»ã¹ããããæ°èŠããŒãããã¯ãäœæããŸãããã
æåã«ããªã§ãããšWebSoketãã©ã°ã€ã³ããããã¯ãŒã¯å ¬éã®ããã®ããŒã«Cloudflaredãã€ã³ã¹ããŒã«ããŸãããã以äžã®ã³ãŒããColabã®ã»ã«ã«å ¥åããŠå®è¡ããŸãããã
!npm install -g nadesiko3
!npm install nadesiko3-websocket
!wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb
!dpkg -i cloudflared-stable-linux-amd64.deb
ãªããColabã®åºæ¬çãªäœ¿ãæ¹ã§ããããã³ãŒãã»ã«ããšåŒã°ããããã¹ãããã¯ã¹ã«ã³ãŒãïŒããã°ã©ã ïŒãå ¥åããå·ŠåŽã«ããå®è¡ãã¿ã³ãæŒããŸãããããšãããã°ã©ã ãå®è¡ããçµæã衚瀺ããããšãããã®ã§ãã
WebSocketãµãŒããŒã®ããã°ã©ã ãæžã蟌ãã
ããã§ã¯ãæåã«ãã£ãããµãŒããŒ(WebSocketãµãŒããŒ)ã®ããã°ã©ã ãæžã蟌ãã§ã¿ãŸããããç»é¢å·Šäžã®ã+ã³ãŒãããã¯ãªãã¯ãããšæ°èŠã³ãŒãã»ã«ã衚瀺ãããŸããã³ãŒãã»ã«ã«ä»¥äžã®ãªã§ããã®ããã°ã©ã ãå ¥åããŠå®è¡ããŠã¿ãŸããããããã«ãã£ãŠãColabäžã«ãserver.nako3ããšãããã¡ã€ã«ãä¿åãããŸãã
%%file server.nako3
!ãnadesiko3-websocketããåã蟌ãã
#--- èšå® ---
PORT=5001
#--- ã€ãã³ãã®æå® ---
WSãµãŒãèµ·åæåããæã«ã¯
ãâ WebSocketãµãŒã(ECHOãµãŒã)ãèµ·åããŸããããšè¡šç€ºã
èªåIPã¢ãã¬ã¹ååŸããŠå埩
ã- wss://{察象}:{PORT}ãã衚瀺ã
ãããŸã§
ãããŸã§
WSãµãŒãèµ·å倱æããæã«ã¯
ãWebSocketãµãŒãã®èµ·åã«å€±æããŸããããšè¡šç€ºã
ãããŸã§
WSãµãŒãæ¥ç¶ããæã«ã¯
IP=察象["connection"]["remoteAddress"]
ãã¯ã©ã€ã¢ã³ã{IP}ãæ¥ç¶ããŸããããšè¡šç€ºã
ã>åå :{IP}ããWSãµãŒãå
šéä¿¡ã
ãããŸã§
WSãµãŒãåä¿¡æã«ã¯
ãåä¿¡:{察象}ããšè¡šç€ºã
察象ãWSãµãŒãå
šéä¿¡ã
ãããŸã§
#--- WebSocketãèµ·å ---
PORTã§WSãµãŒãèµ·åã
ãããŠãæ¬¡ã«æžã蟌ãã ã³ãŒããå®è¡ããŸããããããã°ã©ã ãå®è¡ããã®ãšåæã«ãããŒã5001ãéæŸããŠå€éšããã¢ã¯ã»ã¹ã§ããããã«ããŸããããåæ§ã®æé ã§æ°èŠã³ãŒãã»ã«ãäœæãã以äžã®ã³ãŒããå®è¡ããŸãããã
!cnako3 server.nako3 & cloudflared tunnel --url localhost:5001
äžèšã³ãŒããå®è¡ãããšããªã§ããã®ãã£ãããµãŒããŒãèµ·åããŠãCloudflareã®ãµãŒãã¹ã§ããArgo Tunnelãå©çšããŠãµãŒããŒãå ¬éãããŸããããã§ãäžèšã®ç»åã«ãããããªURLã衚瀺ãããã®ã§ããã®URLãèŠããŠãããŸãããã
ãã£ããã¯ã©ã€ã¢ã³ããäœãã
以å玹ä»ããããã«ããã£ããã¢ããªã§ã¯ããã£ããã¯ã©ã€ã¢ã³ãããã£ãããµãŒããŒã«æ¥ç¶ããŠã¯ãããŠã¡ãã»ãŒãžã®äº€æãã§ããããã«ãªããŸãã
æ¢ã«ãµãŒããŒã¯èµ·åã§ããã®ã§ã次ã«ã¯ã©ã€ã¢ã³ããäœæããŠå®è¡ããŠã¿ãŸãããããã£ããã¯ã©ã€ã¢ã³ãã¯ãColabäžã«é 眮ããå¿ èŠã¯ãããŸããããã€ãã®ããã«ããªã§ããç°¡æãšãã£ã¿ãéããŠã以äžã®ããã°ã©ã ãå®è¡ããŠã¿ãŸãããã
ãã®éãããã°ã©ã ã®2è¡ç®ã«ãã倿°ããµãŒãâURLããäžèšãColabã«è¡šç€ºãããURLã«æžãæããŠå®è¡ããŸãããã
# â
â
â
ã以äžã®URLãæžãæããŠãã ããâ
â
â
ãµãŒããŒURL=ãhttps://xxxxxxxx/ã
WSåä¿¡æã«ã¯
ãã#logsãã®ããã¹ãååŸããŠãLã«ä»£å
¥ã
ããL=å¯Ÿè±¡ïŒæ¹è¡ïŒLã
ããã#logsããžLãããã¹ãèšå®ã
ãããŸã§
ãµãŒããŒURLã®ãhttps://ãããwss://ãã«çœ®æããŠWSã¢ãã¬ã¹ã«ä»£å
¥ã
WSã¢ãã¬ã¹ãžWSæ¥ç¶ã
# ãã£ããç»é¢ãäœæ
ã<h1>ãã£ããã¯ã©ã€ã¢ã³ã</h1>
<div>
以äžã«ã¡ãã»ãŒãžãèšå
¥:<br>
åå: <input type="text" id="åå" value="ã¯ãžã©"><br>
å
容: <input type="text" id="ã¡ãã»ãŒãž" value="ãã¹ãã"><br>
<button id="éä¿¡ãã¿ã³">éä¿¡</button><br>
</div>
<div><h2>äŒè©±ãã°</h2>
<textarea id="logs" rows="10" cols="40"></textarea>
</div>ããDOM芪èŠçŽ ãžHTMLèšå®ã
ã#éä¿¡ãã¿ã³ããã¯ãªãã¯ããæã«ã¯
ããFåå=ã#ååãã®ããã¹ãååŸã
ããFå
容=ã#ã¡ãã»ãŒãžãã®ããã¹ãååŸã
ããã{ä»}> {Fåå}: {Få
容}ããWSéä¿¡ã
ããã#ã¡ãã»ãŒãžãã«ãããããã¹ãèšå®ã
ãããŸã§ã
ãªã§ããç°¡æãšãã£ã¿ãå®è¡ããŸãããããããšããã£ããã¯ã©ã€ã¢ã³ããããã£ãããµãŒããŒã«æ¥ç¶ããŸããçºèšããããšããã£ãããµãŒããŒã«æ¥ç¶ããŠããå šãŠã®ã¯ã©ã€ã¢ã³ãã«ã¡ãã»ãŒãžãå±ããŸãã
ãã©ãŠã¶ã§è€æ°ã®ãŠã£ã³ããŠãéããŠãåæ§ã«ããã°ã©ã ãå®è¡ããŠã¿ãŸããããã¡ãã»ãŒãžãæžã蟌ããšåãããã«å šãŠã®ã¯ã©ã€ã¢ã³ãã«ã¡ãã»ãŒãžãå±ããŸãã
é æ¹ã®å人ã®ã¹ããã§ãåããã
ãŸããColabã§åŸãURLãèšå®ããã¯ã©ã€ã¢ã³ãã§ããã°ãåäžãããã¯ãŒã¯äžã«ãªãPCãã¹ããŒããã©ã³ãå©çšããŠãå®è¡ã§ããŸãããªã§ããç°¡æãšãã£ã¿ã§ã¯æ¯åããã°ã©ã ãæžã蟌ãå¿ èŠãããã®ã§ããªã§ãã3貯èµåº«ãªã©ã«ããã°ã©ã ãä¿åããŠããã®ã¢ãã¬ã¹ãå人ã«é åžããã°ãã¹ããŒããã©ã³ãªã©ã®ç«¯æ«ã§ãåããããšãã§ããŸãã
Colabã¯æå€§12æéã®å©çšããã§ããªã
ãã ããæ³šæäºé ããããŸããç¡æã§äœ¿ããColabã¯æå€§12æéãã䜿ããŸããã12æéçµã€ãæå€§90åãã©ãŠã¶ãæäœããªãã§ããããããŒãžãéããŠããŸããšã匷å¶çã«æ¥ç¶ãåæããä»®æ³ãã·ã³ãã·ã£ããããŠã³ããŠããŸããŸãããããªããšãæ¹ããŠColabäžã§ãã£ãããµãŒããŒãèµ·åããå¿ èŠããããŸããColabã«ã¯ææçããããŸãããææçã§ã24æéåŸã«ã¯ä»®æ³ãã·ã³ããªã»ãããããŸãã®ã§ããã®ç¹æ§ãçè§£ããäžã§å©çšããŸãããã
ãŸãšã
ãªããä»å玹ä»ããCloudfrareã®Argo TunnelãµãŒãã¹ã䜿ãã°èªå® PCäžã§åãããŠãããã£ãããµãŒããŒãäžçã«å ¬éããããšãã§ããŸãããšã¯èšããäžçäžã«ãµãŒããŒãå ¬éããã®ã¯ãããªãã«å±éºããããŸãããã®ãããColabã䜿ã£ãŠãã£ãããµãŒããŒãå ¬éãããªããæå€§12æéã§åŸè ããªãæ¶ããŠãããã®ã§ãã¡ãã£ãšè©ŠããŠã¿ãããšãã仲éãã¡ã§äžæçã«å©çšããããšããå Žåã«ã¯äŸ¿å©ã§ãã
Colabãšãªã§ããã䜿ããšæ¬åœã«æè»œã«ããã£ãããµãŒããŒãå ¬éã§ããã®ã§è©ŠããŠã¿ãŠãã ããã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ãæè¡æžãå€ãå·çããŠãããçŽè¿ã§ã¯ããã·ãŽããã¯ãã©ã PythonèªååŠçã®æç§æž(ãã€ããåºç)ããããã«äœ¿ãã!æ¥åã§å®è·µã§ãã! Pythonã«ããAIã»æ©æ¢°åŠç¿ã»æ·±å±€åŠç¿ã¢ããªã®ã€ããæ¹ TensorFlow2察å¿(ãœã·ã )ãããã³ã¬ã§ãã£ããåŠã¶Python(ãã€ããåºç)ããªã©ã




