ããžã¿ã«åãé²ãããžãã¹ã®äžçã«ãããŠãããã°ã©ãã³ã°ã®ç¥èã¯å¿ é ã®ã¹ãã«ãšãªã£ãŠããŸããäžã§ããRubyããã°ã©ãã³ã°ã¯ãã®é«ãçç£æ§ã«ãã泚ç®ãããŠããŸãããããã«é©æ°çãªå©çšæ³ãæ±ããããŠããŸããããã§ã¯ãChatGPTãšRubyãçµã¿åãããããšã§ãããžãã¹ããŒã«ããµãŒãã¹ãå¹ççã«éçºããæ¹æ³ã«ã€ããŠè§£èª¬ããŸããæãããªå£èª¿ã§ããã¹ãããŒã¹ã€ã³ã¿ãŒãã§ãŒã¹ã®æŽ»çšãèªç¶èšèªåŠçã®è§£æ³ããããããã®æ§ç¯ãå¿çšäŸããããŠãã®ãã¹ããã©ã¯ãã£ã¹ãŸã§ãå®çšçãªç¥èŠãåçž®ããŠæäŸããŸããéçºè ããããŒãžã£ãŒã®çæ§ã«ãšã£ãŠããã®çµ±åããã»ã¹ã¯äŸ¡å€ãããã®ãšãªãã§ãããã
1. åºç« : ChatGPTãšRubyããã°ã©ãã³ã°ã®åºæ¬
1.1 ChatGPTã®ç解ãšãã®åã
ChatGPTã¯é«åºŠãªèªç¶èšèªåŠçæ©èœãæã€äººå·¥ç¥èœã¢ãã«ã§ãããOpenAIã«ãã£ãŠéçºãããŸããããã®AIã¯èšå€§ãªããã¹ãããŒã¿ãå ã«åŠç¿ãè¡ãã人éã®ãããªèªç¶ãªäŒè©±ãçæããèœåãæã£ãŠããŸãããŠãŒã¶ãŒã®è³ªåã«å¯ŸããŠé©åãªåçãè¿ãããšãã§ãããŸããããã¹ãããŒã¹ã®ã¿ã¹ã¯ãèªååããããšã«ã䜿ãããããšããããŸãã
ChatGPTã¯ãæ©æ¢°åŠç¿ã¢ãã«ã§ããGPT(Generative Pre-trained Transformer)ã«åºã¥ããŠããããã®ãã¯ãã«ãªæèç解èœåãšããã¹ãçæèœåãæã¡åãããŠããŸããããã«ãããæ§ã ãªãžã£ã³ã«ã®ããã¹ãã«é©å¿ãã人éãšé¡äŒŒããæäœã§åçãæ§ç¯ããããšãã§ããã®ã§ãã
å°å ¥äŒæ¥ã¯ãã£ããããããšããŠã®å©çšã ãã§ãªããã³ã³ãã³ãçæãããŒã¿å ¥åãªã©å€å²ã«ããã掻çšããããšãã§ããŸããAIã®é²åã«ããããããã®ãã¯ãããžãŒã¯ããæŽç·Žãããå€ãã®ããžãã¹ããã»ã¹ãèªååããã³åŒ·åãããŠãããŸãã
1.2 Rubyããã°ã©ãã³ã°èšèªã®ç¹åŸŽ
Rubyã¯1995幎ã«éçºããããªããžã§ã¯ãæåã¹ã¯ãªããèšèªã§ãç¹ã«æ¥æ¬çºãšããŠäžçäžã«åºãŸã£ãããã°ã©ãã³ã°èšèªã§ããRubyã¯èªã¿ããããšæžãããããéèŠããŠèšèšãããŠããã人éã®èªç¶ãªèšèªã«è¿ãæ§æãæã£ãŠããŸãã
ãŸããRubyã¯ãããã°ã©ãã³ã°ã®æ¥œããããéèŠããŠãããå¹ççã«ã³ãŒãã£ã³ã°ãè¡ãããšãã§ããŸãããã®ãããååŠè ã«ãåŠã³ããããçæéã§ããã°ã©ã ã®åºç€ãç解ããå®çšçãªã¹ãã«ã身ã«ã€ããããšãå¯èœã§ãã
é«åºŠãªæœè±¡åãå¯èœã§ãããç¹°ãè¿ããæ¡ä»¶åå²ãšãã£ãåºæ¬çãªæ©èœãããã¡ã¿ããã°ã©ãã³ã°ãDSLïŒãã¡ã€ã³ç¹åèšèªïŒã®äœæãŸã§ãå¹ åºã察å¿ã§ãããããWebã¢ããªã±ãŒã·ã§ã³éçºãã¯ãããšããæ§ã ãªåéã§æŽ»çšãããŠããŸãã
1.3 ChatGPTãšRubyã®çžæ§
ChatGPTãRubyããã°ã©ãã³ã°èšèªã§æŽ»çšããããšã¯ãéåžžã«å¹æçãªçµã¿åããã§ããRubyã®çŽæçã§é«ãçç£æ§ãæã€æ§æã¯ãChatGPTã®æ©èœãæ軜ã«å®è£ ããããããŸããããã«ãããChatGPTã®æã€é«åºŠãªèªç¶èšèªåŠçèœåããç°¡åãã€è¿ éã«RubyããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã«çµã¿èŸŒãããšãå¯èœã«ãªããŸãã
Rubyã®æè»ãªèšèªæ§é ã¯ãChatGPTãšçµã¿åãããéã«ããã®ç䟡ãçºæ®ããŸããéçºè ã¯Rubyã®ã¡ã¿ããã°ã©ãã³ã°èœåãé§äœ¿ããChatGPTã®æ©èœãã«ã¹ã¿ãã€ãºãããããªããŸããããã¯ãè€éãªããžãã¹ããžãã¯ãã¯ãŒã¯ãããŒãåãå ¥ãããã£ãããããã®éçºã«ãããŠéèŠãªå©ç¹ã§ãã
ããã«ãRubyã®è±å¯ãªã©ã€ãã©ãªïŒgemïŒãChatGPTã®å°å ¥ã容æã«ããŸããããšãã°ãHTTPéä¿¡ããµããŒãããã©ã€ãã©ãªã䜿ãã°ãChatGPTã®APIã«Rubyã¢ããªã±ãŒã·ã§ã³ããæ軜ã«ã¢ã¯ã»ã¹ããæè»ãªãµãŒãã¹ãéçºããããšãã§ããŸãã
1.4 Rubyããã°ã©ãã³ã°ã®ç°å¢æ§ç¯
Rubyã§ã®éçºãå§ããã«ã¯ããŸãRubyã€ã³ã¿ãŒããªã¿ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããè€æ°ã®ãã©ãããã©ãŒã ã§ã®å©çšãå¯èœã§ãWindows, macOS, Linuxãããã察å¿ããã€ã³ã¹ããŒã«æ¹æ³ããããŸããã€ã³ã¹ããŒã«ãå®äºããããã³ãã³ãã©ã€ã³ãããruby -vããšæã¡èŸŒãããšã§Rubyã®ããŒãžã§ã³ã確èªãç°å¢æ§ç¯ãç¡äºå®äºããã確èªããããšãã§ããŸãã
次ã«ãéçºã«ã¯ã³ãŒããå¹çè¯ãæžãããã®ãšãã£ã¿ãŸãã¯IDEãå¿ èŠã§ããå€ãã®éçºè ã¯ããã¹ããšãã£ã¿ã§ããSublime TextãAtomãIDEã§ããRubyMineãå©çšããŠããŸãããããã®ããŒã«ã«ã¯Rubyã®æ§æããã€ã©ã€ãããæ©èœãã³ãŒãã®èªåè£å®æ©èœãªã©ããããããã³ãŒãã£ã³ã°ãå¿«é©ã«è¡ããŸãã
æåŸã«ãããŒãžã§ã³ç®¡çã·ã¹ãã ã§ããGitã®ã»ããã¢ãããéèŠã§ããããã«ãããéçºäžã®ãããžã§ã¯ãã®å€æŽå±¥æŽãå¹ççã«è¿œè·¡ç®¡çããããšãã§ããŸãããŸããRubyã®ããã±ãŒãžãããŒãžã£ã§ããRubyGemsããã³Bundlerã䜿ãã°ãäŸåããã©ã€ãã©ãªã®ç®¡çãç°¡åã«ãªããŸãããããã®ããŒã«ãé§äœ¿ããããšã§ãRubyããã°ã©ãã³ã°ç°å¢ã®æ§ç¯ãå®äºããŸãã
2. ChatGPTã掻çšããRubyéçºã®é å
Rubyã®æè»æ§ãšChatGPTã®èªç¶èšèªåŠçèœåãåãããããšã«ãããéçºè ã¯ããçŽæçãã€å¹ççã«ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããšãã§ããŸãããã®çµã¿åããã¯ãç¹ã«å¯Ÿè©±åã¢ããªã±ãŒã·ã§ã³ãéçºããéã«ãããŠãç¬èªã®å©ç¹ãæäŸããŸãã
ChatGPTã«ãããRubyããã°ã©ãã¯æ°ããªã€ã³ã¿ã©ã¯ãã£ããªæ©èœããœãããŠã§ã¢ã«å®¹æã«çµã¿èŸŒãããšãå¯èœã«ãªããŸãããŸããChatGPTãçšããããšã§ãæ¢åã®Rubyã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿè©±åã®ã¬ã€ã€ãŒãè¿œå ããããšãå®çŸã§ããŸãã
ãã®èšäºã§ã¯ãRubyãšChatGPTãçµã¿åãããããšã®ã¡ãªããããå ·äœçãªäºäŸãšãšãã«è§£èª¬ããŠããŸããRubyã®éçºè ã§ããã°ããããã玹ä»ããæ å ±ãã確å®ã«äŸ¡å€ãèŠåºãã§ãããã
2.1 ããã¹ãããŒã¹ã€ã³ã¿ãŒãã§ãŒã¹ã®åŒ·åãªæŽ»çš
Rubyãããã¹ãåŠçã«åªããŠããããšã¯åºãç¥ãããŠããŸããããã«ChatGPTã®ããã¹ãããŒã¹ã®ã€ã³ã¿ãŒãã§ãŒã¹ãçµã¿åãããããšã§ãéçºè ã¯è€éãªèªç¶èšèªã®åé¡ã容æã«è§£æ±ºã§ããããã«ãªããŸãã
察話圢åŒã§ãŠãŒã¶ãŒãšã³ãã¥ãã±ãŒã·ã§ã³ããšãããã°ã©ã ãRubyã§æ§ç¯ããéã«ã¯ãChatGPTã®èœåããã«ã«æŽ»çšã§ããŸãããã®çµã¿åããã«ããããŠãŒã¶ãŒããã®åãããã«å¯Ÿããç解床ãå€§å¹ ã«åäžããã®ã§ãã
ããã«ãããã¹ãããŒã¹ã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã¯ãWebãµãŒãã¹ã ãã§ãªããã³ãã³ãã©ã€ã³ããŒã«ããããã®éçºã«ãããŠããã®äŸ¡å€ãçºæ®ããŸããRubyéçºè ã¯ãChatGPTã®åãåããŠãããã¹ããä»ããããåãããã質ã®é«ããã®ã«å€ããããšãã§ããã®ã§ãã
2.2 èªç¶èšèªåŠçã®Rubyãœãªã¥ãŒã·ã§ã³
Rubyã¯èªç¶èšèªåŠçïŒNLPïŒã®ããã®å€ãã®ã©ã€ãã©ãªãæäŸããŠãããChatGPTãšçµã¿åãããããšã§ããããã®ã©ã€ãã©ãªã®å¹èœãããã«æ¡åŒµãããŸããRubyéçºè ã¯ããããã®ããŒã«ã䜿çšããŠãè€éãªèšèªé¢é£ã¿ã¹ã¯ã«åãçµãããšãã§ããŸãã
èªç¶èšèªã®åæãçæãç解ãå¯èœã«ãªããšããŠãŒã¶ãŒã®æå³ãæ±²ãã 察話çãªäœéšãæäŸããã¢ããªã±ãŒã·ã§ã³ã®éçºãå®çŸããŸããChatGPTã®APIãçµã¿èŸŒãããšã§ãRubyã¢ããªã±ãŒã·ã§ã³ã¯ãŠãŒã¶ãŒãšã®ã³ãã¥ãã±ãŒã·ã§ã³ãèªç¶ãªãã®ã«ãããã人éããã察話ãå®çŸããããšãã§ããã®ã§ãã
ããã«ãChatGPTãRubyãããžã§ã¯ãã«çµ±åããããšã§ãæ¢ã«ããNLPã®ã¢ãããŒããæ¡åŒµããããæŽç·Žãããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯å¯èœã«ãªããŸããããã¯ãããã°ã©ããçŽé¢ããèšèªåŠçã®é£é¡ã解決ããã®ã«å€§ããªå©ããšãªãã§ãããã
2.3 Rubyã«ããChatGPTã¢ããªã±ãŒã·ã§ã³éçºã®ã±ãŒã¹ã¹ã¿ãã£
ChatGPTãçšããRubyã¢ããªã±ãŒã·ã§ã³ã®éçºã«é¢ããã±ãŒã¹ã¹ã¿ãã£ã¯ããã®çµã¿åããã®å®çšæ§ããã瀺ããŠããŸããäŸãã°ãã«ã¹ã¿ããŒãµããŒãçšã®ãã£ããããããéçºããéãRubyã®ç°¡æœããšChatGPTã®ç解床ã®é«ããçžãŸã£ãŠãå°è±¡çãªé¡§å®¢äœéšãåµåºããŸãã
å®éã«ãããäŒæ¥ãRubyãšChatGPTãå©çšããŠã顧客ã®åãåããã«å¯ŸããŠãªã¢ã«ã¿ã€ã ã§çããã·ã¹ãã ãäœæããäºäŸããããŸãããã®ã·ã¹ãã ã§ã¯ãChatGPTãèªç¶èšèªã§ã®åãã«å¯Ÿããç解ãæäŸããRubyããã®åçãæé©åããŠããŸãã
ãã®ãããªã±ãŒã¹ã¹ã¿ãã£ã¯ãRubyéçºè ãChatGPTãšã®é£æºãéããŠç®ã«èŠããææãäžããããã®åªããææšãšãªããŸãããããåèã«ããŠãä»ã®éçºè ãé¡äŒŒãããã¯å šãæ°ããã¢ããªã±ãŒã·ã§ã³ã®ã¢ã€ãã¢ãå®çŸãããã£ããã«ã§ããã®ã§ãã
2.4 ChatGPTãšRubyã«ããéçºå¹çã®åäž
Rubyéçºè ã¯ãChatGPTã掻çšããããšã§ãéçºããã»ã¹ãããè¿ éãã€å¹ççãªãã®ã«ããããšãã§ããŸããããã¯ãã³ãŒãã®èªåçæãããã°ã®ç¹å®ãããã«ã¯è€éãªã¢ã«ãŽãªãºã ã®èšèšã«è³ããŸã§ãå€å²ã«ããããŸãã
ãŸããChatGPTã掻çšããããšã§ãéçºã«å¿ èŠãªããã¥ã¡ã³ãäœæããŠãŒã¶ãŒã¬ã€ãã®èšè¿°ãªã©ãåšèŸºæ¥åãå¹ççã«ãªããŸãããã®ããã«ãRubyãšChatGPTã®çžä¹å¹æã«ããããããžã§ã¯ãå šäœã®çç£æ§ãé«ããããšãå¯èœãšãªããŸãã
æçµçã«ãRubyãšChatGPTãçµã¿åãããããšã§ãããå質ã®é«ããããã¯ããããçæéã§åžå Žã«æå ¥ããããšãå®çŸããŸããããã¯ç«¶äºã®æ¿ãããã¯ãããžãŒæ¥çã«ãããŠãäŒæ¥ã«ãšã£ãŠå€§ããªã¢ããã³ããŒãžãšãªãããšã§ãããã
Rubyã«ãããChatGPTã®çµ±åæ¹æ³ã¯ãChatGPTãæäŸãã匷åãªèªç¶èšèªåŠçæ©èœãRubyã¢ããªã±ãŒã·ã§ã³ã«åãå ¥ããããšã«ä»ãªããŸããããã®èšäºã§ã¯ãRubyã䜿çšããŠChatGPT APIã«æ¥ç¶ããã¹ã¯ãªãããå®è¡ãããšã©ãŒãåŠçããã³ãŒããä¿å®ããããã¹ã±ãŒã©ãã«ã«ããæ¹æ³ã«ã€ããŠè§£èª¬ããŸããéçºè ããã®ããã»ã¹ãç°¡åãã€å¹æçã«è¡ããããã«ããããã®ãã³ããšããªãã¯ãæäŸããŸãã
3. Rubyã«ãããChatGPTã®çµ±åæ¹æ³
3.1 ChatGPT APIãžã®æ¥ç¶ãšå©çš
ChatGPT APIã«æ¥ç¶ããã«ã¯ããŸãOpenAIã®APIããŒãå¿ èŠã§ãããã®ããŒãååŸããåŸãRubyã®ãnet/httpãã©ã€ãã©ãªããhttpartyããªã©ã®HTTPã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãçšããŠHTTPSãªã¯ãšã¹ããè¡ããŸããAPIããŒã¯ãªã¯ãšã¹ãã®éã«ããããŒã«å«ããããšã§èªèšŒãè¡ãããã®åŸãChatGPT APIã®ãšã³ããã€ã³ãã«ãªã¯ãšã¹ããéä¿¡ããŸãã
Rubyã§ã®APIãªã¯ãšã¹ãã®äœæã¯ãAPIããã¥ã¡ã³ãã«æ²¿ã£ããã©ã¡ãŒã¿ãæºåããããšããå§ãŸããŸãã䜿çšãããšã³ããã€ã³ãã«å¿ããŠãéä¿¡ããããã¹ãããŒã¿ãåžæããå¿çã®çš®é¡ãªã©ãèŠæ±ãã«ã¹ã¿ãã€ãºããããšãã§ããŸããã³ãŒãå ã§APIãªã¯ãšã¹ããç¹°ãè¿ã䜿ãããå Žåã¯ãåå©çšå¯èœãªã¡ãœãããã¯ã©ã¹ãäœæããŠããã®ãè¯ãã§ãããã
æšå¥šãããã®ã¯ãã»ãã¥ã¢ãªç°å¢å€æ°ãç§å¯ç®¡çã·ã¹ãã ãä»ããŠAPIããŒã管çããããšã§ããããã«ãããå®å šã«APIããŒãä¿ç®¡ããã³ãŒãããŒã¹ãéããŠã®ç¡åå¥ãªé²åºãé²ãããšãã§ããŸãããŸãããããã¯ãŒã¯éä¿¡ã«ã¯äºæãã¬é 延ãé害ã䌎ãå¯èœæ§ããããããã¿ã€ã ã¢ãŠãå€ãèšå®ããé©åãªãšã©ãŒãã³ããªã³ã°ãå°å ¥ããããšãéèŠã§ãã
3.2 Rubyå ã§ã®ChatGPTã¹ã¯ãªããã®å®è¡
ChatGPTãå©çšããã¹ã¯ãªãããRubyã§èšè¿°ããéã¯ãäºãå®çŸ©ãããããã¹ãããã³ããããŠãŒã¶ãŒããã®å ¥åãChatGPTã«éããå¿çãåŠçããããžãã¯ãå«ããŸããAPIãªã¯ãšã¹ãã®å¿çãåãåã£ããããã®å 容ã解æããŠå¿ èŠãªããŒã¿ãæœåºããã¢ããªã±ãŒã·ã§ã³ã§ããã«äœ¿çšããŸãã
å¹ççãªå®è¡ãå¯èœã«ããã«ã¯ãã¹ã¯ãªããã¯éåæã§åäœãããããšãæãŸããããšããããŸããããã«ãããChatGPTããã®å¿çãåŸ ã£ãŠããéã«ãä»ã®ããã»ã¹ããããã¯ããã«åŠçãç¶ããããšãã§ããŸããRubyã®ã¹ã¬ãããã€ãã³ããã·ã³ãªã©ãå©çšããããšã§ããã®ãããªéåæåŠçãå®çŸã§ããŸãã
ããã«ãChatGPTã®å¿çãã¢ããªã±ãŒã·ã§ã³å ã§ã©ã®ããã«æ±ããã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç®çã«åŒ·ãäŸåããŸããããšãã°ããã£ããããããšããŠçµã¿èŸŒãå Žåã¯ãå¿çããã©ãŒããããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã«é©ãã圢ã§è¡šç€ºããå¿ èŠããããŸãããŸããããã¹ãçæã®ããã«äœ¿çšããå Žåã¯ãçæãããå 容ãç®çã«é©åããŠãããã©ãããè©äŸ¡ããããžãã¯ãéèŠã«ãªããŸãã
3.3 ãšã©ãŒãã³ããªã³ã°ãšæé©åæŠç¥
ãšã©ãŒãã³ããªã³ã°ã¯ãChatGPT APIãRubyã¢ããªã±ãŒã·ã§ã³ã«çµ±åããéã«äžå¯æ¬ ã§ããAPIããã®å¿çã«ãšã©ãŒã³ãŒããå«ãŸããŠããå Žåããã®ã³ãŒããæ€åºããŠé©åãªå¯ŸåŠãè¡ãããã®åŠçãèšè¿°ããå¿ èŠããããŸããããšãã°ãAPIãå©çšã§ããªãå Žåãããªã¯ãšã¹ãã倱æããå Žåã«ã¯ããŠãŒã¶ãŒã«éç¥ããããªãã©ã€ãè©Šã¿ããªã©ã®æŠç¥ãèæ ®ãããŸãã
æé©åã«ãããŠã¯ãChatGPT APIã®ã¬ã¹ãã³ã¹æéãã³ã¹ãå¹çãéèŠãªãã€ã³ãã«ãªããŸããAPIãªã¯ãšã¹ãã®æ°ãå¶éããããã«ãã£ãã·ã³ã°ãå®è£ ããããšã¯ãããã©ãŒãã³ã¹ãšã³ã¹ãã®ãã©ã³ã¹ãä¿ã€ã®ã«æå¹ãªæ¹æ³ã§ãããŸããAPIã®ã¬ã¹ãã³ã¹ãåæããŠãäžå¿ èŠãªããŒã¿ããªã¥ãŒã ãåæžããããšããã¯ã©ã€ã¢ã³ããµã€ãã§ã®å¿çã®é床ã«å¯äžããŸãã
ã³ãŒãã®ããã©ãŒãã³ã¹ã枬å®ããããã«ããã¯ãç¹å®ããŠä¿®æ£ããããšã¯ãç¶ç¶çãªæé©åã®ããã«éåžžã«éèŠã§ãããããã¡ã€ãªã³ã°ããŒã«ããã³ãããŒã¯ãå©çšããŠããªãã¡ã¯ã¿ãªã³ã°ãæé©åãè¡ããã·ã¹ãã ã®å¿çæ§ãšå¹çãåäžãããããšãæ±ããããŸãã
3.4 ä¿å®ãšã¹ã±ãŒã©ããªãã£ãèæ ®ããã³ãŒãã£ã³ã°
å¯èªæ§ãšä¿å®æ§ã¯ãé·æéã«ããã£ãŠRubyã¢ããªã±ãŒã·ã§ã³ã管çããäžã§æãéèŠã§ããChatGPTã®çµ±åã«é¢ããã³ãŒãã¯ãä»ã®éçºè ã容æã«ç解ã§ãããããé©åãªããã¥ã¡ã³ããä»ããã¯ãªãŒã³ãªã³ãŒãã£ã³ã°èŠçŽã«åŸã£ãŠæžãã¹ãã§ãããŸããå°æ¥çãªæ¡åŒµãæ©èœè¿œå ã«åããŠãã¢ãžã¥ã©ãŒãªèšèšãå¿ãããããšãæãŸããã§ãã
ã¹ã±ãŒã©ããªãã£ã¯ãå©çšè ã®æ°ãå¢å ããããAPIã®å©çšé »åºŠãé«ãŸã£ãããããšãã«ãã¢ããªã±ãŒã·ã§ã³ããã®è² è·ã«å¯Ÿå¿ã§ãããã©ããã決å®ããŸããããã§ããã¹ã±ãŒã©ããªãã£ã¯ãåã«ãµãŒããŒã®åŠçèœåãå¢ããã ãã§ãªããã³ãŒãã®å¹çåãã¢ãŒããã¯ãã£ã®æ¡åŒµæ§ãå«ãŸããŸããäŸãã°ããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãå©çšããããšã§ãã·ã¹ãã ã®äžéšåã®ã¿ãã¹ã±ãŒã«ã¢ããããããšãå¯èœã«ãªããŸãã
æåŸã«ãChatGPT APIã®å©çšç¶æ³ãããã©ãŒãã³ã¹ã«é¢ããã¢ãã¿ãªã³ã°ãšãã°ãèšå®ããããšã§ãã·ã¹ãã ã®å¥å šæ§ãšå¹çæ§ãå®æçã«è©äŸ¡ããå¿ èŠãªæ¹åãé©å®è¡ãããšãã§ããŸããããã¯ã³ãŒãã®ä¿¡é Œæ§ã確ä¿ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãç¶æããããã«å¿ èŠãªã¹ãããã§ãã
4. Rubyã§ChatGPTã䜿ã£ããããã®æ§ç¯
Rubyã¯æè»ãªæ§æãšåŒ·åãªãªããžã§ã¯ãæåæ©èœã§ç¥ãããŠããããã£ããããããæ§ç¯ããã®ã«æé©ãªããã°ã©ãã³ã°èšèªã®äžã€ã§ããChatGPTã®ãããªçæçäºååŠç¿åèšèªã¢ãã«ãRubyã§æ±ãéãéçºè ã¯ãã£ãŒãã©ãŒãã³ã°ã®ç解ãæ·±ãã€ã€ãã¬ã¹ãã³ã·ããªããããæ§ç¯ããããšãã§ããŸãã
ãã®èšäºã§ã¯ãRubyãå©çšããŠChatGPTã掻çšãããã£ãããããã®èšèšãšéçºéçšã解説ããŸããããã«ãã€ã³ã¿ã©ã¯ãã£ããªæ©èœãè¿œå ãããŠãŒã¶ãŒäœéšãåäžãããããã®ãã¥ãŒãã³ã°æ¹æ³ããããŠã»ãã¥ãªãã£ãšãã©ã€ãã·ãŒã®ä¿è·ã«ã€ããŠã觊ããŸãã
ããããã¯ãChatGPTãçšããRubyãã£ãããããã®æ§ç¯ã«è³ããŸã§ã®æé ããã³ãããå ·äœçãªã³ãŒãã¹ããããã亀ããªããçŽè§£ããŠãããŸãããã
4.1 ãããã®èšèšãšç®çå¥æ©èœã®å®è£
ãããã®èšèšã«ã¯ãæ確ãªç®çãšå¯Ÿè±¡ãŠãŒã¶ãŒã念é ã«çœ®ãããšãäžå¯æ¬ ã§ããäŸãã°ãã«ã¹ã¿ããŒãµãŒãã¹ãç®çãšããããããäœãå Žåãèªç¶èšèªåŠçèœåãé«ãã¢ãã«ãéžã³ããŠãŒã¶ãŒã®åãåããã«å¯ŸããŠé©åãªåçãæäŸã§ããããã«èšèšããŸãã
ç®çå¥æ©èœãå®è£ ããéã«ã¯ãChatGPTã®APIãå©çšããŠãããã®å¿çã¡ã«ããºã ãæ§ç¯ããŸããRubyã§HTTPãªã¯ãšã¹ããéä¿¡ããåãåã£ãChatGPTã®ã¬ã¹ãã³ã¹ãåŠçããã³ãŒããæžããŸãã
ããã«ããšã©ãŒãã³ããªã³ã°ãäŸå€ã®ç®¡çãé©åã«è¡ãããšã§ããããã¯ããå ç¢ã«ãªãããŠãŒã¶ãŒã«ä¿¡é Œãããååšã«ãªããŸããåæ©èœã«å¯ŸããŠãã¹ãã³ãŒããæžããç¶ç¶çã«å質ãä¿ã€ããšãéèŠã§ãã
4.2 ã€ã³ã¿ã©ã¯ãã£ããªæ©èœã®è¿œå æ¹æ³
ãã£ãããããã«ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ãè¿œå ããããšã¯ããŠãŒã¶ãŒã®ãšã³ã²ãŒãžã¡ã³ããé«ããäžã§å¹æçã§ããRubyã«ã¯å€ãã®ã©ã€ãã©ãªããããããããšãŠãŒã¶ãŒéã®ãããšããã¹ã ãŒãºã«ãããããã€ãããã¯ãªã€ã³ã¿ã©ã¯ã·ã§ã³ãæäŸã§ããŸãã
ããšãã°ãWebsocketã䜿çšããŠãªã¢ã«ã¿ã€ã ã®ã³ãã¥ãã±ãŒã·ã§ã³ãå®çŸãããããŠãŒã¶ãŒã®éå»ã®å ¥åã«åºã¥ããŠæ瀺ãããéžæè¢ãåçã«å€æŽããããšãå¯èœã«ãªããŸãããŸãããŠãŒã¶ãŒã®å ¥åãã¿ãŒã³ãåæããæéã®çµéãšå ±ã«ããããåŠç¿ãããããªæ©èœãå®è£ ãèããããŸãã
ããããã€ã³ã¿ã©ã¯ãã£ããªæ©èœã®è¿œå ã«ã¯ãèšèšæ®µéã§ãŠãŒã¶ãŒã»ã¹ããŒãªãŒãæ確ã«ããããšã圹ç«ã¡ãŸãããŠãŒã¶ãŒãã©ã®ãããªæµãã§ããããšå¯Ÿè©±ããã®ããèŠèŠåãããã®äžã§å®è£ ã®ããã»ã¹ã«å ¥ããŸãã
4.3 ãŠãŒã¶ãŒäœéšãé«ãããããã®ãã¥ãŒãã³ã°
ãŠãŒã¶ãŒãããããšã®å¯Ÿè©±ãå¿«é©ã«æããããã«ã¯ãç¶ç¶çãªãã¥ãŒãã³ã°ãå¿ èŠã§ãããããã®å¿çé床ã®æé©åãããã人éããã察話ã®ããã®èšèªåŠçã®æ¹åãè¡ããŸãã
ãŸãããŠãŒã¶ãŒã®ãã£ãŒãããã¯ã¯è²Žéãªæ å ±æºã§ãããã£ãŒãããã¯ãåããŠããããã®å¯Ÿè©±ã¹ã¯ãªãããæŽæ°ãããããããã®æåãæ¹åããããã®ä¿®æ£ãè¡ã£ããããŸãããã¥ãŒãã³ã°ã®ããã«ãå®æçãªãã®ã³ã°ãšåæãè¡ãããšãå¹æçã§ãã
ãããã®ãã¥ãŒãã³ã°ã«ã¯ããŒã¿é§ååã¢ãããŒããéèŠã§ããããŠãŒã¶ãŒã®è¡åã«åºã¥ãçµ±èšããŒã¿ãåæããããšã§ãããããæäŸãã䟡å€ãæ倧éã«ããããšãã§ããŸãã
4.4 ã»ãã¥ãªãã£ãšãã©ã€ãã·ãŒã®ä¿è·
ã»ãã¥ãªãã£ãšãã©ã€ãã·ãŒã®åé¡ã¯ãç¹ã«å人æ å ±ãæ±ãå¯èœæ§ã®ãããã£ãããããã«ãšã£ãŠæåªå äºé ã§ããå®å šæ§ã確ä¿ããããã«ã¯ãAPIããŒã®ãããªæ©å¯æ å ±ããã£ãããšç®¡çãããšã³ãããŒãšã³ãæå·åã䜿ããªã©ã®å¯Ÿçãå¿ èŠã§ãã
Rubyã®ã»ãã¥ãªãã£é¢é£ã©ã€ãã©ãªãGemãå©çšããŠãããŒã¿ã®æå·åãã»ãã·ã§ã³ç®¡çã匷åããŸãããŸããå ¥åã®æ€èšŒãé©åã«å®æœããæªæããæ»æãããŒã¿ã®æ倱ãé²ãããã®çãè¬ããŸãã
ãã©ã€ãã·ãŒã«ã€ããŠã¯ãé©åãªæ å ±åŠçãšããŒã¿ä¿è·æ³èŠã®éµå®ãæ¬ ãããŸããããŠãŒã¶ãŒãèªèº«ã®ããŒã¿ã«ã€ããŠã³ã³ãããŒã«ãæãŠãããã«ãæ確ãªãã©ã€ãã·ãŒããªã·ãŒãæ瀺ããåæã®ååŸã«åªããããšã倧åã§ãã
5. çºå±çãªRubyãšChatGPTã®å¿çšäŸ
5.1 ããŒã¿åæãšåŠçã®èªåå
ããã°ã©ãã³ã°èšèªRubyã¯ãããŒã¿åæã«é¢ããå€æ§ãªã©ã€ãã©ãªãæäŸããŠãããéçºè ãããŒã¿ã»ãããç°¡åã«åæã§ããããã«ããŠããŸããç¹ã«å€§å®¹éã®ããŒã¿ãåãæ±ãéãRubyã®ã³ãŒãã¯èªã¿ããããä¿å®ã容æãšããç¹åŸŽãæã£ãŠããŸãããŸããRubyãšChatGPTãçµã¿åãããããšã§ãããŒã¿ã®åæçµæãããç解ããããèªç¶èšèªã«å€æããããšãå¯èœã§ãã
äŸãã°ãRubyã¹ã¯ãªããã䜿çšããŠSNSã®ãã¬ã³ãåæãè¡ãããã®çµæãChatGPTãå©çšããŠã¬ããŒã圢åŒã«ãŸãšããããšãã§ããŸãããã®ã¢ãããŒãã«ãã£ãŠãããŒã¿ãµã€ãšã³ãã£ã¹ãã¯ãåæäœæ¥ã®èªååã«ããæéãç¯çŽããè€éãªããŒã¿ã®è§£éãæ確ãã€è¿ éã«è¡ãããšãã§ããããã«ãªããŸãã
ãŸããRubyã«ããããŒã¿åŠçã®èªååã¯ãæ¥åžžçã«çºçãã倧éã®ãã°ããŒã¿ã®åŠçããWebãµã€ãã®ãã©ãã£ãã¯åæãªã©ãããžãã¹ã«çŽæ¥çãªã¡ãªãããããããé åã«ãããŠãæå¹ã§ããChatGPTã®æè¡ã掻çšããããšã§ããããã®ããŒã¿åæçµæãããçŽæçã§åããããã圢ã«å€ããããšãã§ããŸãã
5.2 AIãã£ããããããšããŠã®å¿çšåé
RubyèšèªãšChatGPTã®é£æºã¯ãAIãã£ãããããã®éçºé åã«ãããŠã泚ç®ãããŠããŸããRubyã®æè»æ§ãšChatGPTã®äŒè©±èœåã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããããã£ããããããçã¿åºãããã«çžä¹å¹æãçºæ®ããŸãããããã®ãããã¯ã«ã¹ã¿ããŒãµããŒããeã³ããŒã¹ã®è£å©ããŸãã¯å人ã®çç£æ§ããŒã«ãšããŠæŽ»çšãããŠããŸãã
äŸãšããŠããªã³ã©ã€ã³ã·ã§ããã³ã°ãµã€ãã§ã¯ãRubyã§äœæããããã£ããããããååã®æšèŠãè³Œå ¥ããã»ã¹ã®ã¬ã€ãã³ã¹ãæäŸãããã®èåŸã§ChatGPTãèªç¶ãªå¯Ÿè©±ãçæããŠé¡§å®¢ã®çåã«çããããšãã§ããŸããããã«ããã顧客ã¯24æé365æ¥ãµããŒããåããããšãã§ããäŒæ¥ã¯ã³ã¹ããæãã€ã€é¡§å®¢æºè¶³åºŠãé«ããããšãå¯èœã«ãªããŸãã
ãŸããæè²åéã«ãããŠããRuby補ã®AIãã£ããããããåŠçã®è³ªåã«ãªã¢ã«ã¿ã€ã ã§å¿çãããµãŒãã¹ãæäŸãããŠããŸããChatGPTã®å¿çã¢ã«ãŽãªãºã ã«ããããã粟床ã®é«ãæ å ±æäŸãšãåŠç¿ããã»ã¹ã®ãµããŒããå®çŸããŠããŸãã
5.3 Rubyãªã³ã¬ãŒã«ãºã§ã®ChatGPTçµ±å
Rubyãªã³ã¬ãŒã«ãºã¯ãRubyèšèªãããŒã¹ã«ãã人æ°ã®é«ãWebãã¬ãŒã ã¯ãŒã¯ã§ãããã®ãã¬ãŒã ã¯ãŒã¯ãéããŠãRubyéçºè ã¯å®¹æã«ChatGPTã®æ©èœãWebã¢ããªã±ãŒã·ã§ã³ã«çµ±åããããšãã§ããŸãããã®çµæãããã€ã³ã¿ã©ã¯ãã£ãã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªWebãµãŒãã¹ãäœæããããšãå¯èœãšãªããŸãã
å®éã«ãRubyãªã³ã¬ãŒã«ãºã§æ§ç¯ãããããã°ããã©ãŒã©ã ã¯ãChatGPTãçšããŠã³ã³ãã³ãçæã®èªååãã¢ãã¬ãŒã·ã§ã³ã®æ¯æŽãè¡ãããšãã§ããŸãããŠãŒã¶ãŒãæçš¿ããã³ã³ãã³ãã«å¯ŸããŠèªåçã«é¢é£ã³ã³ãã³ããææ¡ããããäžé©åãªèšèããã£ã«ã¿ãªã³ã°ããããšã«ãã£ãŠãã³ãã¥ããã£ã®å質ãä¿ã€ããšãå¯èœã§ãã
ããã«ãã·ã§ããã³ã°ã«ãŒããåããECãµã€ãã§ã¯ãã客æ§ãååã«é¢ããŠè³ªåãããšãã«ãChatGPTã掻çšããŠãªã¢ã«ã¿ã€ã ã§çããæäŸããããšãã§ããããã«ãªããŸããããã«ããããµã€ãã®å°ç·ãåäžããæçµçãªã³ã³ããŒãžã§ã³çã®å¢å ã«å¯äžããŸãã
5.4 ã¯ãã¹ãã©ãããã©ãŒã éçºã®äŸ
Rubyã¯ããã®æ±çšæ§ã®é«ããããã¯ãã¹ãã©ãããã©ãŒã éçºã«ãé©ããŠããŸããã€ãŸããäžã€ã®ã³ãŒãããŒã¹ã§è€æ°ã®ãã©ãããã©ãŒã ã«å¯Ÿå¿ããã¢ããªã±ãŒã·ã§ã³ãéçºããããšãã§ããŸããChatGPTãçµã¿èŸŒãã Rubyã¢ããªã±ãŒã·ã§ã³ã¯ããã¹ã¯ãããããŠã§ããã¢ãã€ã«ã®åãã©ãããã©ãŒã ã«ãŠãŠãŒã¶ãŒãšã®ã³ãã¥ãã±ãŒã·ã§ã³ããµããŒãããããšãã§ããŸãã
å ·äœçã«ã¯ãRubyããŒã¹ã®ãã£ããã¢ããªã±ãŒã·ã§ã³ããããŸãããChatGPTãçµ±åããããšã§ããŠãŒã¶ãŒã¯ã©ã®ããã€ã¹ããã§ãåãé«å質ãªäŒè©±ãšã¯ã¹ããªãšã³ã¹ã享åããããšãã§ããŸãããã®ãããªã¢ããªã±ãŒã·ã§ã³ã¯ãã¯ã©ãŠããµãŒãã¹ãä»ããŠChatGPTã®èœåã掻çšãããã©ãããã©ãŒã ã®éããæããããããšãªããŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸããããã®éµãšãªããŸãã
ããã«ãRubyã®ã¯ãã¹ãã©ãããã©ãŒã 察å¿ã©ã€ãã©ãªã掻çšããããšã§ãChatGPTãçµã¿èŸŒãã åçš®ããŒã«ãã¢ããªã±ãŒã·ã§ã³ãç°¡æã«éçºãããç°ãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã éã§ã®äºææ§ãå®çŸããŠããŸããããã«ããããŠãŒã¶ãŒã¯å©çšããŠããããã€ã¹ãéžã°ãã«ãåžžã«æå 端ã®æè¡ã享åããããšãã§ããããã§ãã
6. ChatGPTãšRubyããã°ã©ãã³ã°ã«é¢ãããã¹ããã©ã¯ãã£ã¹
6.1 ã³ãŒãå質ãšããã©ãŒãã³ã¹ã®ãã©ã³ã¹
Rubyã§ã®éçºã§ã¯ãã³ãŒãå質ãšå®è¡é床ããã©ã³ã¹è¯ãä¿ã€ããšãéèŠã§ããã¯ãªãŒã³ãªã³ãŒããæžãããšã¯ãåŸã ã®ä¿å®æ§ãå¯èªæ§ã«çŽçµããŸããäžæ¹ãããã©ãŒãã³ã¹ãç¡èŠã§ããªããã€ã³ãã§ãç¹ã«ããŒã¿åŠçãéãã¢ããªã±ãŒã·ã§ã³ã«ãããŠã¯ãå¹ççãªã³ãŒããæ±ããããã§ãããã
å質ãç¶æãã€ã€ããã©ãŒãã³ã¹ãåäžãããã«ã¯ããªãã¡ã¯ã¿ãªã³ã°ãå®æçã«è¡ãããšã倧åã§ããããã«ãã£ãŠãã³ãŒãã®åé·æ§ãæé€ããè€éãªããžãã¯ãåçŽåã§ããŸãããŸããRubyã®ãã³ãããŒãã³ã°ããŒã«ã掻çšããããšã§ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããæé©åããããšãå¯èœã§ãã
ã³ãŒãã®å質ãä¿ã¡ãªããããã©ãŒãã³ã¹ãé«ããå ·äœçãšããŠã¯ãåçãªèŠçŽ ã®ã¡ã¢åãäžèŠãªããŒã¿æ€çŽ¢ã®æé€ããããŠãã«ãã€ã³ã¡ãœããã®æŽ»çšãæããããŸãããããã®ãã¯ããã¯ã¯ãRubyããã°ã©ããŒã«ãšã£ãŠéèŠãªç¥èãšãªããŸãã
6.2 ãã¹ãé§åéçº(TDD)ã®é©çš
ãã¹ãé§åéçºïŒTDDïŒã¯ãRubyããã°ã©ãã³ã°ã«ãããŠå質ã®é«ãã³ãŒããæ§ç¯ããããã®ã¢ãããŒãã§ããTDDã¯ãæ©èœãå®è£ ããåã«ãã¹ããæžãããã®ãã¹ããéãããã«ã³ãŒããæžãããšãããµã€ã¯ã«ãç¹°ãè¿ãéçºææ³ã§ãã
Rubyã§ã¯ãRSpecãMinitestãªã©ã®ãã¹ããã¬ãŒã ã¯ãŒã¯ãåºã䜿çšãããŠããããããã掻çšããããšã§å¹ççã«TDDãé²ããããšãã§ããŸãããã¹ããæåã«æžãããšã§ãèŠä»¶ãæ確ã«ããå®è£ ã®æ¹åæ§ãåºããããšãã§ãããããéçºå¹çã®åäžãšãã°ã®æ©æçºèŠã«ã€ãªãããŸãã
ãŸããTDDãæ¡çšããããšã§ãªãã¡ã¯ã¿ãªã³ã°ã容æã«ãªããŸããæ¢ã«ãã¹ããååšãããããæ°ããªæ©èœè¿œå ãæ§é ã®å€æŽã䌎ã£ãŠããæ¢åã®æ©èœãæ£ããåäœããŠãããã確èªããªããé²ããããã®ã§ãã
6.3 ChatGPTã掻çšãããããã°æè¡
ChatGPTã¯ãRubyããã°ã©ãã³ã°ã«ããããããã°ããµããŒãããããã®åªããããŒã«ã«ãªãåŸãŸããéçºè ãçŽé¢ããæ§ã ãªåé¡ç¹ããšã©ãŒã«å¯ŸããŠãChatGPTã¯æçšãªãã³ãã代æ¿æ¡ãæäŸããŠãããŸãã
äŸãã°ãç¹å®ã®ãšã©ãŒã¡ãã»ãŒãžã®åå ãäžæãªå ŽåãChatGPTã«ãšã©ãŒå 容ã説æããåå ãšãªããããªç®æã®ç¹å®ãæ¯æŽããŠãããããšãã§ããŸãããŸããåé¡ã解決ããããã®åçš®ã¢ãããŒããææ¡ããŠãããããšã«ããããããã°ããã»ã¹ãå¹çåããããšãå¯èœã§ãã
ããã«ãChatGPTã¯ã³ãŒãã¬ãã¥ãŒã代è¡ãã圢ã§ã³ãŒãã®æ¹åæ¡ãæ瀺ããŸããããã«ãã£ãŠãåçŽãªãã¹ã ãã§ãªããã³ãŒãã®æ§é çãªåé¡ã«ãæ°ã¥ãããšãã§ããã§ããããChatGPTã®ã¢ããã€ã¹ãåèã«ããªããã³ãŒããæŽç·ŽãããŠããããšã¯ãRubyéçºè ã«ãšã£ãŠéåžžã«äŸ¡å€ã®ãããã©ã¯ãã£ã¹ã§ãã
6.4 ã³ãã¥ããã£ãšã®ååã«ããå質åäž
Rubyã®åŒ·ã¿ã®äžã€ã¯ã掻çºãªã³ãã¥ããã£ãæã£ãŠããããšã§ããRubyã®éçºè ãã¡ã¯ãæ§ã ãªãã©ãŒã©ã ããã£ããã«ãŒã ãã«ã³ãã¡ã¬ã³ã¹ãªã©ã§äº€æµããç¥èãå ±æããŠããŸããä»ã®éçºè ã®çµéšãç¥èŠã掻ããããšã§ãèªåã®ã³ãŒãã®å質ãåäžããããšãã§ããŸãã
ãŸãããªãŒãã³ãœãŒã¹ãããžã§ã¯ããžã®è²¢ç®ã¯ãããŸããŸãªããã¯ã°ã©ãŠã³ããæã€éçºè ãšååããããå ç¢ã§ä¿¡é Œæ§ã®é«ãã³ãŒããäœæããçŽ æŽãããæ©äŒãæäŸããŸããè²¢ç®ã¯ãã°ã®ä¿®æ£ãæ°æ©èœã®ææ¡ã ãã«ãšã©ãŸãããããã¥ã¡ã³ãã®æ¹åãæè²è³æã®äœæã«ãåã³ãŸãã
çµå±ã®ãšãããRubyã³ãã¥ããã£ãšã®ç©æ¥µçãªé¢ããã¯ãæè¡çãªã¹ãã«ã®åäžã ãã§ã¯ãªããããã°ã©ãã³ã°ã®ãã¹ããã©ã¯ãã£ã¹ã«å¯Ÿããæ·±ãç解ãä¿é²ããŸããããã¯ãå質ã®é«ãRubyã¢ããªã±ãŒã·ã§ã³ãéçºããäžã§ãéåžžã«è²Žéãªè³ç£ãšãªãã§ãããã
7. ãŸãšã
ãChatGPT Ruby ããã°ã©ãã³ã°ãã§ã¯ãRubyèšèªã®çŽæçãªã·ã³ã¿ãã¯ã¹ãšChatGPTã®èªç¶èšèªåŠçèœåãçµã³ã€ãããšã§ãããžãã¹ããŒãœã³ãå¹ççã«éçºãé²ããæå©ããããŸããChatGPTãšã®çžæ§ãRubyã®ç°å¢æ§ç¯ããå§ããAPIæ¥ç¶ãã¹ã¯ãªããå®è¡ããšã©ãŒãã³ããªã³ã°ã«è³ããŸã§ããããããã解説ãã€ã³ã¿ã©ã¯ãã£ããªãããéçºãããŒã¿èªååŠçã«ã觊ããã³ãŒãå質ãTDDããããã°æè¡ãçšããŠãã¹ããã©ã¯ãã£ã¹ãææ¡ããŸããéçºã®å¹çãšå質ã®äž¡æ¹ãé«ããå®è·µçã¬ã€ãã³ã¹ãæäŸããã®ãæ¬ããã¥ã¢ã«ã®ç®çã§ãã