妻ã®æ人ã¨ãã¦ã®ããã°ä»ãå人ãµã¤ãããªãªã¼ã¹ããã®ã§ãæè¡çãªè¦³ç¹ãã¾ã¨ãã¦ããããã
Jamstack
ããããµã¤ãã®æ§æå³ã§*1ãæè¿æµè¡ãã®Jamstackã¨ããã¢ã¼ããã¯ãã£ã§ä½ã£ã¦ã¿ãã
Jamstackã¯ãéçãµã¤ãã¸ã§ãã¬ã¼ã¿ã¼ãç¨ãã¦CMSçã§ç®¡çããã³ã³ãã³ãããã«ãæã«ãã¹ã¦åå¾ãã¦ãã¦ã¼ã¶ã¼ã¢ã¯ã»ã¹åã«ç¨æãã¦ãããHTMLãCSSãJavaScriptãCDNçµç±ã§é ä¿¡ãããã¨ã§ãç»é¢é·ç§»ãé常ã«éãåªããããã©ã¼ãã³ã¹ã®ãµã¤ãæ§ç¯ãå¯è½ã«ããã
CMSæ´æ°æã®Webhookéç¥ã§èªåãããã¤ããä»çµã¿ãå ¥ãããã¨ã§ãéçºè ãã½ã¼ã¹ã³ã¼ãã触ããã¨ãªãããµã¤ãç·¨éè ã§å®çµãããµã¤ãæ´æ°ãè¡ããã¨ãã§ããããããã¸ãã¹ãã趣å³ã®æ´»åã¾ã§ãéçãµã¤ãéçºã»éç¨ã®æ段ã¨ãã¦æåãªé¸æè¢ã«ãªãã ããã
- éçãµã¤ãã¸ã§ãã¬ã¼ã¿ã¼
- Next.js, Nuxt.js, Gatsby.js, Hugo, Jekyllç
- ãã¹ãã£ã³ã°ãµã¼ãã¹
- Netlify, Vercel, Firebaseç
- ãããã¬ã¹CMS
Jamstackãªæ§æããµãã¼ãããéçãµã¤ãã¸ã§ãã¬ã¼ã¿ã¼ããã¹ãã£ã³ã°ãµã¼ãã¹ããããã¬ã¹CMSã«ã¯æ§ã ãªãµã¼ãã¹ãè¦ã競ã£ã¦ããç¶æ ã§ãã°ã°ãã¨è²ã ãªæ§æä¾ãåºã¦æ¥ãã®ã§ããµã¤ãã®ç®çã好ã¿ã«å¿ãã¦ãµã¼ãã¹ã®çµã¿åãããé¸ã¶ã¨è¯ãã ãããç§ã¯Next.jsï¼Reactï¼ã使ã£ã¦ã¿ããã£ãã®ã§Next.jsã¨Vercelãæ¡ç¨ããITã«è©³ãããªã妻ããµã¤ããæ´æ°ããã®ã§ãCMSã«ã¯æ¥æ¬è£½ã§ééçºè ã«ãUIãåãããããã¨è©å¤ã®microCMSãæ¡ç¨ããã
Jamstackã®ã¡ãªãã
å®éã«ãµã¤ãéçºãéç¨ãçµé¨ãã¦æããJamstackã®ã¡ãªããã«ã¤ãã¦æ¸ãããã
ãæ軽ãã¤ããã©ã¼ãã³ã¹
æ®éã«Next.jsã§éçºãã¦Vercelã«ãããã¤ããã ãã§Googleã®PageSpeed Insightsã§99ã®ã¹ã³ã¢ãåºãã®ã¯ããããå®éã«ãµã¤ãã触ã£ã¦ã¿ã¦ããã¼ã¸é·ç§»ãé常ã«éããã¨ãåããã ããã
ééçºè ã«ããæ´æ°ãæ¯è¼ç容æ
ãµã¤ãã³ã³ãã³ãã¯ãã¹ã¦CMSä¸ã§MDXï¼Reactã³ã³ãã¼ãã³ãã使ããMarkdownï¼å½¢å¼ã§ç®¡çãã¦ãããmicroCMSã«ã¯ãªããã¨ãã£ã¿æ©è½ãããããã©ãä»äºã§ãªããã¨ãã£ã¿ã使ã£ã¦ãã¦ãæ³å®å¤ã®HTMLã¿ã°ã大éã«æ··å ¥ãã¦è¦å´ãããã¨ãå¤ãã£ããããæ¢ãã¦ããã¹ãã¨ãªã¢ã«MDXå½¢å¼ã§å ¥åããæ¹å¼ãæ¡ç¨ããã
ãµã¤ãæ´æ°è ã®å¦»ã¯ITã«ãã¾ãå¼·ããªãããã©ãmicroCMSã®ç®¡çç»é¢ãè¦ãªããåAPIã®ã³ã³ãã³ãæ§æã¨ãç§ãä½æããåæã³ã³ãã³ããå ã«Markdownã®èª¬æãç°¡åã«ããããmicroCMSä¸ã§ãµã¯ãµã¯ã³ã³ãã³ã追å ã§ããããã«ãªã£ãã®ã§ãnoteãã¯ã¦ãªããã°ã®ãªããã¨ãã£ã¿ã»ã©ç´æçã«æä½ã§ããªãããã©ãééçºè ã«ããã³ã³ãã³ãæ´æ°ãæ¯è¼ç容æã«è¡ããæ触ã ãã¡ãªã¿ã«å¦»ã«Markdownã¨ãã£ã¿ãç´¹ä»ããã¨ããé¢åèãæããããã§ãmicroCMSã®ç®¡çç»é¢ã®ãã©ã¼ã ä¸ã§ç´æ¥æ´æ°ãã¦ããããã¤çµæãè¦ã¦å®éã®è¡¨ç¤ºã確èªãã¦ãã*2ã趣å³ã®ãµã¤ãã§ããã°åãæ¢ãããããã¤ãã¦ã¿ãéãªéç¨ãã¢ãªããªã¨æãã
éçºä½é¨ãè¯å¥½
Next.jsã¯Reactãã¼ã¹ã®ã©ã¤ãã©ãªã§ãTypeScriptã®å°å ¥ã容æã ãTypeScriptã®åãã§ãã¯ã®æ©æµãåãã¤ã¤Reactã§ããããªã¨ã³ã³ãã¼ãã³ãåã§ããããã³ãã¨ã³ãéçºã¯ãæ®æ®µä»äºã§Backbone.jsãã¼ã¹ã®è¤éãªSPAã触ã£ã¦ãããã¨ã¨æ¯è¼ãã¦ãå¿«é©ã§ãã³ã¼ãã£ã³ã°ã®ã¢ããã¼ã·ã§ã³ãçµå§é«ãä¿ã¦ããNode.jsã®ã©ã¤ãã©ãªç¾¤ãé常ã«å å®ãã¦ããã
Next.jsã¯ä»ååãã¦è§¦ã£ãããã©ãç°¡åãªããã°ãµã¤ããä½ã£ã¦ãããã¤ã¾ã§è¡ãå ¬å¼ãã¥ã¼ããªã¢ã«ãé常ã«æããæ¸ããã¦ããã®ã§ãå¦ç¿ã³ã¹ãã¯ä½ãæããã
Reactã®å ¬å¼ããã¥ã¡ã³ããæ¥æ¬èªè¨³ããããåãããããä¸å¯§ã«æ¸ããã¦ãã¦å©ããã
ãµã¤ãå¶ä½æé
ããããåæ§ã®æ§æã§éçãµã¤ããä½ã£ã¦ã¿ããã¨ããæ¹ã¸ã®åèã¨èªåç¨ã®ã¡ã¢ã®ããããµã¤ããªãªã¼ã¹ã¾ã§ã®æé ãæ¸ãã¦ãããããå·¥æ°çã«ã¯ã»ã¼å¹´æ«å¹´å§ä¼æä¸ã®ä½æ¥ã§ãªãªã¼ã¹ã¾ã§æã¡è¾¼ããã¨ãã§ããã
- Next.jsのチュートリアルãµã¤ããä½æãã
- GitHubã«ãã¥ã¼ããªã¢ã«ãµã¤ãã«ååãä»ãã¦ãªãã¸ããªä½æãã
- ãã¥ã¼ããªã¢ã«ãµã¤ãããã¼ã¹ã«ãã¦å®éã®ãµã¤ããä½æãã
- TypeScriptを導入ãã
- ESLintï¼JavaScript Standard Styleï¼ãå°å ¥ãã
- CSSã©ã¤ãã©ãªã®Bulmaãå°å
¥ãã
- BootstrapãJSãªãã§CSSã®ã¿ã«ãããããªå°è±¡ã®ã©ã¤ãã©ãª
- 便å©ãªã¹ã¿ã¤ã«ãè²ã ã¨ç¨æããã¦ãã¦å©ãããã Bootstrapã¨åæ§ã«å½±é¿ç¯å²ãåºããªãã®ã§ãä»äºã§ä½¿ãã«ã¯æ³¨æãå¿ è¦ã ã¨æã£ã
- ãµã¤ãæ§æã»ãã¶ã¤ã³ã妻ã¨ç¸è«ãã¤ã¤æ±ºå®ãã
- ãã³ãã¼ã¬ã¡ãã¥ã¼ã§ã¯ãªãããã¿ã¼ã§4ã¤ã®ã¡ãã¥ã¼ãåãæ¿ãã
- ããããã¼ã¸ã§çæããã§ã¼ãã¤ã³ã»ãã§ã¼ãã¢ã¦ãã§åãæ¿ãã¦è¡¨ç¤ºãã
- ç½èæ¯ã«é»åããã¼ã¹ã¨ããã¢ã¯ã»ã³ãã«ã©ã¼ã«ç·ãæ¡ç¨ãã
- ãã®ä»ãµã¤ãã¿ã¤ãã«ãdescriptionãªã©ã決å®ãã
- ãã¼ã«ã«ã«ã³ã³ãã³ããç¨æãã¤ã¤ãåãã¼ã¸ãä½æãã
- ãããã¼ã¨ããã¿ã¼ã¯ãã¹ã¦ã®ãã¼ã¸ã«è¡¨ç¤ºããå ±éã³ã³ãã¼ãã³ãã¨ãã
- ãã¼ã«ã«ããmicroCMSã«ã³ã³ãã³ãã移åããAPIでコンテンツを取得する処理ãæ¸ã
- CMSでMDX形式のコンテンツを管理する仕組みを導入ãã
- トップページで短歌がフェードイン・フェードアウトで切り替わる処理ã追å ãã
- faviconã¨OGPç»åãè¨å®ãã
- Vercelã«GitHubãªãã¸ããªãé£æºãã¦ãããã¤ãã
- ç°å¢å¤æ°ï¼microCMSã®APIãã¼ï¼ã®è¨å®ãGUIã§ç°¡åã«è¡ãã
- GitHubã«pushæã®èªåãããã¤æ©è½ãããã©ã«ãã§ä»ãã¦ãã¦é©ãã
- Vercel管çç»é¢ã§ç¬èªãã¡ã¤ã³ãåå¾ãã
- åãããããUIã§ãµã¯ãã¨è³¼å ¥ã§ãã*3
- è³¼å ¥å¾èªåã§ç¬èªãã¡ã¤ã³ã«ã¢ã¯ã»ã¹å¯è½ã«ãªããTLSï¼SSLï¼ã®è¨å®ã¾ã§èªåã§å§ã¾ã£ã¦ãç´1æéå¾ã«TLSè¨å®ãå®äºãã
- Vercel管理画面でDeploy用URLを取得ããmicroCMSのWebhook通知先に設定ãã¦ãCMSæ´æ°æã®èªåãããã¤ãå¯è½ã«ãã
- Vercelã®ãããã¤ç¨URLãã¨ã©ã¼ã¨ãªãæ©è½ããªãã£ãããVercelã®ãµãã¼ãã«è±èªã§å ±åãããããã«ãã°ä¿®æ£ãã¦ããã
- VercelからSlackにデプロイ通知ãã
- ãã©ã¤ãã¼ãã§Slackã使ã£ã¦ããªããããä»åã®å®éç¨ã§ã¯æ¡ç¨ãã¦ããªãããä»äºã§ä½¿ããªããã£ãæ¹ãè¯ãã ãã
- ãµã¤ãç·¨éè ã«CMSã®æ´æ°æ¹æ³ãæ¡å ãã
*1:Slackã®ãããã¤éç¥ã«ã¤ãã¦ã¯å¯è½ãªãã¨ã確èªããã®ã¿ã§ãå®éã®éç¨ã¯è¡ã£ã¦ããªãï¼ãã©ã¤ãã¼ãã§Slackãå©ç¨ãã¦ããªãããï¼ãå³ã¯Draw.ioã使ã£ã¦æããã
*2:ç¾ç¶ã§ã¯30ç§ã»ã©ã§ãããã¤å®äºããã
*3:ãåå.comã¨ã¯é²æ³¥ã®å·®ã â¦ã