ð¯ã¹ã¿ãŒãã¢ããã®1人ç®ãšã³ãžãã¢ãšããŠéžå®ããæè¡ãæ¯ãè¿ã£ãŠç¹æ°ã¥ãããŠã¿ã
èªå·±çŽ¹ä»
2022幎ã®3æã«ã¹ã¿ãŒãã¢ããã«1人ç®ãšã³ãžãã¢ãšããŠå
¥ç€ŸããŠã1幎åè¿ãçµã¡ãŸããã
æ°èŠã®ã¡ã³ããŒãå¢ããŠãªãã§ã³ã³ã¯ãã®æè¡ã»èšèšã«ãªã£ãŠããã ïŒãšèãããããšãå¢ããŠããã®ã§ãæ¹ããŠåœæã®æ°æã¡ãæ¯ãè¿ãã€ã€ãç¹æ°ä»ããããŠã¿ãããšæããŸãã
çµæŽãªã©ã¯ããã°ã«ãŸãšããŠããã®ã§ããã£ããèŠãŠãã ãããããããšãããããŸãã
ã©ããªãããã¯ããäœã£ãŠããã
ä»ã¯äž»ã«2ã€ã®ãããã¯ããäœã£ãŠããŸãã
- æ¥çç¹åSaaS
- æ¥çç¹åæ±äººã¡ãã£ã¢
1ã€ç®ã®SaaSã¯å ¥ç€ŸçŽåŸã«0ããç«ã¡äžãããã®ã2ã€ç®ã®æ±äººã¡ãã£ã¢ã¯å ¥ç€ŸåããéçšãããŠãããã®ãå 補åãããã®ã
ã§ã¯ãããã䜿çšæè¡ã®éžå®çç±ãã1幎åçµã£ãŠã¿ãŠã®ææ³ã§ãã
ç¹æ°ãäœããã®ã¯æè¡åã足ããŠãªããŠäœ¿ãããªããŠãªãã ãã ããã£ãŠããåŽé¢ããããŸããã容赊ãã ããã
æ¥çç¹åSaaS
Ruby on Rails 6ç³»
ç¹æ°: ð¯
éžå®çç±: Railsãšã³ãžãã¢ã¯åžå Žã«å€ãæ³å®ã§ãæ¡çšã«ããŸãå¹ããŠããã ãããšããå€æã
æ¯ãè¿ãïŒæ¡å€äžã®äžã«Railsãšã³ãžãã¢ã¯å°ãªãããã¡ããã¡ãæ¡çšã§èŠåŽããŠãããäžæ¹ã§ãããäžã«ãªãœãŒã¹ãå€ããåŠç¿ã³ã¹ããæ¯èŒçäœãã®ã§Railsæªçµéšã§ãæŠååãæ©ããRails()ãšèšãããããšãå€ããããã¯ãç«ã¡äžãçŽåŸã¯Railsã«åããã®ã¯ãªããšæãã
React
ç¹æ°: 60ç¹
éžå®çç±: ãã¡ããæ¡çšã«ããŸãå¹ããŠããã ãããšããå€æã
æ¯ãè¿ãïŒãã¡ããæ¡çšã§èŠåŽããŠããã2022幎åœæã¯Vueãšã³ãžãã¢ã°ããã§æ¬åœã«åŸæããããšã¯ããæè¿ã¯Next.jsã®å°é ãVue3ç³»ã®ç Žå£çå€æŽã«ããReact1匷ã«ãªã£ãŠããæããããã®ã§çµæçã«ã¯ããã£ããåçãšããŠãReactã®èšèšã«å
šã詳ãããªãç¶æ
ã§éçºãå§ããŠããŸããã³ãŒãã£ã³ã°èŠçŽãå®ãŸã£ãŠãªãã®ã§è¥å¹²ã«ã«ãªã¹ã«ãªãã€ã€ããã
ãµãŒããŒæ§æ: ã¢ããªã¹ã¢ãŒããã¯ãã£
ç¹æ°: ð¯
éžå®çç±: ãšã«ããæ©ããªãªãŒã¹ãããã£ãããã
æ¯ãè¿ãïŒ Railsã®Webpackerã䜿ã£ãŠReactãé
ä¿¡ããã¢ããªã¹ãªæ§æãéžæãã€ã³ãã©æ§æãã·ã³ãã«ã«ãªã£ããããªãªãŒã¹äœæ¥ãå°ãªãæžãã ããšä»ã®ãšããã¡ãªããã倧ããããŸããRailsã®ãã³ãã¬ãŒããšã³ãžã³ã䜿ããã«create-react-appã§ç¬ç«ããã¢ããªã±ãŒã·ã§ã³ã«ãããããšãã£ã¿ã®è£å©æ©èœããã«ã«äœ¿ããã®ã§ãã¡ããæ£è§£ã ã£ããšæãããããŠæ¬ ç¹ãæãããšããããè«žã
ã®ããŒãžã§ã³ã¢ããã®åœ±é¿ç¯å²ãåºããªã£ãŠããŸããšããã
activerecord-multi-tenantã䜿çš
ããã³ãå®è£ç¹æ°: 70ç¹
éžå®çç±: ãã¡ããã¡ãæ©ãã æ«ã«Geppoããã®noteãèªãã§æ±ºå®ã
æ¯ãè¿ãïŒ ãã®gemã®ããã§ã¯ãªãããåœåã®èŠä»¶å€ã®ããšïŒããŒã«ãã£ã³ã°ã¹ã®å¯Ÿå¿ãªã©ïŒãçºçããŠçµæ§èŠããã ãå¿ãããã§ãŒãºãä¹ãåããã®ã§æ±ºããŠæªãã¯ãªãéžæã ã£ããšæãããAWSã®è³æãšããèªã¿ãªãããã£ãšæ ¹æ¬ã®ç解ãæ·±ããŠããéžå®ããæ¹ãããè¯ãéžæãã§ãããšæãã
æ¥çç¹åæ±äººã¡ãã£ã¢
Next.js
ç¹æ°: 80ç¹
éžå®çç±: æ¡çšã¢ããŒã«
æ¯ãè¿ã: æžããŠãŠæ¥œããã®ã§ãšã³ãžãã¢ãšããŠã¯éžãã§ããã£ããäžæ¹ã§æ¬äœã»ãšã³ã·ã¹ãã ãšãã«å€åãæ¿ããã®ã§è¿œåŸãé£ãããæè¿ã¯tRPCãå
¥ããŠãã«TypeScriptã®æ©æµãæ倧åããããšããŠããŸãã
AWS CDK
ç¹æ°: 40ç¹
éžå®çç±: ãã€ã¯ããµãŒãã¹ããµãŒãã¬ã¹ãšããããŒã¯ãŒãã§æ¡çšã¢ããŒã«
æ¯ãè¿ã: ããã¯ãšã³ãã¯ããžãã¯å«ãå
šãŠCDKã§ç®¡çããŠããããã¡ãã¯ããªãéžæè¢ãšããŠãã¹ã£ãæããããŠããããšããã®ããããŒã«ã«ã«ããã¯ãšã³ãç°å¢ãçšæããã®ãããã©ããããCDKèªäœã¯æžãã£ã·ããªã©ããªãè¯ããããããŸã§ãªãœãŒã¹ç®¡çã«ãšã©ããŠãããã¯ãšã³ãã¯ã¡ãããšãµãŒããŒãçšæããæ§æã«ããã¹ãã ã£ããçŸåšã¯ããã¯ãšã³ãã®ããžãã¯ã¯Next.jsã«åŒã£è¶ããããAWSãªãœãŒã¹ã®ç®¡çãããããã®IaCã«çž®å°äž
AWS DynamoDB + ElasticSearch
ç¹æ°: 20ç¹
éžå®çç±ïŒ èŠä»¶ã決ãŸããã£ãŠããããæ±äººæ
å ±ãæè»ã«ç®¡çããããšããçç±ã§ã¹ããŒãã¬ã¹DBã«ãã
æ¯ãè¿ãïŒ æ¬¡ã®Amplifyãš1,2äœãäºã倱æã ã£ããDynamoDBã®æ€çŽ¢åšãã®åŒ±ããGSI Overloadingã§ä¹ãåãããšèããŠããããããã誰ãåŒãç¶ããããããšãªã£ãŠæ念ããŠElasticSearchã«æ€çŽ¢åºç€ã移è²ãããçµæãšããŠãRDBãšæ¯èŒããŠé«é¡ãªElasticSearchã®è²»çšãšãã¹ããŒããšåçãªãããã³ã°ç®¡çãçºçããŠããŸã£ãããããåŠçãèŸããRDBã䜿ãã€ã€ãæ€çŽ¢é
ç®ã«ãªãåŸãªããããªãã®ãããŒã¿è£æ£ãäžèŠãªãã®ã¯JSONåã«çªã£èŸŒããªã©ã§æè»æ§ã確ä¿ããã®ãããã£ãæ°ãããã
AWS Amplify
ç¹æ°: 10ç¹
éžå®çç±ïŒ ãã¹ãã£ã³ã°ã§ããŠCI/CDãã€ããŠããã®ã§å°å
¥
æ¯ãè¿ãïŒ å
ã
ãšãã¯ã¹ãµãŒããŒã§éçšããŠããPHP補ãœããããªãã¬ã€ã¹ãããšããèæ¯ã§ãäžéšã®ãã¹ã®åãå
ããšãã¯ã¹ãµãŒããŒã«ãããã¯ãŒããã¬ã¹ã«åãããããå¿
èŠããã£ãããAmpligyãã®ãã®ãå
éšã®CloudFrontã®ä»æ§ã«ãã¡ããã¡ãèŠããããããããšã·ã³ãã«ã«é«ããAmplifyèªäœã¯è¯ããµãŒãã¹ã ãšæãããæ¬çªãµãŒãã¹ã§ã®éçšã¯èŸãéšåã®æ¹ãå€ãããNext䜿ã£ãŠããªãVercel䜿ãã®ãäžçªå¹³åã ãšæããæè¿ã ãšCloudflareãè¯ãããã
çµè«
ç«ã¡äžãæã®Railsã¯æé«ð¯
Discussion