Next.jsã§éçè§£æã®åãè§£ãæŸã¡ããã«ãæã®ã³ãŒãæé©åãå®çŸããŸããããããã©ãŒãã³ã¹ãåäžããããšã©ãŒãæžãããå ç¢ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãããè¿ éã«æäŸããŸãã
Next.jséçè§£æïŒãã«ãæã³ãŒãæé©å
仿¥ã®ããŒã¹ã®éããŠã§ãéçºã®ç¶æ³ã§ã¯ãããã©ãŒãã³ã¹ãæãéèŠã§ãããŠãŒã¶ãŒã¯ã·ãŒã ã¬ã¹ãªäœéšãæåŸ ããŠãããèªã¿èŸŒã¿ã®é ããŠã§ããµã€ãã¯äžæºãæ©äŒã®æå€±ã«ã€ãªããå¯èœæ§ããããŸããNext.jsã¯ã人æ°ã®Reactãã¬ãŒã ã¯ãŒã¯ã§ãããæé©åããããŠã§ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®åŒ·åãªæ©èœãæäŸããŸããNext.jsã§æé©ãªããã©ãŒãã³ã¹ãéæããããã®éèŠãªåŽé¢ã®1ã€ã¯ããã«ãããã»ã¹äžã«éçè§£æã掻çšããããšã§ãããã®èšäºã§ã¯ãNext.jsãããžã§ã¯ãã«ããããã«ãæã³ãŒãæé©åã®ããã®éçè§£ææè¡ã®çè§£ãšå®è£ ã«é¢ããå æ¬çãªã¬ã€ããæäŸããŸããããã¯ãäžçäžã®ããããèŠæš¡ã®ãããžã§ã¯ãã«é©çšã§ããŸãã
éçè§£æãšã¯ïŒ
éçè§£æã¯ãã³ãŒããå®è¡ããã«ã³ãŒããåæããããã»ã¹ã§ããã³ãŒãã®æ§é ãæ§æãã»ãã³ãã£ã¯ã¹ã調ã¹ãŠã次ã®ãããªæœåšçãªåé¡ãç¹å®ããŸãã
- æ§æãšã©ãŒ
- åãšã©ãŒïŒç¹ã«TypeScriptãããžã§ã¯ãã®å ŽåïŒ
- ã³ãŒãã¹ã¿ã€ã«ã®éå
- ã»ãã¥ãªãã£ã®è匱æ§
- ããã©ãŒãã³ã¹ã®ããã«ããã¯
- ãããã³ãŒã
- æœåšçãªãã°
ã³ãŒããå®è¡ããŠãã®åäœã芳å¯ããåçè§£æãšã¯ç°ãªããéçè§£æã¯ã³ã³ãã€ã«æãŸãã¯ãã«ãæã«ãã§ãã¯ãå®è¡ããŸããããã«ãããéçºè ã¯éçºãµã€ã¯ã«ã®æ©ã段éã§ãšã©ãŒãæ€åºã§ããããããšã©ãŒãæ¬çªç°å¢ã«å°éããŠãŠãŒã¶ãŒã«åé¡ãåŒãèµ·ããå¯èœæ§ãé²ãããšãã§ããŸãã
Next.jsã§éçè§£æã䜿çšããçç±
éçè§£æãNext.jsã®ã¯ãŒã¯ãããŒã«çµ±åãããšãå€ãã®ã¡ãªãããåŸãããŸãã
- ã³ãŒãå質ã®åäžïŒéçè§£æã¯ãã³ãŒãã£ã³ã°æšæºã®é©çšãæœåšçãªãã°ã®ç¹å®ãã³ãŒãããŒã¹å šäœã®å質ãšä¿å®æ§ã®åäžã«åœ¹ç«ã¡ãŸããããã¯ãäžè²«æ§ãéèŠãªå€§èŠæš¡ãªå ±åãããžã§ã¯ãã§ã¯ç¹ã«éèŠã§ãã
- ããã©ãŒãã³ã¹ã®åäžïŒããã©ãŒãã³ã¹ã®ããã«ããã¯ãéå¹ççãªã³ãŒããã¿ãŒã³ãæ©æã«ç¹å®ããããšã«ãããéçè§£æã䜿çšãããšãèªã¿èŸŒã¿æéãççž®ããããã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããããã«ã³ãŒããæé©åã§ããŸãã
- ãšã©ãŒã®åæžïŒãã«ãããã»ã¹äžã«ãšã©ãŒãæ€åºãããšããšã©ãŒãæ¬çªç°å¢ã«ç§»è¡ããã®ãé²ããã©ã³ã¿ã€ã ãšã©ãŒãäºæããªãåäœã®ãªã¹ã¯ã軜æžã§ããŸãã
- éçºãµã€ã¯ã«ã®é«éåïŒåé¡ãæ©æã«ç¹å®ããŠä¿®æ£ãããšãé·æçã«ã¯æéãšåŽåãç¯çŽã§ããŸããéçºè ã¯ãããã°ã«è²»ããæéãæžãããæ°ããæ©èœã®æ§ç¯ã«è²»ããæéãå¢ãããŸãã
- ä¿¡é Œæ§ã®åäžïŒéçè§£æã¯ãéçºè ã«ã³ãŒãã®å質ãšä¿¡é Œæ§ã«å¯Ÿããèªä¿¡ãé«ããŸããããã«ãããæœåšçãªåé¡ãå¿é ããããšãªãã驿°çãªæ©èœã®æ§ç¯ã«éäžã§ããŸãã
- èªååãããã³ãŒãã¬ãã¥ãŒïŒéçè§£æããŒã«ã¯ãã³ãŒãã¬ãã¥ãŒããã»ã¹ã®å€ãã®åŽé¢ãèªååã§ãããããã¬ãã¥ã¢ãŒã¯ããè€éãªåé¡ãã¢ãŒããã¯ãã£ã®æ±ºå®ã«éäžã§ããŸãã
Next.jsã®äž»èŠãªéçè§£æããŒã«
ããã€ãã®åŒ·åãªéçè§£æããŒã«ãNext.jsãããžã§ã¯ãã«çµ±åã§ããŸããæãäžè¬çãªãªãã·ã§ã³ã次ã«ç€ºããŸãã
ESLint
ESLintã¯ãã³ãŒãã£ã³ã°æšæºã®é©çšãæœåšçãªãšã©ãŒã®ç¹å®ãã³ãŒãã®äžè²«æ§ã®åäžã«åœ¹ç«ã€ãåºã䜿çšãããŠããJavaScriptããã³JSXãªã³ãã£ã³ã°ããŒã«ã§ããããŸããŸãªãã©ã°ã€ã³ãšã«ãŒã«ã䜿çšããŠãç¹å®ã®ãããžã§ã¯ãèŠä»¶ã«åãããŠã«ã¹ã¿ãã€ãºã§ããŸããã°ããŒãã«ãªéçºããŒã ã§åºã䜿çšãããŠãããåœéçãªéçºè éã®äžè²«æ§ãç¶æããŸãã
æ§æäŸïŒ.eslintrc.jsïŒïŒ
module.exports = { env: { browser: true, es2021: true, node: true, }, extends: [ 'eslint:recommended', 'plugin:react/recommended', 'plugin:@next/next/core-web-vitals', 'plugin:prettier/recommended', ], parserOptions: { ecmaFeatures: { jsx: true, }, ecmaVersion: 12, sourceType: 'module', }, plugins: [ 'react', 'prettier', ], rules: { 'react/react-in-jsx-scope': 'off', 'prettier/prettier': 'error', }, };
TypeScript
TypeScriptã¯ãéçåä»ãã远å ããJavaScriptã®ã¹ãŒããŒã»ããã§ãã倿°ã颿°ããªããžã§ã¯ãã®åãå®çŸ©ã§ãããããTypeScriptã³ã³ãã€ã©ã¯ãã«ãããã»ã¹äžã«åãšã©ãŒãæ€åºã§ããŸããããã«ãããã©ã³ã¿ã€ã ãšã©ãŒã®ãªã¹ã¯ãå€§å¹ ã«è»œæžãããã³ãŒãã®ä¿å®æ§ãåäžããŸããTypeScriptã®äœ¿çšã¯ãŸããŸãäžè¬çã«ãªã£ãŠãããç¹ã«å€§èŠæš¡ãªãããžã§ã¯ãããæç¢ºãªåå®çŸ©ãã³ã©ãã¬ãŒã·ã§ã³ãšçè§£ãä¿é²ããã°ããŒãã«ããŒã ã§é¡èã§ãã
TypeScriptã³ãŒãã®äŸïŒ
interface User { id: number; name: string; email: string; } function greetUser(user: User): string { return `Hello, ${user.name}!`; } const myUser: User = { id: 1, name: 'John Doe', email: 'john.doe@example.com' }; console.log(greetUser(myUser));
Prettier
Prettierã¯ãå®çŸ©æžã¿ã®ã¹ã¿ã€ã«ã¬ã€ãã«åŸã£ãŠã³ãŒããèªåçã«ãã©ãŒãããããã³ãŒããã©ãŒããã¿ã§ãããããžã§ã¯ãå šäœã§äžè²«ããã³ãŒããã©ãŒããããä¿èšŒããèªã¿ãããä¿å®ããããããŸããPrettierã¯ãåã ã®éçºè ã䜿çšããIDEãŸãã¯ãšãã£ã¿ãŒã«é¢ä¿ãªããåäžæ§ãç¶æããã®ã«åœ¹ç«ã¡ãŸããããã¯ã忣ããŒã ã«ãšã£ãŠç¹ã«éèŠã§ãã
æ§æäŸïŒ.prettierrc.jsïŒïŒ
module.exports = { semi: false, trailingComma: 'all', singleQuote: true, printWidth: 120, tabWidth: 2, };
ãã³ãã«ã¢ãã©ã€ã¶ãŒ
`webpack-bundle-analyzer`ãªã©ã®ãã³ãã«ã¢ãã©ã€ã¶ãŒã¯ãJavaScriptãã³ãã«ã®å 容ãèŠèŠåããŸããããã«ããã倧ããªäŸåé¢ä¿ãéè€ããã³ãŒããã³ãŒãåå²ã®æ©äŒãç¹å®ã§ããŸãããã³ãã«ãµã€ãºãæé©åããããšã«ãããã¢ããªã±ãŒã·ã§ã³ã®èªã¿èŸŒã¿æéãå€§å¹ ã«æ¹åã§ããŸããNext.jsã¯ã`next.config.js`ãã¡ã€ã«ã®`analyze`ãã©ã°ã䜿çšããŠããã³ãã«ãµã€ãºãåæããããã®çµã¿èŸŒã¿ãµããŒããæäŸããŸãã
æ§æäŸïŒnext.config.jsïŒïŒ
module.exports = { analyze: true, }
ãã®ä»ã®ããŒã«
- SonarQubeïŒã³ãŒãå質ã®ç¶ç¶çãªæ€æ»ã®ããã®ãã©ãããã©ãŒã ãã³ãŒãã®éçè§£æã«ããèªåã¬ãã¥ãŒãå®è¡ããŠããã°ãã³ãŒãã®èããããã³ã»ãã¥ãªãã£ã®è匱æ§ãæ€åºããŸãã
- DeepSourceïŒéçè§£æãšã³ãŒãã¬ãã¥ãŒãèªååããæœåšçãªåé¡ãç¹å®ããŠæ¹åãææ¡ããŸãã
- SnykïŒäŸåé¢ä¿ã®ã»ãã¥ãªãã£ã®è匱æ§ã®ç¹å®ã«çŠç¹ãåœãŠãŠããŸãã
éçè§£æãNext.jsã¯ãŒã¯ãããŒã«çµ±åãã
éçè§£æãNext.jsãããžã§ã¯ãã«çµ±åããã«ã¯ãããã€ãã®æé ãå¿ èŠã§ãã
- å¿ èŠãªããŒã«ãã€ã³ã¹ããŒã«ããïŒnpmãŸãã¯yarnã䜿çšããŠãESLintãTypeScriptãPrettierãããã³äœ¿çšããäºå®ã®ãã®ä»ã®ããŒã«ãã€ã³ã¹ããŒã«ããŸãã
- ããŒã«ãæ§æããïŒæ§æãã¡ã€ã«ïŒäŸïŒ`.eslintrc.js`ã`tsconfig.json`ã`.prettierrc.js`ïŒãäœæããŠãåããŒã«ã®ã«ãŒã«ãšèšå®ãå®çŸ©ããŸãã
- ãã«ãããã»ã¹ãšçµ±åããïŒ`package.json`ãã¡ã€ã«ã«ã¹ã¯ãªããã远å ããŠããã«ãããã»ã¹äžã«éçè§£æããŒã«ãå®è¡ããŸãã
- IDEãæ§æããïŒIDEïŒäŸïŒVS CodeïŒã®æ¡åŒµæ©èœãã€ã³ã¹ããŒã«ããŠãã³ãŒãã®èšè¿°äžã«ãªã¢ã«ã¿ã€ã ã®ãã£ãŒãããã¯ãæäŸããŸãã
- ã³ãŒãã¬ãã¥ãŒãèªååããïŒéçè§£æãCI/CDãã€ãã©ã€ã³ã«çµ±åããŠãã³ãŒãã®å質ãèªåçã«ãã§ãã¯ãããšã©ãŒãæ¬çªç°å¢ã«å°éããã®ãé²ããŸãã
package.jsonã¹ã¯ãªããã®äŸïŒ
"scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "eslint . --ext .js,.jsx,.ts,.tsx", "format": "prettier --write .", "typecheck": "tsc --noEmit" }
Next.jsã§ã®éçè§£æã®ãã¹ããã©ã¯ãã£ã¹
Next.jsãããžã§ã¯ãã§éçè§£æãæå€§éã«æŽ»çšããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããã
- æ©æã«éå§ããïŒãããžã§ã¯ãã®æåããéçè§£æãçµ±åããŠãåé¡ãæ©æã«æ€åºãã环ç©ãé²ããŸãã
- æ§æãã«ã¹ã¿ãã€ãºããïŒéçè§£æããŒã«ã®ã«ãŒã«ãšèšå®ããç¹å®ã®ãããžã§ã¯ãèŠä»¶ãšã³ãŒãã£ã³ã°æšæºã«åãããŠèª¿æŽããŸãã
- äžè²«ããã¹ã¿ã€ã«ã¬ã€ãã䜿çšããïŒãããžã§ã¯ãå šäœã§äžè²«ããã³ãŒãã¹ã¿ã€ã«ãé©çšããŠãèªã¿ããããšä¿å®æ§ãåäžãããŸãã
- ããã»ã¹ãèªååããïŒéçè§£æãCI/CDãã€ãã©ã€ã³ã«çµ±åããŠãã³ãŒãã®å質ãèªåçã«ãã§ãã¯ãããšã©ãŒãæ¬çªç°å¢ã«å°éããã®ãé²ããŸãã
- ããŒã«ã宿çã«æŽæ°ããïŒéçè§£æããŒã«ãææ°ã®ç¶æ ã«ä¿ã¡ãææ°ã®æ©èœãšãã°ä¿®æ£ãå©çšã§ããããã«ããŸãã
- ããŒã ãæè²ããïŒããŒã ã®ãã¹ãŠã®éçºè ãéçè§£æã®éèŠæ§ãšããŒã«ã®å¹æçãªäœ¿ç𿹿³ãçè§£ããŠããããšã確èªããŸããç¹ã«ãç°æåã®ããã¯ã°ã©ãŠã³ããããŸããŸãªã¬ãã«ã®çµéšãæã€æ°ããããŒã ã¡ã³ããŒã®ããã«ããã¬ãŒãã³ã°ãšããã¥ã¡ã³ããæäŸããŸãã
- 調æ»çµæã«è¿ éã«å¯Ÿå¿ããïŒéçè§£æã®èª¿æ»çµæããè¿ éã«å¯Ÿå¿ããå¿ èŠãããéèŠãªåé¡ãšããŠæ±ããŸããèŠåããšã©ãŒãç¡èŠãããšãããæ·±å»ãªåé¡ã«ã€ãªããå¯èœæ§ããããŸãã
- pre-commitããã¯ã䜿çšããïŒpre-commitããã¯ãå®è£ ããŠãåã³ãããã®åã«éçè§£æããŒã«ãèªåçã«å®è¡ããŸããããã«ãããéçºè ãå®çŸ©ãããã«ãŒã«ã«éåããã³ãŒãã誀ã£ãŠã³ãããããããšãé²ããŸããããã«ãããéçºè ã®å Žæã«é¢ä¿ãªãããã¹ãŠã®ã³ãŒãããããžã§ã¯ãã®æšæºãæºãããŠããããšã確èªã§ããŸãã
- åœéåïŒi18nïŒãšããŒã«ãªãŒãŒã·ã§ã³ïŒl10nïŒãæ€èšããïŒéçè§£æã¯ãããŒãã³ãŒããããæååãäžé©åãªæ¥ä»/æå»ã®åœ¢åŒãªã©ãi18nãšl10nã«é¢ããæœåšçãªåé¡ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
éçè§£æã«ãã£ãŠæå¹ã«ãªãç¹å®ã®æé©åææ³
äžè¬çãªã³ãŒãå質ãè¶ ããŠãéçè§£æã¯Next.jsã§ã®ç¹å®ã®ãã«ãææé©åãä¿é²ããŸãã
ãããã³ãŒãé€å»
éçè§£æã¯ãå®è¡ãŸãã¯äœ¿çšãããªãã³ãŒããç¹å®ã§ããŸãããã®ãããã³ãŒããåé€ãããšããã³ãã«ãµã€ãºãçž®å°ãããèªã¿èŸŒã¿æéãççž®ãããŸããããã¯ãæ©èœãéæšå¥šã«ãªãå¯èœæ§ããããã察å¿ããã³ãŒããåžžã«åé€ããããšã¯éããªãå€§èŠæš¡ãªãããžã§ã¯ãã§ã¯éèŠã§ãã
ã³ãŒãåå²ã®æé©å
Next.jsã¯ãã³ãŒãããªã³ããã³ãã§ããŒãã§ããå°ããªãã£ã³ã¯ã«èªåçã«åå²ããŸããéçè§£æã¯ãã³ãŒãåå²ãããã«æé©åããæ©äŒãç¹å®ããã®ã«åœ¹ç«ã¡ãåããŒãžãŸãã¯ã³ã³ããŒãã³ãã«å¿ èŠãªã³ãŒãã®ã¿ãããŒããããããã«ããŸããããã«ããããŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ãã«äžå¯æ¬ ãªãããé«éãªåæããŒãžããŒãã«è²¢ç®ããŸãã
äŸåé¢ä¿ã®æé©å
äŸåé¢ä¿ãåæããããšã«ãããéçè§£æã¯æªäœ¿çšãŸãã¯äžèŠãªäŸåé¢ä¿ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãããããã®äŸåé¢ä¿ãåé€ãããšããã³ãã«ãµã€ãºãçž®å°ãããããã©ãŒãã³ã¹ãåäžããŸãããã³ãã«ã¢ãã©ã€ã¶ãŒã¯ãããã«ç¹ã«åœ¹ç«ã¡ãŸããããšãã°ãå°ããªéšåã ããå¿ èŠãªå Žåã«ãã©ã€ãã©ãªå šäœãã€ã³ããŒãããŠããããšã«æ°ä»ããããããŸãããäŸåé¢ä¿ãåæãããšãäžèŠãªè¥å€§åãé²ããã€ã³ã¿ãŒãããæ¥ç¶ãé ããŠãŒã¶ãŒã«ã¡ãªããããããããŸãã
ããªãŒã·ã§ã€ãã³ã°
ããªãŒã·ã§ã€ãã³ã°ã¯ãJavaScriptã¢ãžã¥ãŒã«ããæªäœ¿çšã®ãšã¯ã¹ããŒããåé€ããææ³ã§ããWebpackïŒNext.jsã§äœ¿çšïŒãªã©ã®ææ°ã®ãã³ãã©ãŒã¯ããªãŒã·ã§ã€ãã³ã°ãå®è¡ã§ããŸãããéçè§£æã¯ã³ãŒããããªãŒã·ã§ã€ãã³ã°ãšäºææ§ãããããã«èšè¿°ãããŠããããšã確èªããã®ã«åœ¹ç«ã¡ãŸããESã¢ãžã¥ãŒã«ïŒ`import`ããã³`export`ïŒã䜿çšããããšãã广çãªããªãŒã·ã§ã€ãã³ã°ã®éµãšãªããŸãã
ç»åã®æé©å
å³å¯ã«ã¯ã³ãŒãåæã§ã¯ãããŸããããéçè§£æããŒã«ã¯ãé©åã«æé©åãããŠããªãç»åããã§ãã¯ããããã«æ¡åŒµãããããšããããããŸããããšãã°ãESLintãã©ã°ã€ã³ã䜿çšããŠãç»åã®ãµã€ãºãšåœ¢åŒã«é¢ããã«ãŒã«ãé©çšã§ããŸããæé©åãããç»åã¯ãç¹ã«ã¢ãã€ã«ããã€ã¹ã§ã®ããŒãžèªã¿èŸŒã¿æéãå€§å¹ ã«ççž®ããŸãã
ããŸããŸãªã°ããŒãã«ã³ã³ããã¹ãã§ã®äŸ
éçè§£æãããŸããŸãªã°ããŒãã«ã³ã³ããã¹ãã§ã©ã®ããã«é©çšã§ãããã瀺ãäŸãããã€ã瀺ããŸãã
- eã³ããŒã¹ãã©ãããã©ãŒã ïŒã°ããŒãã«ãªeã³ããŒã¹ãã©ãããã©ãŒã ã¯ãESLintãšTypeScriptã䜿çšããŠãè€æ°ã®åœãšã¿ã€ã ãŸãŒã³ã«åæ£ããŠããéçºããŒã å šäœã§ã³ãŒãã®å質ãšäžè²«æ§ã確ä¿ããŸããPrettierã¯ãéçºè ã®IDEã«é¢ä¿ãªããäžè²«ããã³ãŒãã¹ã¿ã€ã«ãé©çšããããã«äœ¿çšãããŸãã
- ãã¥ãŒã¹ãŠã§ããµã€ãïŒãã¥ãŒã¹ãŠã§ããµã€ãã¯ããã³ãã«åæã䜿çšããŠæªäœ¿çšã®äŸåé¢ä¿ãç¹å®ããŠåé€ããããŒãžèªã¿èŸŒã¿æéãççž®ããäžçäžã®èªè ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŸããç¹ã«ãçºå±éäžåœã®äœåž¯åå¹ æ¥ç¶ã§ãé«éããŒããä¿èšŒããããã«ãç»åã®æé©åã«ç¹å¥ãªæ³šæãæã£ãŠããŸãã
- SaaSã¢ããªã±ãŒã·ã§ã³ïŒSaaSã¢ããªã±ãŒã·ã§ã³ã¯ãSonarQubeã䜿çšããŠã³ãŒãå質ãç¶ç¶çã«ç£èŠããæœåšçãªã»ãã¥ãªãã£ã®è匱æ§ãç¹å®ããŸããããã«ãããäžçäžã®ãŠãŒã¶ãŒã«å¯Ÿããã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ãšä¿¡é Œæ§ã確ä¿ã§ããŸãããŸããéçè§£æã䜿çšããŠi18nã®ãã¹ããã©ã¯ãã£ã¹ãé©çšããã¢ããªã±ãŒã·ã§ã³ãããŸããŸãªèšèªãå°åã«ç°¡åã«ããŒã«ã©ã€ãºã§ããããã«ããŸãã
- ã¢ãã€ã«ãã¡ãŒã¹ããŠã§ããµã€ãïŒäž»ã«ã¢ãã€ã«ããã€ã¹ã®ãŠãŒã¶ãŒãã¿ãŒã²ãããšãããŠã§ããµã€ãã¯ãéçè§£æã䜿çšããŠãã³ãã«ãµã€ãºãšç»åèªã¿èŸŒã¿ãç©æ¥µçã«æé©åããŸããã³ãŒãåå²ã䜿çšããŠãåããŒãžã«å¿ èŠãªã³ãŒãã®ã¿ãããŒãããç»åãå§çž®ããŠåž¯åå¹ ã®æ¶è²»ãæå°éã«æããŸãã
çµè«
éçè§£æã¯ãææ°ã®ãŠã§ãéçºãç¹ã«Next.jsã§é«æ§èœã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããå Žåã«äžå¯æ¬ ãªéšåã§ããéçè§£æãã¯ãŒã¯ãããŒã«çµ±åããããšã«ãããã³ãŒãå質ãåäžãããããã©ãŒãã³ã¹ãåäžããããšã©ãŒãæžãããå ç¢ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãããè¿ éã«æäŸã§ããŸããããªãããœãéçºè ã§ããããšãå€§èŠæš¡ãªããŒã ã®äžå¡ã§ããããšãéçè§£æãåãå ¥ããããšã§ãçç£æ§ãšäœæ¥ã®å質ãå€§å¹ ã«åäžãããããšãã§ããŸãããã®èšäºã§æŠèª¬ãããŠãããã¹ããã©ã¯ãã£ã¹ã«åŸããããŒãºã«é©ããé©åãªããŒã«ãéžæããããšã«ãããéçè§£æã®å¯èœæ§ãæå€§éã«åŒãåºããäžçäžã®ãŠãŒã¶ãŒã«åªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããäžçã¯ã©ã¹ã®Next.jsã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
ãã®èšäºã§èª¬æããããŒã«ãšãã¯ããã¯ã䜿çšããããšã§ãNext.jsã¢ããªã±ãŒã·ã§ã³ãããŠãŒã¶ãŒãäžçã®ã©ãã«ããŠããããã©ãŒãã³ã¹ãã»ãã¥ãªãã£ãããã³ä¿å®æ§ã«åãããŠæé©åãããŠããããšã確èªã§ããŸãããããžã§ã¯ããšã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®ç¹å®ã®ããŒãºã«åãããŠã¢ãããŒããé©å¿ãããéçè§£æããã»ã¹ãç¶ç¶çã«ç£èŠããã³æ¹åããŠãæä»£ã®å ãè¡ãããšãå¿ããªãã§ãã ããã