å±±æç·ã徿©ã§ä¸å¨ãã人ã®ããã®è¨é²ã¢ããªãYamaNotesãããªãªã¼ã¹ãã¾ãã
ã¯ããã«
å±±æç·ã徿©ã§ä¸å¨ãã人ã®ããã®è¨é²ã¢ããªãYamaNotesãããªãªã¼ã¹ãã¾ããã
ãã®è¨äºã§ã¯ãYamaNotesãã®ä½¿ãæ¹ããéçºéç¨ã§è¦å´ãããã¨ãªã©ãã¾ã¨ãã¾ãã
6/14追è¨ï¼æ±äº¬ã®æ°æ¸©ãé«ããªããã¨ãäºæ³ããã¦ãã¾ããç±ä¸çäºé²ã®ãããæ¶¼ãããªã£ã¦ããã®ææ¦ããããããã¾ãã
ãµã¼ãã¹URL www.yamanotes.com
- ã¯ããã«
- èªå·±ç´¹ä»
- ã¢ããªã®æ¦è¦
- æè¡ã¹ã¿ãã¯
- ãã ãã£ããã¨
- è¦å´ãããã¨
- ä»å¾ãããããã¨
- ãããã«
èªå·±ç´¹ä»
ãããã¨ç³ãã¾ãã
æ¨å¹´4æã«FJORD BOOT CAMPï¼ãã£ã¨ã«ããã¼ããã£ã³ãï¼ä»¥ä¸FBCï¼ã«å
¥å¦ãã¦ãããã°ã©ãã³ã°æ´ã¯ç´1å¹´ã§ãã以åã¯é«æ ¡ã®å½èªæå¡ããã¦ãã¾ããããæ°ããææ¦ãããããéè·ããæªçµé¨ããWebã¨ã³ã¸ãã¢ãç®æãã¦ãã¾ãã
ã¢ããªã®æ¦è¦
å±±æç·ä¸å¨ã«å¾æ©ã§ææ¦ãã人åãã®è¨é²ã¢ããªã§ãã
åé§
ã®å°çæå»ããç²ãå
·åã®ã¡ã¢ãªã©ããç°¡åã«è¨é²ãããã¨ãã§ãã¾ãã
å±±æç·å¾æ©ä¸å¨ãã£ã¬ã³ã¸ã¨ã¯ï¼
ãã®åã®éããå±±æç·ã徿©ã§æ©ããã¨ã§ãã
æ£å¼ãªãã¼ã¿ã§ã¯ããã¾ããããç·æ©è¡è·é¢ã¯ç´45kmã12æéãããããããã¨ãå¤ãããã§ããRTAã¨ãã¦ææ¦ãã¦ãã人ããã¾ãã
ä½¿ãæ¹
ãã°ã¤ã³ãã
ãããç»é¢ããGoogle ã¢ã«ã¦ã³ãã§ãã°ã¤ã³ãã¾ãã
åæè¨å®ããã
ã¢ã¼ãï¼å¤åã or å
åãï¼ã¨ãåºçºé§
ãè¨å®ãã¾ãã
鲿ã確èªãã
ç¾å¨ã®é²æãå°å³ä¸ã«è¡¨ç¤ºããã¾ããæ®ãã®é§
æ°ãè·é¢ã確èªãã¾ãããã
å°çãã
é§
ã«çãããããå°çããã¿ã³ãæ¼ãã¾ããããã¡ã¢ã追å ããããXã§é²æããã¹ããããã¨ãã§ãã¾ãã
å±¥æ´ã確èªãã
å°çæå»ã®ç·¨éããã¡ã¢ã®è¿½å ãè¡ãã¾ããééãã¦ãå°çããã¿ã³ãæ¼ããå ´åã¯ãåé¤ãããã¨ãã§ãã¾ãã
éçºã«è³ãçµç·¯
æ¨å¹´4æã«15æéã»ã©ããã¦ãã¯ããã¦å±±æç·ãä¸å¨ãã¾ããã
æ®æ®µã»ã¼éåããªãç§ã«ã¨ã£ã¦ã¯è¾ãææ¦ã§ããããæ©ãçµãã£ãæã®éææã¯ããã¾ã§æãããã¨ã®ãªããã®ã§ããã
ãã®ææ¦ããã£ã¨æ¥½ããããããã«ããYamaNotesããä½ãã¾ããã
æè¡ã¹ã¿ãã¯
- ããã¯ã¨ã³ã
- Ruby 3.3.0
- Ruby on Rails 7.1.3.3
- ããã³ãã¨ã³ã
- Hotwire
- Tailwind CSS
- ãã¹ã
- ãã¼ã¿ãã¼ã¹
- CI
- GitHub Actions
- å¤é¨ãµã¼ãã¹
- Leaflet
- OpenStreetMap
- MapTiler
- Google OAuth
æè¡é¸å®ã®çç±
ãå¿ è¦ãªæ©è½ãçæéã§ä½ããã¨ããã³ã¹ããæãã¦ä½ããã¨ãã軸ã«è¡ãã¾ããã
çæéã§å¿ è¦ãªæ©è½ãä½ããããRails7ã¨Hotwireã§å®è£
FBCã®ã«ãªãã¥ã©ã ã§Reactãå¦ç¿ãã¦ãããããä»ã®ãã¬ã¼ã ã¯ã¼ã¯ã使ç¨ãããã¨ãæ¤è¨ãã¾ããããæ°è¡ã®ã³ã¼ãã§SPAé¢¨ã®æåãå®ç¾ã§ããéçºã³ã¹ãã®ä½ãã«æ¹ãããHotwireãæ¡ç¨ãã¾ããã
æ¬æ ¼çãªéçºã«å
¥ãåã«ãç«ã§ããããHotwireå
¥éããã¼ãã§ã¯ã Ruby on Railsã§å¦ç¿ããæ³å®ããæ©è½ãåé¡ãªãå®è£
ã§ãããã¨ã確èªãã¾ããã
å®éã«éçºãã¦ã¿ãã¨ãHotwireã使ã£ãã®ã¯å¤§æ£è§£ã§ãJavaScriptãã»ã¨ãã©æ¸ããç´ æ©ãå®è£
ã§ãããã¨ã«æåãã¾ããããããããã¨ãæ´çããä¸ã§ããµã¼ãã¹ã®è¦æ¨¡ã«åãããæè¡é¸å®ãããéè¦æ§ã宿ãã¾ããã
ã³ã¹ããæãã¦ä½ããããAPIããããã¤å ã調æ»
ãã°ããã¯ãµã¼ãã¹ãç¶ç¶ãããã¨èãã¦ãããããç¶æè²»ãæãããã¨ã«ãã ããã¾ãããä¸é¨ã«å¾é課éå¶ã®ãã®ãããã¾ãããæ³å®ãããã¢ã¯ã»ã¹æ°ãªãç¡æã§éç¨ã§ããããä½ãã¾ããã
ç¹ã«ã³ã¹ããæããããã«èæ
®ããã®ã¯ã以ä¸ã®2ã¤ã®ç®æã§ãã
å°å³ã®è¡¨ç¤ºã¨æç»ã«Leaflet + OpenStreetMapã使ç¨
å½åã¯éçºã®æ
å ±éã®å¤ãã»å°å³ã®è¦ããããªã©ã«é
åãæããGoogle Maps APIã®ä½¿ç¨ãæ¤è¨ãã¾ããããããç¡ææ ãããå°ãªãã¨æããããæå¿µããç¡æã§ä½¿ãããã®ãæ¢ããçµæãOpenStreetMapã§å°å³ã表示ãã¦Leafletã¨ããã©ã¤ãã©ãªã§ç·ãå¹ãåºãã追å ãããã¨ã«ãã¾ããã
å ãã¦ãå°å³ã¿ã¤ã«ãOpenStreetMapæ¨æºã®ãã®ããMapTilerã®ãã®ã«å·®ãæ¿ãã¾ããããã¡ãã¯å¾é課éå¶ã§ç¡æã®ç¯å²ã«åã¾ããã¨ããæ³å®ãã¦ãã¾ãããå ´åã«ãã£ã¦ã¯ç¡æã®ãã®ã«æ»ãã¤ããã§ããå°å³ã®è¦ãããã¨ã³ã¹ã忏ã両ç«ã§ããã¨æã£ã¦ãã¾ãã
Render.com + Supabaseã§ãããã¤
å½åã¯Fly.ioã«ãããã¤ããã¤ããã§ããããç¡æãã©ã³ãç¡ããªã£ããããªã®ã§ãSupabaseã®ãã¼ã¿ãã¼ã¹ã使ã£ã¦Render.comã«ãããã¤ãã¾ããã
Supabaseã«è§¦ããã®ã¯åãã¦ã§ããããåãFBCçã®æ¹ãæ¸ãããã¡ãã®è¨äºã«å©ãããã¦ãç¡äºãããã¤ãããã¨ãã§ãã¾ããã
Rails7+Render.com+Supabaseで無料デプロイ - はるまきのブログ
ãã ãã£ããã¨
ãYamaNotesãã¨ãããã¼ãã³ã°
ãååéè¦ãã¨ããè¨èãããèãã®ã§ããµã¼ãã¹åã¯ãã ããã¾ããã
å±±æç·ã®ãYamanoteãã¨ãè¨é²ã表ããNoteããçµã¿åãããè¤æ°å½¢ã®ãYamaNotesãã¨ãã¾ããã
ãå±±æç·ä¸å¨ã¢ããªãã¨ãã£ã¦ããå°å³ãæ
å ±æä¾ã»RTAã®ããã®æé管çãªã©ãè²ã
ãªã¢ããªãèãããã¾ããããã®ååãæ±ºã¾ã£ããã¨ã«ãããå±±æç·ä¸å¨ã®ãè¨é²ãã«ç¹åããæ¹åæ§ã«æ±ºã¾ãã¾ããã
å°å³ä¸ã«ç·ãå¼ãã¦ã鲿ããããããããããã¨
ãè¨é²ãã«ç¹åããã¢ããªãªã®ã§ãã¦ã¼ã¶ã¼ã¯å°å³ãå¥ã§ç¨æãã¦ãããã¨ãæ³å®ãã¦ãã¾ãããã®ãããã¢ããªä¸ã«å°å³ã®è¡¨ç¤ºã¯å¿ é ã§ã¯ãªããä¸ã®ããã«è·¯ç·å³ã«é²æã表示ããæ¹æ³ãããã¾ããã
ããããå±±æç·ã®é§
éã¯æé·ã®åºéï¼å¤§å´ãåå·éï¼ç´2.0kmï¼ã¨æçã®åºéï¼æ¥æ®éãè¥¿æ¥æ®ééï¼ç´0.5kmï¼ã§ã¯ãããªãã®å·®ãããã¾ããè·¯ç·å³ã®è²ãå¤ããæ¹å¼ã§ã¯ãé§
éã®è·é¢ã®éããåæ ã§ããªãã¨èããå°å³ä¸ã«ç´ç·ãå¼ããã¨ã«ãã¾ããã
鲿ãããããããããã¨ã¨ãã«ãå°å³ã«ç´æ¥ç·ãå¼ãããã¯ã¯ã¯ã¯æããããæ°ã«å
¥ã£ã¦ãã¾ãã
å ¨ã¦ã®æ©è½ãã¡ã½ããã«å¯¾ãã¦ãã¹ããæ¸ããã¨
ä¸å
·åãè¦ã¤ãã¦ããå¿«é©ã«ä½¿ã£ã¦ãããããããã¹ãã³ã¼ãããããªãæ¸ãããæèãã¾ããã
FBCã®ã«ãªãã¥ã©ã ã§ã¯Minitestã§ãã¹ããæ¸ãã¦ãã¾ããããèªä½ãµã¼ãã¹ã§ã¯RSpecã使ããã¨ã«ããã®ã§ãEveryday Rails - RSpecã«ããRailsãã¹ãå
¥éãåèã«åå¼·ãã¾ããããã®å¾ãå
¨ã¦ã®publicãªã¡ã½ãããæ©è½ã«ã¤ãã¦ãã²ããããã¹ãã追å ãã¾ããã
simplecovã«ããã¨ããã¹ãã«ãã¬ãã¸ã¯99%ã®ããã§ãã
ä»å¾ãåå¼·ãç¶ãã¦ã仿¸ãã¦ããªããã¹ãï¼èªè¨¼å¨ãã®ç°å¸¸ç³»ãªã©ï¼ã追å ãã¦ããããã§ãã
è¦å´ãããã¨
Hotwireãéæ³ã®ããã«è¦ãã
ãYamaNotesãã§ã¯ã以ä¸ã®ç®æã«Hotwireã使ç¨ãã¦ãã¾ãã
- Turbo Driveï¼åºæ¬çãªç»é¢é·ç§»
- Turbo Framesï¼ç·¨éãã©ã¼ã ã®è¡¨ç¤º
- Turbo Streamsï¼ç·¨éå¾ã®æ´æ°å¦ç
- Stimulusï¼å°å³ã®è¡¨ç¤ºã»ç·ã®æç»ãã¢ã¼ãã«ã»ãã³ãã¼ã¬ã¼ã¡ãã¥ã¼ãªã©ï¼tailwindcss-stimulus-componentsã使ç¨ï¼
æ°è¡ã®ã³ã¼ããæ¸ãã ãã§åããã¤ãããã¨ãã§ããé常ã«ä¾¿å©ã«æãã䏿¹ã§ãç¹ã«Turbo Streamã®å®è£ ã§çè§£ãæµ ãããã§æãããã«åãããè¦å´ãã¾ããã å°çå±¥æ´ç»é¢ã®å餿©è½ãªã©ãã¾ã ã¾ã Turboã«ç½®ãæãããé¨åãããã®ã§ããã£ã¨æ·±ãçè§£ã§ããããåå¼·ãããã§ãã
ã«ã¹ã¿ã ããªãã¼ã·ã§ã³ãè¨å®ãããã¨
å°çæ©è½ã®å®è£
ã«ããã¦ããé§
ã®æ°ä»¥ä¸ã«å°çã§ããªãããåå¾ã®è¨é²ã¨é½é½¬ãããå°çæå»ãè¨å®ã§ããªãããªã©ãè²ã
ãªããªãã¼ã·ã§ã³ãè¨å®ããå¿
è¦ãããã¾ããã
æãè¦å´ããã®ãããé£é§
以å¤ã«å°çã§ããªãããã«ãããããªãã¼ã·ã§ã³ã§ããå
åãã»å¤åãããããã§å¯¾å¿ããå¿
è¦ããã£ããããå½åã¯Stationãã¼ãã«ã«ãå¤åãæã®æ¬¡ã®é§
IDãã¨ãå
åãæã®æ¬¡ã®é§
IDããæãããè¨è¨ã«ãã¦ãã¾ããã
ãã ãå®è£
æã«ä½ãã«ãããæãããããç´ã«æ¸ãåºãã¦ãã¸ãã¯ãèããæ¬¡ã®é§
ã®å徿¹æ³ãèãç´ãã¾ããã
ãã¸ãã¯ãèããæã®ã¡ã¢
ãã¼ã¿ãã¼ã¹ã«ã¯ãå¤åãæã®æ¬¡ã®é§
IDãã®ã¿ãæãããStationã¯ã©ã¹ã®next
ã¡ã½ããã§å¤åãã»å
åãã«å¿ãã¦æ¡ä»¶åå²ãããã¨ã§ãè¦ä»¶ãæºããããªãã¼ã·ã§ã³ãè¨å®ãããã¨ãã§ãã¾ããã
使ãããããã¶ã¤ã³ã«ãããã¨
CSSãè¦æãªã®ããããæä½é使ãããã¶ã¤ã³ã«ããã¾ã§ããã¾ã大å¤ã§ãããä¸éããã¶ã¤ã³ãå
¥ããå¾ããã¬ã¹ãã³ã·ã対å¿ã»OGPãFaviconã®è¨å®ã»ç»åã®å§ç¸®ãaltã®è¨å®ã»ã»ã»ã»ãªã©ã使ãåæã®è¯ãã¢ããªã«ããããã«ããã¹ã使¥ãå±±ã®ããã«ãããè¦å´ãã¾ããã
èªåãªãã®ãã¶ã¤ã³ãå
¥ããå¾ã¯ãFBCã®ãã¶ã¤ãã¼ããã«ã¬ãã¥ã¼ããã¦ããã ããä¿®æ£ãç¹°ãè¿ãã¾ããããé°æ§ã§ãã·ã³ãã«ã§ä½¿ãããããã¶ã¤ã³ã«ãªã£ãã¨æã£ã¦ãã¾ãã
ãæ®éã«ä½¿ãããµã¼ãã¹ãã®ãã¶ã¤ã³ããå¦ä½ã«èãã¦ä½ããã¦ããããç¥ããã¨ãã§ãããã¶ã¤ãã¼ããã¸å°æ¬ã®å¿µãæ¹§ãã¾ããã
ä»å¾ãããããã¨
è¤æ°åè¨é²ã§ããããã«ãã
ãã¡ã¼ã¹ããªãªã¼ã¹ã§ã¯æä½éã®æ©è½ã«çµã£ããããç¾å¨ã®å®è£
ã§ã¯ã使ã§ããæ©è¡è¨é²ã¯ã¦ã¼ã¶ä¸äººã«ã¤ãä¸ã¤ã ãã¨ãªã£ã¦ãã¾ããã¤ã¾ããäºå¨ç®ãæ©ãéã«ã¯ãä¸å¨ç®ã®è¨é²ãåé¤ãã¦è¨é²ããå¿
è¦ãããã¾ãã
RTAãããããã«å±±æç·ãä½å¨ãããäººã¯æ³å®ããããããå°æ¥çã«è¤æ°ã®æ©è¡è¨é²ã使ã»é²è¦§ã§ããããã«ãããã§ãã
ããã©ã¼ãã³ã¹ã®æ¹å
ç¾å¨ã¯å°çãã¿ã³ãæ¼ããæã«ãç´2ç§ã®æéãããã£ã¦ãã¾ããå°çãã¿ã³ã¯ä½åº¦ãæ¼ããã¨ã«ãªãã®ã§ãããå°ãéããããã¨ããã§ãã
çºè¡ãããã¯ã¨ãªãæ¸ããããã®ãªãã¡ã¯ã¿ãªã³ã°ãã使ã£ã¦ããªãã¤ã³ã¹ã¿ã³ã¹å¤æ°ã®åé¤ããã£ãã·ã¥ã®å©ç¨ãªã©ãè¡ã£ã¦ãè¥å¹²éãã¯ãªãã¾ãããããµã¯ãµã¯åãã«ã¯ã¾ã è³ã£ã¦ãã¾ãããå°çæã«ã«ã¹ã¿ã ããªãã¼ã·ã§ã³ãè¤æ°å®è¡ãã¦ãããã¨ããRender.comã«æ±äº¬ãªã¼ã¸ã§ã³ããªãã·ã³ã¬ãã¼ã«ã«è¨å®ãã¦ãããã¨ããè¦å ã¨ãã¦èãããã¾ãã
ä»å¾ã¯ããã©ã¼ãã³ã¹ã«ã¤ãã¦åå¼·ããã¨ã¨ãã«ãæ±äº¬ãªã¼ã¸ã§ã³ããããµã¼ãã¹ã¸ã®ç§»è¡ãæ¤è¨ãããã¨æã£ã¦ãã¾ãã
å°çé§ ã«å¿ããã¤ã©ã¹ããæè¨ã追å
ç¾å¨ã¯å°çç»é¢ãäºç¨®é¡ï¼æ©ãçµãã£ãæç¨ã¨ãã以å¤ç¨ï¼ã ããªã®ã§ãããçããé§ ã鲿ã«å¿ããã¤ã©ã¹ãã表示ã§ããã¨æ¥½ããããªã¨æã£ã¦ãã¾ããä¾ãã°ãä¸éé§ ã«çããæã«ãã³ãã®ã¤ã©ã¹ããæ®ãä¸é§ ã®æã«ããã¨ã¡ãã£ã¨ã ããé å¼µãï¼ãçãªã¡ãã»ã¼ã¸ãåºããªã©ãããã§ãã
ãããã«
ä½ãå§ããæã¯ãä½ãããããä¸å®ã§ããããã©ãã«ããªãªã¼ã¹ãããã¨ãã§ãã¾ããã
ç¡äºãªãªã¼ã¹ã§ããã®ã¯ãæ¯æ¥ãä¸è©±ã«ãªã£ãFBCã®çæ§ããããããè¨èãããã¦ãããRubyã³ãã¥ããã£ã®çæ§ãSNSãéãã¦å¿æ´ãã¦ãã ãã£ãæ¹ã
ã®ãããã ã¨æã£ã¦ãã¾ãã
YamaNotesã¯ä»å¾ãæ¹åãç¶ããã¤ãããªã®ã§ããæè¦ãææ³ãªã©ãããã ããã¨å¬ããã§ãï¼