Webéçºã®äžçã§ã¯ãç¬èªã®ãã£ããããããçµã¿èŸŒãããšã競äºåªäœæ§ãä¿ã€æ°åžžèãšãªãã€ã€ãããŸããç¹ã«Ruby on Railsãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠããããžãã¹ããŒãœã³ã®çæ§ãChatGPTã掻çšããŠã¿ãŸãããïŒãã®ãªãŒãæã§ã¯ãChatGPTãRuby on Railsãšçµ±åããŠãå¹ççãªã³ãã¥ãã±ãŒã·ã§ã³ããŒã«ãæ§ç¯ããæ¹æ³ã解説ããŸããããŒã¹ãšãªãçè«ããå®çšçãªå®è£ æé ãããã©ãŒãã³ã¹ã®åäžçãŸã§ãå®è·µçãªãã¯ããã¯ãäžéãã玹ä»ãã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®æ§ç¯ããããžãã¹ããã»ã¹ã®èªååã«è³ããŸã§ãç©æ¥µçãªçµ±åã§ããžãã¹ã次ã®ã¬ãã«ãžãšåŒãäžããŸãããã
1. ChatGPTãšRuby on Railsã®çµ±å: åºæ¬æŠå¿µ
1.1 ChatGPTã®æŠèŠãšæ©èœ
ChatGPTã¯ãèªç¶èšèªåŠç(NLP)ã掻çšããã匷åãªäŒè©±åAIã§ãããã®æè¡ã¯ããŠãŒã¶ãŒãå ¥åããããã¹ãã«åºã¥ããŠã人éã®ãããªå¯Ÿè©±ãçæããããšãã§ããŸããChatGPTã¯ã顧客ãµããŒãã®èªååããšã³ã¿ãŒãã€ã³ã¡ã³ããæè²ããŒã«ãšããŠåºç¯ã«å¿çšãããŠããŸãã
ChatGPTã¯ã倧éã®ããã¹ãããŒã¿ããã¬ãŒãã³ã°ããŠçæãããããšãã°FAQã®èªåå¿çãããŠãŒã¶ãŒããã®åãåãããžã®ã€ã³ããªãžã§ã³ããªè¿çãšãã£ãã¿ã¹ã¯ã«çšããããŸããããã«ããã察話åŒã®ã€ã³ã¿ãŒãã§ãŒã¹ãå¿ èŠãšããã¢ããªã±ãŒã·ã§ã³ã«æé©ã§ãã
ããã«ãChatGPTã¯æè»æ§ãé«ããããç¹å®ã®ãã¡ã€ã³ãããŒãã«å¯ŸããŠã«ã¹ã¿ãã€ãºããããšãã§ããç¹åããäŒè©±äœéšãæäŸããããšãå¯èœã§ãããã®AIæè¡ã¯ããŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ããåäžããããµãŒãã¹ã®å©äŸ¿æ§ãé«ãããšããç¹ã§äŸ¡å€ãæã£ãŠããŸãã
1.2 Ruby on Railsã®åºç€ç¥è
Ruby on Railsãé称Railsã¯ãRubyããã°ã©ãã³ã°èšèªã§èšè¿°ããããªãŒãã³ãœãŒã¹ã®ãã¬ãŒã ã¯ãŒã¯ã§ããRailsã¯ãCoCïŒConvention over ConfigurationïŒãããDRYïŒDon’t Repeat YourselfïŒããšãã£ãååã«åºã¥ããŠèšèšãããŠãããå¹ççãªWebã¢ããªã±ãŒã·ã§ã³éçºãå¯èœã§ãã
Railsã®ç¹åŸŽã¯ãã¢ãã«ããã¥ãŒãã³ã³ãããŒã©ãŒ(MVC)ãšããã¢ãŒããã¯ãã£ã«åŸã£ãŠãããããã«ããã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿åŠçéšåãšã€ã³ã¿ãŒãã§ãŒã¹éšåãç°¡åã«åé¢ã§ããç¹ã§ãããã®åé¢ã¯ãã¡ã³ããã³ã¹æ§ãæ¡åŒµæ§ã®åäžã«ã€ãªãããŸãã
ãŸãRailsã¯ãè±å¯ãªã©ã€ãã©ãªïŒãgemããšåŒã°ããïŒãåããŠãããèªèšŒæ©èœããã¡ã€ã«ã¢ããããŒãã決æžã·ã¹ãã ãªã©ãWebã¢ããªã±ãŒã·ã§ã³ã®éçºã«å¿ èŠãªå€ãã®æ©èœã容æã«çµã¿èŸŒãããšãã§ããŸãããã®ãããªç¹åŸŽãããRailsã¯åå¿è ã§ãæ¯èŒççæéã§æ¬æ ŒçãªWebãµãŒãã¹ãæ§ç¯ããããšãå¯èœã§ãã
1.3 ChatbotãšWebã¢ããªã±ãŒã·ã§ã³ã®é£æº
Chatbotã®çµ±åã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®æ©èœãå€§å¹ ã«æ¡åŒµããããšãã§ããŸããChatGPTã®ãããªé²æ©ããããããå©çšããããšã§ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããããªã¢ã«ã¿ã€ã ã§ã®å¯Ÿè©±ãéããŠãµãŒãã¹æäŸãå¯èœã«ãªããŸãã
Railsã§éçºãããWebã¢ããªã±ãŒã·ã§ã³ã«Chatbotãå°å ¥ããããšã§ã顧客ãµããŒããååæšèãã³ã³ãã³ãããã²ãŒã·ã§ã³ãšãã£ãæ§ã ãªå Žé¢ã§ã€ã³ã¿ã©ã¯ãã£ããªæ©èœãæäŸã§ããããã«ãªããŸããããã¯ããŠãŒã¶ãŒãæ å ±ãæ€çŽ¢ãããã質åã«çãããããéã®è£å©ãšããŠç¹ã«æå¹ã§ãã
ãŸããChatbotãå°å ¥ããããšã¯ã24æé365æ¥å¯Ÿå¿å¯èœãªã«ã¹ã¿ããŒãµãŒãã¹ã®å®çŸã«ãã€ãªãããŸããããã¯ãç¹ã«åœéçãªãªã³ã©ã€ã³ããžãã¹ã§ã®å©ç¹ãšãªããã¿ã€ã ãŸãŒã³ã®ç°ãªããŠãŒã¶ãŒã«å¯ŸããŠããå³æçãªå¯Ÿå¿ãè¡ãããšãã§ããŸãã
1.4 APIéä¿¡ã®åºç€ãšRailsã§ã®å®è£ æ¹æ³
APIïŒApplication Programming InterfaceïŒéä¿¡ã¯ãChatGPTãä»ã®å€éšãµãŒãã¹ãšRailsã¢ããªã±ãŒã·ã§ã³ãšãé£æºãããããã®éèŠãªã¡ã«ããºã ã§ããAPIã¯ãç°ãªããœãããŠã§ã¢éã§ããŒã¿ã亀æããããã®å®çŸ©ãããæ¹æ³ã§ãããWebã¢ããªã±ãŒã·ã§ã³ã®æ¡åŒµã«ãããŠåºç€ãšãªããŸãã
å ·äœçã«ã¯ãRailsã¢ããªã±ãŒã·ã§ã³ã¯HTTPãããã³ã«ã䜿çšããŠAPIåŒã³åºããè¡ããJSONãXMLã®åœ¢åŒã§ããŒã¿ãåãåã£ããéä¿¡ãããããŸãããã®ããã»ã¹ã¯ãRailsã«çµã¿èŸŒãŸããæ©èœãå€éšã®gemã䜿çšããŠå®è£ ããããšãã§ããŸãã
Railsã§APIéä¿¡ãè¡ãããã®äžè¬çãªæ¹æ³ã«ã¯ã`Net::HTTP`ã©ã€ãã©ãªã®äœ¿çšããããã¯ããé«åºŠãªæ©èœãæäŸãã`HTTParty`ã`Faraday`ã®ãããªgemã®äœ¿çšããããŸãããããã䜿çšããããšã§ãå®å šãã€å¹ççã«å€éšAPIãšã®éä¿¡ããRailsã¢ããªã±ãŒã·ã§ã³å ã§å®çŸããããšãå¯èœã§ãã
2. Ruby on Railsã«ããChatGPTæ©èœã®å®è£ æé
2.1 ç°å¢èšå®ãšå¿ é ã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«
Ruby on Railsã§ChatGPTæ©èœãå®è£ ããéã®æåã®ã¹ãããã¯ãå¿ èŠãªç°å¢ãèšå®ããé¢é£ããã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããããšã§ããéçºãã¹ã ãŒãºã«è¡ãããã«ã¯ãRubyã®ããŒãžã§ã³ç®¡çã·ã¹ãã ã§ããrbenvãRVMã䜿çšããé©åãªRubyã®ããŒãžã§ã³ãèšå®ãããŠããããšãéèŠã§ããRailsã®ããŒãžã§ã³ãChatGPTããµããŒãããããã«ææ°ã®å®å®çãéžæããŸãããã
å¿ é ã©ã€ãã©ãªãšããŠãHTTPéä¿¡ãç°¡åã«è¡ãããã® ‘httparty’ ããéåæåŠçãæ ã ‘sidekiq’ ãªã©ãGemfileã«è¿œèšããBundle installã³ãã³ããå®è¡ããŠã€ã³ã¹ããŒã«ããŸãããããã®ã©ã€ãã©ãªã«å ããŠãJSONããŒã¿ã®æ±ãã容æã«ãããã ‘json’ ãžã§ã ãå¿ èŠã«ãªããŸãã
ç°å¢èšå®ãå®äºããããRailsã®ãããžã§ã¯ããçæããã¢ããªã±ãŒã·ã§ã³ã®åºæ¬çãªæ§é ã確èªããŸãããã®æ®µéã§ãããŒã¿ããŒã¹ã®èšå®ãå¿ããã«å®äºãããŠãããšãåŸã®éçºå·¥çšã§ã¹ã ãŒãºã«é²ãããšãã§ããŸãã
2.2 ChatGPTã®APIãšã®é£æº
次ã«ãChatGPTã®APIãšã®é£æºæ¹æ³ã«ã€ããŠèª¬æããŸããOpenAIãæäŸããChatGPT APIãšã¯ãHTTPãªã¯ãšã¹ããä»ããŠé¢é£ããäŒè©±æ©èœãã¢ããªã±ãŒã·ã§ã³ã«çµ±åã§ããã€ã³ã¿ãŒãã§ãŒã¹ã§ãããŸãã¯ãOpenAIã®ãŠã§ããµã€ãã§ã¢ã«ãŠã³ããäœæããå¿ èŠãªAPIããŒãååŸããŸãã
APIããŒãååŸããããRailsã®ã¢ããªã±ãŒã·ã§ã³å ã§ç°å¢å€æ°ã«ä¿åããå®å šã«äœ¿çšã§ããããã«èšå®ããŸãããŸããOpenAIã®APIãšã³ããã€ã³ããžã¢ã¯ã»ã¹ããããã®èšå®ã initializers ãã©ã«ãå ã®èšå®ãã¡ã€ã«ã«è¿œèšããŸããHTTPartyãFaradayãªã©ã®ãžã§ã ã䜿çšãããšAPIãªã¯ãšã¹ããç°¡åãã€å¹ççã«å®è¡ã§ããŸãã
APIã®ã¬ã¹ãã³ã¹ã¯JSON圢åŒã§è¿ã£ãŠãããããé©åãªããŒãµãŒãçšããŠè§£æããå¿ èŠããããŸããããã«ãããååŸããå¿çãå å·¥ããã¢ããªã±ãŒã·ã§ã³å ã§æçšãªåœ¢ã«å€æããããšãã§ããŸãã
2.3 ã¡ãã»ãŒãžå¿çã·ã¹ãã ã®èšèš
Ruby on Railsã¢ããªã±ãŒã·ã§ã³ã«ãããŠãã¡ãã»ãŒãžå¿çã·ã¹ãã ãèšèšããã«ã¯ãã³ã³ãããŒã©ãŒããã¥ãŒãã¢ãã«ã®æ§æãèããå¿ èŠããããŸããã¡ãã»ãŒãžã管çããã¢ãã«ãã€ãŸãMessageã¢ãã«ãçæããå¿ èŠãªå±æ§ãå®çŸ©ããŸããããã«ã¯ããŠãŒã¶ãŒã®åãåãããšChatGPTããã®å¿çãªã©ãå«ãŸããŸãã
ã³ã³ãããŒã©ãŒã§ã¯ããŠãŒã¶ãŒããã®å ¥åãåãä»ãããããAPIãéããŠChatGPTã«éä¿¡ããè¿ä¿¡ãåŠçããã¢ã¯ã·ã§ã³ãå®çŸ©ããŸãããã®åŠçã®äžã§ãéåæåŠçãå¯èœãªããã¯ã°ã©ãŠã³ããžã§ããå©çšãããããŠãŒã¶ãŒã«ããã«ãã£ãŒãããã¯ãæäŸããããã«ActionCableãªã©ã®WebSocketã䜿ãæ¹æ³ããããŸãã
ã³ã³ãããŒã©ãŒãšã¢ãã«ãæºåã§ãããããŠãŒã¶ãŒãšã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãè¡ããããã¥ãŒãäœæããŸãããã¥ãŒã«ã¯ãå ¥åãã©ãŒã ãã¡ãã»ãŒãžè¡šç€ºãšãªã¢ãéä¿¡ãã¿ã³ãªã©ãé 眮ããããŠãŒã¶ãŒãåãåãããè¡ããã³ã«é©ææ å ±ãæŽæ°ããŠããããšãæ±ããããŸãã
2.4 ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®çµ±åãšãã¹ã
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹(UI)ã®çµ±åã¯ãå®è£ æé ã®æåŸã®éèŠãªã¹ãããã§ããUIã¯ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ãšç°¡åã«ããåãã§ããããã«çŽæçã§ãªããã°ãªããŸããããã®ããã«ã¯ãå¿çæ§ã®é«ããã¶ã€ã³ãæ¡çšããå¹ åºãããã€ã¹ã«å¯Ÿå¿ã§ããããã«å·¥å€«ããŸãã
çµ±åãã¹ãã§ã¯ããŠãŒã¶ãŒãã·ã¹ãã ãšå¯Ÿè©±ããããããã·ããªãªãè©Šãããšããžã±ãŒã¹ãå«ããåäœã粟æ»ããŸããRailsã§ã¯ãRSpecãCapybaraãšãã£ãããŒã«ãå©çšããŠããã©ãŠã¶ã®æäœãæš¡å£ãããŠãŒã¶ãŒäœéšã«è¿ããã¹ããè¡ãããšãã§ããŸãã
ãã¹ããè¡ãããšã§ã䜿çšããéã«çºçããå¯èœæ§ã®ããåé¡ãæ©æã«çºèŠããUIã®æ¹åãã€ã³ããç¹å®ããŸãããã¹ãé§åéçº(TDD)ãåãå ¥ããããšã«ãããããå ç¢ã§ä¿¡é Œæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæäŸããããšãå¯èœãšãªããŸãã
3. çºå±çChatGPTã€ã³ãã°ã¬ãŒã·ã§ã³æè¡
3.1 Railsã§ã®èªç¶èšèªåŠçã®å©çš
Ruby on Railsã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠChatGPTãªã©ã®èªç¶èšèªåŠçãšã³ãžã³ã掻çšããéãgemsãªã©ã®ã©ã€ãã©ãªã掻çšããŸããäŸãã°ãnokogiriãHTTPartyãªã©ããAPIãéããå€éšã®èªç¶èšèªåŠçãµãŒãã¹ãšã®é£æºã«éåžžã«åœ¹ç«ã¡ãŸãã
Railsã¢ããªã±ãŒã·ã§ã³å éšã§èªç¶èšèªã®è§£æãè¡ãããšã«ããããŠãŒã¶ãŒããã®åãã«å¯ŸããŠãã人éãããå¿çãå¯èœãšãªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäžãæåŸ ã§ããŸãããŸããChatGPTã䜿ã£ããã£ãããããã®å®è£ ã¯ãã«ã¹ã¿ããŒãµããŒããFAQã»ã¯ã·ã§ã³ã®å¹çåã«ãå¯äžããŸãã
èªç¶èšèªåŠçã掻çšããããšã§ããŠãŒã¶ãŒå ¥åã®æå³ãæ£ç¢ºã«ææ¡ããRailsã¢ããªã±ãŒã·ã§ã³ãæäŸãããµãŒãã¹ã®å¹ ãåºããããŸããããã«ã¯ãææ åæãæå³è§£æãªã©ãé«åºŠãªæè¡ã䜿çšãããã±ãŒã¹ããããŸãã
3.2 ããŒã¿ããŒã¹é£æºãšå¿çã®ããŒãœãã©ã€ãº
Ruby on Railsã¯ãActiveRecordãšãããªããžã§ã¯ããªã¬ãŒã·ã§ãã«ãããã³ã°ã·ã¹ãã ãçšããŠããŒã¿ããŒã¹ãšç°¡åã«é£æºã§ããŸããChatGPTãçšããã¢ããªã±ãŒã·ã§ã³ã§ã¯ããŠãŒã¶ãŒã®éå»ã®ããŒã¿ã掻çšããŠå¿çãããŒãœãã©ã€ãºããããšãã§ããŸãã
äŸãã°ããŠãŒã¶ãŒã®è¡åãã¿ãŒã³ãéå»ã®è³ªåãããŒã¿ããŒã¹ã«ä¿åãåæããããšã§ãããé¢é£æ§ã®é«ãåçãææ¡ãçæããããšãå¯èœã«ãªããŸããããã«ããããŠãŒã¶ãŒåã ã®ããŒãºã«åãããæè»ã§åå¥åããã察話ãå®çŸããŸãã
å ããŠãããŒã¿ããŒã¹ã«ä¿åãããæ å ±ãåºã«ãŠãŒã¶ãŒã®ã»ã°ã¡ã³ããäœæããã°ã«ãŒãã«åãããããŒã±ãã£ã³ã°æŽ»åããµãŒãã¹ã®æäŸãè¡ãããšãã§ããããã«ãªããŸãããããã®æŠç¥ã¯ã顧客æºè¶³åºŠã®åäžã«çŽçµãããããããžãã¹ã«ãããŠéåžžã«éèŠèŠãããŠããŸãã
3.3 ãã£ããæ©èœã®éåæåŠç
Railsã§ChatGPTã掻çšãããã£ããæ©èœãå®è£ ããéãActionCableãSidekiqãšãã£ãéåæåŠçããŒã«ãéèŠã§ããããããå©çšããããšã§ããªã¢ã«ã¿ã€ã ã®ã¡ãã»ãŒãžã³ã°äœéšãæäŸãããµãŒããŒãžã®è² æ ãæžå°ãããããšãã§ããŸãã
ActionCableã¯WebSocketã®æ¥ç¶ãç°¡åã«å®è£ ã§ããã©ã€ãã©ãªã§ããŠãŒã¶ãŒãå³æã«ãã£ãŒãããã¯ãåãåãããšãã§ããããã¿ãæäŸããŸãããŸããSidekiqã䜿çšãããšãããã¯ã°ã©ãŠã³ãã®ãžã§ãåŠçãè¡ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããããšãå¯èœã«ãªããŸãã
ãããã®æè¡ãçµã¿åãããŠäœ¿çšããããšã§ãå©çšè ã«å¯ŸããŠå¿«é©ã§ã¹ã ãŒãºãªãã£ããç°å¢ãå®çŸããChatGPTãšã®å¯Ÿè©±ãããèªç¶ãªãã®ã«ããããšãã§ããŸããéåæåŠçã¯ãã¢ãã³ãªWebã¢ããªã±ãŒã·ã§ã³ã«ãããŠäžå¯æ¬ ãªèŠçŽ ã®äžã€ã§ãã
3.4 ã»ãã¥ãªãã£ãšã»ãã·ã§ã³ç®¡çã®æé©å
ChatGPTãå©çšããRailsã¢ããªã±ãŒã·ã§ã³ã«ãããŠãã»ãã¥ãªãã£ã¯éåžžã«éèŠã§ããããŒã¿ã®æå·åãã»ãã¥ã¢ãªã³ãã¯ã·ã§ã³ã®ç¢ºä¿ãCSRFãSQLã€ã³ãžã§ã¯ã·ã§ã³ãžã®å¯Ÿçãäžå¯æ¬ ãšãªããŸãã
Railsã«ã¯åŒ·åãªã»ãã¥ãªãã£ç¹æ§ãå«ãŸããŠãããéçºè ã¯DeviseãCancancanãªã©ã®gemã䜿çšããããšã§ãèªèšŒãèªå¯ã®ããã»ã¹ãããã«åŒ·åããããšãã§ããŸãããããã®gemã¯ãã»ãã·ã§ã³ç®¡çããŠãŒã¶ãŒã¢ã¯ã»ã¹ã®å¶åŸ¡ã«ãããŠé«ãæè»æ§ãæäŸããŸãã
ããã«ãRailsã®ã»ãã·ã§ã³ã¯Cookieã«ä¿åããããµãŒããŒãµã€ãã§ç®¡çãããŸããããã«ãããã»ãã·ã§ã³ãã€ãžã£ãã¯ãªã©ã®ã»ãã¥ãªãã£ã®è åšããä¿è·ããããšãå¯èœã§ããChatGPTãšé£æºããWebã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã®ãããªã»ãã·ã§ã³ç®¡çã®æ éãªèšèšãæ±ããããŸãã
4. ããã©ãŒãã³ã¹ããã³ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäžç
4.1 å¿çé床ã®æ¹åæ¹æ³
Webã¢ããªã±ãŒã·ã§ã³ã«ãããå¿çé床ã®æ¹åã¯ããŠãŒã¶ãŒäœéšãå·Šå³ããéèŠãªèŠçŽ ã§ããRuby on Railsã§ã¯ãããŒã¿ããŒã¹ã®ã¯ãšãªæé©åãå§ãããã¥ãŒã®ã¬ã³ããªã³ã°æ¹æ³ã®èŠçŽãããã¢ã»ãããã€ãã©ã€ã³ã®æŽ»çšã«ãããããŒãžããŒãã®æéãæžããããšãå¯èœã§ãã
ãã£ãã·ã³ã°æŠç¥ãéèŠã§ããããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ãããŒãžå 容ãé »ç¹ã«å€æŽãããªãå Žåã«ã¯ããã©ã°ã¡ã³ããã£ãã·ã³ã°ãããŒãžãã£ãã·ã³ã°ãæ¡çšããããšã§ããµãŒããŒãžã®èŠæ±ãæžå°ãããããšãã§ããŸãããŸããé©åãªã€ã³ããã¯ã¹ã®ä»äžãéããŠããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ãé«ããããšã¯æ¬ ãããŸããã
ããã«ãããã¯ã°ã©ãŠã³ããžã§ãã®æŽ»çšã«ãããé·æéå®è¡ããå¿ èŠã®ããåŠçãéåæã§è¡ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®å¿çæ§ãç¶æããããšãã§ããŸããããã«ãããŠãŒã¶ãŒã¯ã¹ã ãŒãºãªãµã€ãäœéšã享åããããšãã§ããããã«ãªããŸãã
4.2 ã€ã³ã¿ã©ã¯ãã£ããªUIã³ã³ããŒãã³ãã®æ¡çš
ã€ã³ã¿ã©ã¯ãã£ããªUIã³ã³ããŒãã³ãã®å°å ¥ã¯ããŠãŒã¶ãŒãWebã¢ããªã±ãŒã·ã§ã³ãšå¯Ÿè©±ããéã®æºè¶³åºŠãé«ããŸããRuby on Railsã䜿ãéãStimulusJSãReactãVue.jsãªã©ã®ããã³ããšã³ããã¬ãŒã ã¯ãŒã¯ãšçµã¿åãããããšã§ãé«åºŠãªãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãå¹ççã«å®è£ ã§ããŸãã
ããšãã°ãRailsã®”UJS”ïŒUnobtrusive JavaScriptïŒãã¿ãŒã³ã掻çšããããšã§ãAjaxã䜿çšãããã©ãŒã ã®éåæéä¿¡ãããªã¢ã«ã¿ã€ã ã§ã®ããŒã¿æŽæ°ãå¯èœãšãªããŸããããã¯ãŠãŒã¶ãŒã®æäœäœéšãã¹ã ãŒãºãã€ãã€ãããã¯ã«ä¿ã¡ãŸãã
ãŸããWebSocketsãå©çšããActionCableã¯ããªã¢ã«ã¿ã€ã ã«ãã£ããæ©èœãéç¥æ©èœãå®è£ ããããã®åŒ·åãªã·ã¹ãã ã§ããããããã®æè¡ãåãå ¥ããããšã§ã¢ããªã±ãŒã·ã§ã³ã¯äžå±€åå¿ãè¯ããªããŸãã
4.3 ã¬ã¹ãã³ã·ããã¶ã€ã³ãšã¢ãã€ã«å¯Ÿå¿
çŸä»£ã®Webéçºã«ãããŠã¯ãããã€ã¹ã®å€æ§åã«äŒŽãã¬ã¹ãã³ã·ããã¶ã€ã³ã®éèŠæ§ãå¢ããŠããŸããRuby on Railsã¢ããªã±ãŒã·ã§ã³ã«ãããŠããCSSãã¬ãŒã ã¯ãŒã¯ã§ããBootstrapãTailwind CSSãªã©ãå©çšããããšã§ãç°ãªãã¹ã¯ãªãŒã³ãµã€ãºã解å床ã«å¿ããæè»ãªã¬ã€ã¢ãŠããå®çŸã§ããŸãã
ã¢ãã€ã«ãã¡ãŒã¹ãã®ã¢ãããŒããåãããšã«ãããå°ããç»é¢ã§ã®é²èŠ§ãæé©åããããããæ¡å€§ããŠãã¹ã¯ãããã§ã®è¡šç€ºã«ã察å¿ããããšãã§ããŸããããã¯ããŠãŒã¶ãŒãã©ã®ãããªããã€ã¹ã䜿çšããŠããŠãäžè²«ããäœéšãæäŸããäžã§éåžžã«å¹æçã§ãã
ãŸããã¿ããã€ãã³ãã®ãµããŒããã¢ãã€ã«ãã©ãŠã¶ã«æé©åãããããã²ãŒã·ã§ã³ã¯ãã¹ããŒããã©ã³ãã¿ãã¬ããããã®ã¢ã¯ã»ã¹ã«ãããŠæ»ãããªæäœæ§ã確ä¿ããããã«äžå¯æ¬ ã§ãã
4.4 ãŠãŒã¶ãŒãã£ãŒãããã¯ã掻çšããæ©èœæ¹å
ãŠãŒã¶ãŒãã£ãŒãããã¯ã¯ãWebã¢ããªã±ãŒã·ã§ã³ãæ¹åããããã®è²Žéãªæ å ±æºã§ããRuby on Railsã¢ããªã±ãŒã·ã§ã³ã§ã¯ãããŒãžã§ã³ã¢ããã«ãããŠãŠãŒã¶ãŒããã®çŽæ¥çãªæèŠã䜿çšç¶æ³ãåæ ãããããšãã§ããŸãã
ãã£ãŒãããã¯ãã©ãŒã ã調æ»ããŠãŒã¶ãŒãã¹ããå®æœããåéããããŒã¿ãåºã«æ©èœæ¹åãè¡ãããšã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®è³ªãé«ããäžã§æ¬ ãããªãããã»ã¹ã§ããç¹ã«äœ¿ãåæã«é¢ããææã¯ãçŽã¡ã«èª²é¡ãšããŠåãçµãŸããã¹ãç¹ã§ãã
ABãã¹ãã®å°å ¥ã«ãããç°ãªããã¶ã€ã³ãæ©èœãè©äŸ¡ãããŠãŒã¶ãŒã«ãšã£ãŠæãé©ããéžæãè¡ãããšãã§ããŸããRailsã®åŒ·åãªãã¹ãã¹ã€ãŒãã䜿çšããããšã§ãå®è£ åã«äºæž¬ãã以äžã®å ·äœçãªå©ç¹ãåŸãããšãå¯èœã§ãã
5. ChatGPTãšRailsã掻çšãããµãŒãã¹æé©åæŠç¥
5.1 ãŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ããšãªãã³ã·ã§ã³
ChatGPTãå©çšããããšã§ããŠãŒã¶ãŒãšã®å¯Ÿè©±ããªã¢ã«ã¿ã€ã ã§è¡ãããšã³ã²ãŒãžã¡ã³ããæ·±ããããšãã§ããŸããRailsã¢ããªã±ãŒã·ã§ã³ã«çµã¿èŸŒãããšã«ãããã»ãã·ã§ã³éã®ããŒã¿ã®é£æºãã¹ã ãŒãºã«ããããŒãœãã©ã€ãºãããäœéšãæäŸããããšãå¯èœã§ãããã®é¡§å®¢äœéšã®åäžã¯ããµã€ããžã®å蚪æ欲ãå¢å ããããªãã³ã·ã§ã³çã®åäžã«å¯äžããŸãã
ããã«ãChatGPTã䜿çšããããšã§ããŠãŒã¶ãŒã®è¡åãã¿ãŒã³ã奜ã¿ãåŠç¿ããããã«å¿ããã³ã³ãã³ãããµãŒãã¹ãææ¡ããããšãã§ããŸãã顧客ã«ãšã£ãŠäŸ¡å€ããæ å ±ãã¿ã€ã ãªãŒã«æäŸããããšã¯ãé·æçãªé¡§å®¢é¢ä¿ã®æ§ç¯ã«äžå¯æ¬ ã§ãã
ãã®ã¢ãããŒãã«ã¯ãç¶²çŸ çãªããŒã¿åéãšè§£æãæ±ããããŸãããRailsã®åŒ·åãªããã¯ãšã³ãåŠçèœåãçšããŠãæ å ±ã®åŠçãšå¿çé床ãæé©åããããšãã§ããŸãããã®æ¹æ³ã§ãŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ããšãªãã³ã·ã§ã³ãé«ããããšã«æåãããšããµãŒãã¹ã«ããã競äºåªäœæ§ãç¯ãããšãã§ããŸãã
5.2 顧客ãµããŒããšèªååã®ã·ããžãŒ
ChatGPTã掻çšããããšã«ãã£ãŠã顧客ãµããŒãæ¥åã«å€§ããªå€é©ãããããããšãã§ããŸããç¹ã«èªåå¿çæ©èœãéããŠã顧客ã®åãåããã«å¯Ÿããè¿ éãã€æ£ç¢ºãªåçãæäŸããããšãå¯èœã«ãªããŸããããã«ããã顧客æºè¶³åºŠãé«ãã€ã€ããªãã¬ãŒã·ã§ã³ã³ã¹ããåæžããããšãå®çŸããŸãã
Railsã®çµ±åã¯ãã«ã¹ã¿ããŒãµããŒãã®èªååãããã«åŒ·åããŸããäŸãã°ããã©ãã«ã·ã¥ãŒãã£ã³ã°ãFAQã®ç®¡çãå¹çåãã顧客ãæ±ããŠããæ å ±ãããæ©ãæäŸããããšãå¯èœã§ããããã«ããããã®èªååãããããåããéããŠèç©ãããããŒã¿ã掻çšããããšã§ããµãŒãã¹æ¹åã«ã€ãªããããšãã§ããŸãã
èªååããã顧客ãµããŒãã·ã¹ãã ã¯ã24/7ã§ã®ãµããŒãæäŸãå¯èœã«ããæé垯ãå°åã«ããå¶çŽãè¶ ããã°ããŒãã«ãªãµããŒãäœå¶ãæ§ç¯ããããšãã§ããŸãããã®ã·ã¹ãã ã®å®çŸã«ã¯Railsã®ãã¬ãã·ããªãã£ã倧ãã«è²¢ç®ããäŒæ¥ã¯ããæŠç¥çãªãµããŒã掻åã«æ³šåã§ããããã«ãªããŸãã
5.3 ããŒã±ãã£ã³ã°ãšã»ãŒã«ã¹ãžã®å¿çš
ChatGPTã®æè¡ãããŒã±ãã£ã³ã°ãã»ãŒã«ã¹ã®åéã«å¿çšããããšã§ã顧客ãšã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãå€§å¹ ã«æ¹åã§ããŸãããã£ãããããã掻çšããããšã§ãæœåšé¡§å®¢ã«å¯ŸããŠè£œåããµãŒãã¹ã®æ å ±ãæäŸããè³Œå ¥ããã»ã¹ããµããŒãããããšãå¯èœã§ãã
ããã«ãChatGPTãçšããã³ã³ãã³ãçæã§ã¯ããŠãŒã¶ãŒã®é¢å¿ãé«ããããã¯ããã¬ã³ãã«åºã¥ããã³ã³ãã³ããèªåçæã§ãããããããŒã±ãã£ã³ã°ã³ã³ãã³ãã®è³ªãšé¢é£æ§ãé«ããããšãã§ããŸãããããã®æè¡ã¯ãã¿ãŒã²ãããªãŒãã£ãšã³ã¹ãžã®ãã¬ã·ãžã§ã³ããŒã±ãã£ã³ã°ãå®çŸããã»ãŒã«ã¹ããŒã ã«ããææã®æ倧åãæ¯æŽããŸãã
Railsã®æè»ãªéçºãã¬ãŒã ã¯ãŒã¯ã掻çšããããšã«ãããChatGPTã«ããããŒã±ãã£ã³ã°ãã»ãŒã«ã¹æŠç¥ãè¿ éã«å®è£ ã§ããŸãã顧客ããŒã¿ã®ç®¡çã解æããããŠããã«åºã¥ãã¢ã¯ã·ã§ã³ã®èªååã¯ãå¹ççãªããŒã±ãã£ã³ã°æŽ»åããµããŒãããåçã®åäžã«è²¢ç®ããŸãã
5.4 ããžãã¹ããã»ã¹ãžã®çµ±åãšèªååå¹æ
ChatGPTãšRailsã®çµã¿åããã¯ãããžãã¹ããã»ã¹ã®å¹çåãšèªååã«ã倧ãã«æŽ»ããããšãã§ããŸããåŸæ¥å¡ãã«ãŒãã³ã¯ãŒã¯ã«è²»ããæéãåæžããéèŠãªææ決å®ãæŠç¥çå®ã«ããå€ãã®æéã確ä¿ã§ããããã«ãªããŸãã
äŸãã°ãå éšã®ã³ãã¥ãã±ãŒã·ã§ã³åäžã®ããã®å¹ççãªãã£ããã·ã¹ãã ã®å°å ¥ããã¯ãŒã¯ãããŒã®èªååãéããŠããã³ããªã¥ãŒã¢ã¯ãã£ããã£ãæžããããšãå¯èœã§ãããŸããChatGPTã¯åŸæ¥å¡ã察åŠãã¹ãåé¡ããããžãã¹æ©äŒã®ç¹å®ã«ã圹ç«ã¡ãŸãã
Railsã¯ãããã®èªååãœãªã¥ãŒã·ã§ã³ããµããŒãããããã®åŒ·åãªåºç€ãæäŸããŸããé«åºŠãªããŒã¿åæãšåŠçæ©èœãåªããã¹ã±ãŒã©ããªãã£ããããŠè±å¯ãªã©ã€ãã©ãªãšããŒã«ã«ãããããžãã¹ããã»ã¹ã®çµ±åãšèªååãå¹ççã«å®è¡ã§ããŸããçµæãšããŠãäŒæ¥ã¯éçšã³ã¹ãã®åæžãšããžãã¹ã®ã¢ãžãªãã£ã®åäžãå®çŸããããšãã§ããŸãã
6. å®è·µçãªChatGPTãšRailsãããžã§ã¯ãæ§ç¯ã¬ã€ã
6.1 ãããžã§ã¯ãèšç»ãšç®æšèšå®
ãããžã§ã¯ãèšç»ãçå®ããéã«ã¯ãæ確ãªããžã§ã³ãšå®çŸå¯èœãªç®æšãäžå¯æ¬ ã§ããå ·äœçã«ãChatGPTãRailsã¢ããªã±ãŒã·ã§ã³ã«çµ±åãããããžã§ã¯ãã§ããã°ãã©ã®æ©èœãå®è£ ãããããŸããã®ã¿ã€ã ã©ã€ã³ã¯ã©ãããã¹ãããæ€èšããŸãããããããžã§ã¯ã管çã®ãã¬ãŒã ã¯ãŒã¯ãæ¡çšããŠãã¿ã¹ã¯ãæéã責任è ãæããã«ããããšãå©ãã«ãªããŸãã
ç®æšèšå®ã«ã¯ãSMARTåºæºïŒå ·äœçã枬å®å¯èœãéæå¯èœãé¢é£æ§ãæéä»ãïŒãçšããããšãäžè¬çã§ããChatGPTã®æ§èœææšããRailså ã§ã®å¿çé床ãªã©ãéåå¯èœãªç®æšãèšããããšã§ããããžã§ã¯ãã®é²æãå¹æçã«è¿œè·¡ãããããªããŸãã
ãŸãããªã¹ã¯è©äŸ¡ãæ¬ ãããŸãããã©ããªåé¡ããããžã§ã¯ãé²è¡ã«åœ±é¿ãåãŒãå¯èœæ§ãããã®ãããã®å¯Ÿçã¯ãããããèããŠãããŸãããããããžã§ã¯ãèšç»ã«ããã£ãŠã¯ãåã¹ããŒã¯ãã«ããŒã®æåŸ ãšèŠæ±ããã©ã³ã¹è¯ãåã蟌ãããšã倧åã§ãã
6.2 éçºãã§ãŒãºãšé¢é£ãããã¹ããã©ã¯ãã£ã¹
éçºãã§ãŒãºã§ã¯ãã³ãŒãã£ã³ã°èŠçŽãããŒãžã§ã³ç®¡çã®åŸ¹åºããããžã§ã¯ãã®æåã«åœ±é¿ããŸããRailsã«ã¯ãConvention over Configurationãã®ç念ãããããããã®èŠçŽã«åŸãããšã§éçºé床ãåäžãããããšãã§ããŸãããã®äžã§ãChatGPTã®APIãšã®çµ±åã¯ãã¢ãžã¥ãŒã«åãå¿ãããŠãã ãããåå©çšå¯èœãªã³ãŒãã¯å°æ¥ã®å€æŽã«æè»ã«å¯Ÿå¿ã§ããŸãã
ãã¹ãé§åéçº(TDD)ã®ã¢ãããŒããæ¡çšããããšã§ãããå®å®ããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸããRailsã®RSpecãMinitestãªã©ã®ãã¹ããã¬ãŒã ã¯ãŒã¯ãçšããŠãåæ©èœã«å¯Ÿãããã¹ããå³æ Œã«è¡ããŸãããããã¹ããæžãããšã¯ãæ©èœãæå³ããéãã«åäœããããšãä¿èšŒããã®ãšåæã«ããã°ãæ©æã«ç¹å®ããããšãå¯èœã«ããŸãã
ãããŠãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³(CI)ãšç¶ç¶çããªããªãŒ(CD)ãå®è·µããããšã¯ãéçºããã»ã¹ãå¹çåã§ãããã¹ããã©ã¯ãã£ã¹ã§ããèªååããããã¹ããšãããã€ã¡ã³ãã«ãããéçºè ã¯ã³ãŒãã®çµ±åã«é¢ããåé¡ãå³åº§ã«ææ¡ãããªãªãŒã¹ããã»ã¹ãã¹ã ãŒãºã«ããããšãå¯èœã«ãªããŸãã
6.3 ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãšãããã°ã®ã³ã
ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã»ã¹ã¯ããã°ãã°éçºè ã«ãšã£ãŠå€§ããªèª²é¡ãšãªããŸããRailsã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã®ã³ã°æ©èœãé©åã«äœ¿çšããããšããããã°ã«ããã第äžæ©ã§ãããã°ã¬ãã«ã調æŽããããšã§ãåé¡ã®çºçæºãç¹å®ãããããªããŸãããŸããChatGPTãšã®çµ±åã«ãããŠã¯APIã¬ã¹ãã³ã¹ã®ç£èŠãéèŠã§ãã
ãããã¬ã掻çšããããšãå¹æçã§ããäŸãã°ãbyebugãpryãªã©ã¯ãRailséçºè ã«ãšã£ãŠéåžžã«äŸ¿å©ãªããŒã«ã§ããããããçšããããšã§ãªã¢ã«ã¿ã€ã ã§ã³ãŒããæ€æ»ããå®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãç解ããããšãã§ããŸãã
ããã«ãåé¡ãåçŸããããéçºç°å¢ãæŽããããšããå¹ççãªè§£æ±ºã«ç¹ãããŸããããŒã«ã«ç°å¢ã ãã§ãªããã¹ããŒãžã³ã°ç°å¢ã§ã®ãã¹ããè¡ããæ¬çªç°å¢ã§çºçããåé¡ãäºåã«ãã£ããã§ããããã«ããŸããããåé¡ãçºçããå Žåã«ã¯ãç¶æ³ã詳现ã«èšé²ãããããããŒã å ã§å ±æããŠè§£æ±ºçãååããŠæš¡çŽ¢ããããšãéèŠã§ãã
6.4 ãããã¯ãããŒã³ããšãã£ãŒãããã¯ã®åæ æ¹æ³
ãããã¯ãã®ããŒã³ãã¯ãéçºãå®äºããããã§ã¯ãªãããããæ°ããªãã§ãŒãºã®å§ãŸãã§ãããŠãŒã¶ãŒããã®ãã£ãŒãããã¯ãåãæ¢ãããããåæ ããŠããæè»æ§ãæ±ããããŸããChatGPTãçµ±åããRailsã¢ããªã±ãŒã·ã§ã³ã®å ŽåããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ç¹ã«æ³šç®ããèªç¶èšèªåŠçã®ããã©ãŒãã³ã¹ãéææ¹åããŠããå¿ èŠããããŸãã
ãã£ãŒãããã¯ãå¹æçã«åéããããã«ã¯ãã¢ããªã±ãŒã·ã§ã³å ã«ãã£ãŒãããã¯ãã©ãŒã ãèšããããœãŒã·ã£ã«ã¡ãã£ã¢ããµããŒããã±ãããéããŠãŠãŒã¶ãŒã®å£°ãéãããªã©ãè€æ°ã®ãã£ãã«ãçšæããŸãããããã®åŸãåéããããŒã¿ãåæããæ¹åç¹ãæŽãåºããŸãã
ç¶ç¶çãªæ¹åã®ããã«ã¯ãã¢ãžã£ã€ã«ã¡ãœãããžãŒã圹ç«ã¡ãŸããå°ããªæ¹åãçããµã€ã¯ã«ã§ç¹°ãè¿ãããŠãŒã¶ãŒãžã®äŸ¡å€æäŸãæç¶ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã¯æçããŠãããŸããæçµçã«ã¯ããŠãŒã¶ãŒãã£ãŒãããã¯ãåºã«ãChatGPTãšRailsã®ã·ãŒã ã¬ã¹ãªçµ±åãå®çŸãããããã¯ãã確ç«ã§ããã§ãããã