ããã³ããšã³ãã³ã³ããŒãã³ãã©ã€ãã©ãªã®ããŒãžã§ãã³ã°ãšé åžã«é¢ããå æ¬çãªã¬ã€ããã°ããŒãã«éçºããŒã ã®äžè²«æ§ãšå¹çæ§ã確ä¿ããŸãã
ããã³ããšã³ãã³ã³ããŒãã³ãã©ã€ãã©ãªïŒã°ããŒãã«ããŒã ã®ããã®ããŒãžã§ãã³ã°ãšé åžæŠç¥
仿¥ã®æ¥éã«é²åããããžã¿ã«ç°å¢ã«ãããŠãäžè²«æ§ãããã¹ã±ãŒã©ãã«ãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒUIïŒãæ§ç¯ã»ç¶æããããšã¯ãããããèŠæš¡ã®çµç¹ã«ãšã£ãŠæãéèŠã§ããé©åã«æ§é åãããããã³ããšã³ãã³ã³ããŒãã³ãã©ã€ãã©ãªã¯ããããéæããããã®åŒ·åãªããŒã«ã§ãããã³ãŒãã®åå©çšãä¿é²ããéçºãµã€ã¯ã«ãå éãããæ§ã ãªã¢ããªã±ãŒã·ã§ã³éã§çµ±äžããããã©ã³ãäœéšãä¿èšŒããŸããããããç¹ã«å°ççã«åæ£ããããŒã å ã§ã³ã³ããŒãã³ãã©ã€ãã©ãªã广çã«ç®¡çããã«ã¯ãæ éãªèšç»ãšå ç¢ãªããŒãžã§ãã³ã°ããã³é åžæŠç¥ãå¿ èŠã§ãã
ãªãããã³ããšã³ãã³ã³ããŒãã³ãã©ã€ãã©ãªãéèŠãªã®ã
ããã³ããšã³ãã³ã³ããŒãã³ãã©ã€ãã©ãªã¯ããã¿ã³ããã©ãŒã ãããã²ãŒã·ã§ã³ããŒãã¢ãŒãã«ãªã©ãåå©çšå¯èœãªUIèŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ã§ãããç¬ç«ãããã«ãã£ã³ã°ãããã¯ãšããŠèšèšã»éçºãããŸãããããã®ã³ã³ããŒãã³ãã¯ç°ãªããããžã§ã¯ãã«ç°¡åã«çµ±åã§ããç¹°ãè¿ãã³ãŒããèšè¿°ããå¿ èŠããªããªããŸããããã«ãããããã€ãã®å©ç¹ãããããããŸãã
- éçºé床ã®åäžïŒ éçºè ã¯ãäºåã«æ§ç¯ãããã³ã³ããŒãã³ããæŽ»çšããŠUIãè¿ éã«çµã¿ç«ãŠãããšãã§ããéçºæéãå€§å¹ ã«ççž®ã§ããŸãã
- äžè²«æ§ã®åäžïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªã¯ããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã§äžè²«ããã«ãã¯ã¢ã³ããã£ãŒã«ãä¿èšŒãããã©ã³ãã¢ã€ãã³ãã£ãã£ã匷åããŸãã
- ä¿å®æ§ã®åäžïŒ ããã³ã³ããŒãã³ããžã®å€æŽã¯ãããã䜿çšãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«åæ ããããããä¿å®ãšæŽæ°ãç°¡çŽ åãããŸãã
- ã³ãŒãéè€ã®åæžïŒ ã³ã³ããŒãã³ããåå©çšããããšã§ã³ãŒãã®éè€ãæå°éã«æããããããã¯ãªãŒã³ã§å¹ççãªã³ãŒãããŒã¹ã«ã€ãªãããŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®æ¹åïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªã¯ããã¶ã€ããŒãšéçºè ã®ããã®å ±éèšèªãæäŸããããè¯ãã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããŸãã
ããŒãžã§ãã³ã°æŠç¥
广çãªããŒãžã§ãã³ã°ã¯ãã³ã³ããŒãã³ãã©ã€ãã©ãªãžã®å€æŽã管çããäºææ§ã®åé¡ã鲿¢ããããã«äžå¯æ¬ ã§ããã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ïŒSemVerïŒãæ¥çæšæºã§ãããåŒ·ãæšå¥šãããŸãã
ã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ïŒSemVerïŒ
SemVerã¯ãMAJOR.MINOR.PATCHã®3ã€ã®éšåãããªãããŒãžã§ã³çªå·ã䜿çšããŸãã
- MAJORïŒ äºææ§ã®ãªãAPIã®å€æŽã瀺ããŸããå©çšè ãã³ãŒããæŽæ°ããå¿ èŠãããç Žå£ç倿Žãå ããå Žåã«ãMAJORããŒãžã§ã³ãã€ã³ã¯ãªã¡ã³ãããŸãã
- MINORïŒ åŸæ¹äºææ§ã®ããæ¹æ³ã§è¿œå ãããæ°æ©èœã瀺ããŸããããã¯ãæ¢åã®ã³ãŒããä¿®æ£ãªãã§åŒãç¶ãæ©èœããããšãæå³ããŸãã
- PATCHïŒ åŸæ¹äºææ§ã®ãããã°ä¿®æ£ããã€ããŒãªæ¹åã瀺ããŸãã
äŸïŒ çŸåšããŒãžã§ã³1.2.3ã®ã³ã³ããŒãã³ãã©ã€ãã©ãªãèããŸãã
- åŸæ¹äºææ§ã®ããæ°æ©èœãå°å ¥ããå ŽåãããŒãžã§ã³ã¯1.3.0ã«ãªããŸãã
- APIã倿Žããã«ãã°ãä¿®æ£ããå ŽåãããŒãžã§ã³ã¯1.2.4ã«ãªããŸãã
- éçºè ãã³ãŒããæŽæ°ããå¿ èŠãããç Žå£ç倿Žãå°å ¥ããå ŽåãããŒãžã§ã³ã¯2.0.0ã«ãªããŸãã
ãã¬ãªãªãŒã¹ããŒãžã§ã³ïŒ SemVerã§ã¯ããã€ãã³ã®åŸã«èå¥åãä»ãããã¬ãªãªãŒã¹ããŒãžã§ã³ïŒäŸïŒ1.0.0-alpha.1, 1.0.0-beta, 1.0.0-rc.2ïŒã䜿çšã§ããŸãããããã¯ãå®å®çããªãªãŒã¹ããåã«ãã¹ãããã£ãŒãããã¯ãåéããã®ã«åœ¹ç«ã¡ãŸãã
SemVerã®å©ç¹
- æç¢ºæ§ïŒ SemVerã¯ãåãªãªãŒã¹ã«ããã倿Žã®æ§è³ªã«ã€ããŠæç¢ºãªã³ãã¥ãã±ãŒã·ã§ã³ãæäŸããŸãã
- èªååïŒ npmãyarnãªã©ã®ããŒã«ã¯SemVerã䜿çšããŠäŸåé¢ä¿ã管çããäºææ§ã®ããããŒãžã§ã³ã«èªåçã«æŽæ°ããŸãã
- ãªã¹ã¯ã®äœæžïŒ SemVerã¯ãäŸåé¢ä¿ãæŽæ°ããéã®äºæãã¬ç Žå£ãé²ãã®ã«åœ¹ç«ã¡ãŸãã
ããŒãžã§ãã³ã°ããŒã«ãšèªåå
ããã€ãã®ããŒã«ã¯ãããŒãžã§ãã³ã°ããã»ã¹ãèªååããSemVerã¬ã€ãã©ã€ã³ã匷å¶ããããšãã§ããŸãã
- Conventional CommitsïŒ ãã®ä»æ§ã¯ã³ãããã¡ãã»ãŒãžã®æžåŒãæšæºåããããŒã«ãå«ãŸãã倿Žã®çš®é¡ã«åºã¥ããŠæ¬¡ã®ããŒãžã§ã³çªå·ãèªåçã«æ±ºå®ã§ããããã«ããŸãã
- Semantic ReleaseïŒ ãã®ããŒã«ã¯ãããŒãžã§ã³ã®æŽæ°ããªãªãŒã¹ããŒãã®çæãnpmãžã®ããã±ãŒãžå ¬éãªã©ããªãªãŒã¹ããã»ã¹å šäœãèªååããŸããé©åãªããŒãžã§ã³çªå·ã決å®ããããã«Conventional Commitsã«äŸåããŠããŸãã
- lernaïŒ è€æ°ã®ããã±ãŒãžãæã€JavaScriptãããžã§ã¯ãïŒã¢ãã¬ãïŒã管çããããã®ããŒã«ã§ããã¢ãã¬ãå ã®åã ã®ããã±ãŒãžã®ããŒãžã§ãã³ã°ãšå ¬éãèªååã§ããŸãã
- changesetsïŒ ã¢ãã¬ãå ã®å€æŽã管çããããã®ããäžã€ã®äººæ°ããŒã«ã§ãå倿Žã«å¯ŸããŠæç€ºçãªå€æŽå±¥æŽãšã³ããªãäœæããããšã«çŠç¹ãåœãŠãŠããŸãã
Conventional Commitsã䜿çšããäŸïŒ
"feat: Add new button style"ã®ãããªã³ãããã¡ãã»ãŒãžã¯æ°æ©èœã瀺ããMINORããŒãžã§ã³ã®æŽæ°ã«ãªããŸãã"fix: Resolve a bug in the form validation"ã®ãããªã³ãããã¡ãã»ãŒãžã¯ãã°ä¿®æ£ã瀺ããPATCHããŒãžã§ã³ã®æŽæ°ã«ãªããŸãã"feat(breaking): Remove deprecated API"ã®ãããªã³ãããã¡ãã»ãŒãžã¯ç Žå£ç倿Žã瀺ããMAJORããŒãžã§ã³ã®æŽæ°ã«ãªããŸãã
é åžæŠç¥
é©åãªé åžæŠç¥ãéžæããããšã¯ãç°ãªãããŒã ããããžã§ã¯ãã®éçºè ãã³ã³ããŒãã³ãã©ã€ãã©ãªã«ç°¡åã«ã¢ã¯ã»ã¹ã§ããããã«ããããã«äžå¯æ¬ ã§ããæãäžè¬çãªã¢ãããŒãã¯ãnpmãyarnã®ãããªããã±ãŒãžãããŒãžã£ãŒã䜿çšããããã¢ãã¬ãæ§é ãæ¡çšããããšã§ãã
ããã±ãŒãžãããŒãžã£ãŒïŒnpm, yarn, pnpmïŒ
ã³ã³ããŒãã³ãã©ã€ãã©ãªãnpmã®ãããªããã±ãŒãžãããŒãžã£ãŒã«å ¬éããããšã¯ãæãç°¡åã§åºãæ¡çšãããŠããã¢ãããŒãã§ããããã«ãããéçºè ã¯äœ¿ãæ £ããã³ãã³ãã䜿çšããŠã©ã€ãã©ãªãç°¡åã«ã€ã³ã¹ããŒã«ããã³æŽæ°ã§ããŸãã
- npmã¢ã«ãŠã³ãã®äœæïŒ ãŸã æã£ãŠããªãå Žåã¯ãnpmjs.comã§ã¢ã«ãŠã³ããäœæããŸãã
- package.jsonã®èšå®ïŒ ãã®ãã¡ã€ã«ã«ã¯ãã³ã³ããŒãã³ãã©ã€ãã©ãªã®ååãããŒãžã§ã³ã説æãäŸåé¢ä¿ãªã©ã®ã¡ã¿ããŒã¿ãå«ãŸããŸãã`name`ãã£ãŒã«ããäžæã§èª¬æçã§ããããšã確èªããŠãã ããããŸãã`main`ãã£ãŒã«ãã§ã©ã€ãã©ãªã®ãšã³ããªãã€ã³ããæå®ããŸãã
- ãã«ãããŒã«ã®äœ¿çšïŒ WebpackãRollupãParcelãªã©ã®ãã«ãããŒã«ã䜿çšããŠãã³ã³ããŒãã³ããé åžå¯èœãªåœ¢åŒïŒäŸïŒUMDãESã¢ãžã¥ãŒã«ïŒã«ãã³ãã«ããŸãã
- ããã±ãŒãžã®å ¬éïŒ `npm publish`ã³ãã³ãã䜿çšããŠãã©ã€ãã©ãªãnpmã«å ¬éããŸãã
package.jsonã®äŸïŒ
{
"name": "@your-org/my-component-library",
"version": "1.0.0",
"description": "A collection of reusable UI components",
"main": "dist/index.js",
"module": "dist/index.esm.js",
"repository": {
"type": "git",
"url": "git+https://github.com/your-org/my-component-library.git"
},
"keywords": [
"react",
"components",
"ui library"
],
"author": "Your Organization",
"license": "MIT",
"bugs": {
"url": "https://github.com/your-org/my-component-library/issues"
},
"homepage": "https://github.com/your-org/my-component-library#readme",
"peerDependencies": {
"react": ">=16.8.0"
},
"devDependencies": {
"webpack": "^5.0.0"
}
}
ã¹ã³ãŒãä»ãããã±ãŒãžïŒ ååã®è¡çªãé¿ããããã«ãã¹ã³ãŒãä»ãããã±ãŒãžïŒäŸïŒ`@your-org/my-component-library`ïŒã®äœ¿çšãæ€èšããŠãã ãããã¹ã³ãŒãä»ãããã±ãŒãžã¯ãçµç¹åããŠãŒã¶ãŒåã§ãã¬ãã£ãã¯ã¹ãä»ããããnpmã¬ãžã¹ããªå ã§ã®äžææ§ãä¿èšŒãããŸãã
ã¢ãã¬ã
ã¢ãã¬ãã¯ãè€æ°ã®ããã±ãŒãžãå«ãåäžã®ãªããžããªã§ãããã®ã¢ãããŒãã¯ãçžäºã«äŸåããã³ã³ããŒãã³ãã©ã€ãã©ãªãã¢ããªã±ãŒã·ã§ã³ã管çããã®ã«æçã§ãã
ã¢ãã¬ãã®å©ç¹
- ã³ãŒãå ±æïŒ ç°ãªããããžã§ã¯ãéã§ã³ãŒããã³ã³ããŒãã³ããç°¡åã«å ±æã§ããŸãã
- äŸåé¢ä¿ç®¡çã®ç°¡çŽ åïŒ äŸåé¢ä¿ãåäžã®å Žæã§ç®¡çããäžæŽåãæžãããŸãã
- ã¢ãããã¯ãªå€æŽïŒ è€æ°ã®ããã±ãŒãžã«ãŸããã倿Žãåäžã®ã³ãããã§è¡ããäžè²«æ§ã確ä¿ããŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®æ¹åïŒ ãã¹ãŠã®é¢é£ãããžã§ã¯ããäžå 管çããããšã§ãã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããŸãã
ã¢ãã¬ãã管çããããã®ããŒã«
- LernaïŒ JavaScriptã®ã¢ãã¬ãã管çããããã®äººæ°ããŒã«ãããŒãžã§ãã³ã°ãå ¬éãäŸåé¢ä¿ç®¡çãèªååã§ããŸãã
- Yarn WorkspacesïŒ Yarn Workspacesã¯ãã¢ãã¬ãã管çããããã®çµã¿èŸŒã¿ãµããŒããæäŸããŸãã
- NxïŒ ãã¡ãŒã¹ãã¯ã©ã¹ã®ã¢ãã¬ããµããŒããšé«åºŠãªãã£ãã·ã³ã°æ©èœãåãããã«ãã·ã¹ãã ã
- pnpmïŒ äŸåé¢ä¿ãã·ã³ããªãã¯ãªã³ã¯ããããšã§ãç¹ã«ã¢ãã¬ãã§å¹ççãªããã±ãŒãžãããŒãžã£ãŒã
ã¢ãã¬ãã®æ§é äŸïŒ
monorepo/
âââ packages/
â âââ component-library/
â â âââ package.json
â â âââ src/
â â âââ ...
â âââ application-a/
â â âââ package.json
â â âââ src/
â â âââ ...
â âââ application-b/
â âââ package.json
â âââ src/
â âââ ...
âââ package.json
âââ lerna.json (or yarn.lock, nx.json)
ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãšç¶ç¶çããªããªãŒïŒCI/CDïŒ
CI/CDãã€ãã©ã€ã³ãå®è£ ããããšã¯ãã³ã³ããŒãã³ãã©ã€ãã©ãªã®ãã«ãããã¹ãããããã€ããã»ã¹ãèªååããããã«äžå¯æ¬ ã§ããããã«ããã倿Žãé »ç¹ãã€ç¢ºå®ã«çµ±åãããããšãä¿èšŒãããŸãã
CI/CDãã€ãã©ã€ã³ã®äž»èŠãªã¹ããã
- ã³ãŒãã®ã³ãããïŒ éçºè ã¯ããŒãžã§ã³ç®¡çã·ã¹ãã ïŒäŸïŒGitïŒã«å€æŽãã³ãããããŸãã
- ãã«ãïŒ CIãµãŒããŒãã³ã³ããŒãã³ãã©ã€ãã©ãªãèªåçã«ãã«ãããŸãã
- ãã¹ãïŒ ã³ãŒãã®å質ãä¿èšŒããããã«èªåãã¹ããå®è¡ãããŸãã
- ããŒãžã§ã³ã®æŽæ°ïŒ ã³ãããã¡ãã»ãŒãžã«åºã¥ããŠïŒConventional Commitsãªã©ã䜿çšããŠïŒããŒãžã§ã³çªå·ãèªåçã«ã€ã³ã¯ãªã¡ã³ããããŸãã
- å ¬éïŒ æŽæ°ãããã³ã³ããŒãã³ãã©ã€ãã©ãªãnpmãä»ã®ããã±ãŒãžã¬ãžã¹ããªã«å ¬éãããŸãã
- ãããã€ïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªã«äŸåããã¢ããªã±ãŒã·ã§ã³ãèªåçã«ææ°ããŒãžã§ã³ã«æŽæ°ãããŸãã
人æ°ã®CI/CDããŒã«
- GitHub ActionsïŒ GitHubãªããžããªãšã·ãŒã ã¬ã¹ã«çµ±åãããçµã¿èŸŒã¿ã®CI/CDãã©ãããã©ãŒã ã
- GitLab CI/CDïŒ GitLabãšç·å¯ã«çµ±åãããããäžã€ã®åŒ·åãªCI/CDãã©ãããã©ãŒã ã
- JenkinsïŒ åºã䜿çšãããŠãããªãŒãã³ãœãŒã¹ã®èªååãµãŒããŒã
- CircleCIïŒ ã¯ã©ãŠãããŒã¹ã®CI/CDãã©ãããã©ãŒã ã
- Travis CIïŒ ããäžã€ã®äººæ°ã®ã¯ã©ãŠãããŒã¹CI/CDãã©ãããã©ãŒã ã
GitHub Actionsã¯ãŒã¯ãããŒã®äŸïŒ
name: CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js 16
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Test
run: npm run test
publish:
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v3
- name: Use Node.js 16
uses: actions/setup-node@v3
with:
node-version: 16
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Install dependencies
run: npm ci
- name: Semantic Release
run: npx semantic-release
ããã¥ã¡ã³ããŒã·ã§ã³ãšã¹ã¿ã€ã«ã¬ã€ã
å æ¬çãªããã¥ã¡ã³ããŒã·ã§ã³ã¯ãã³ã³ããŒãã³ãã©ã€ãã©ãªã䜿ããããçè§£ããããããããã«äžå¯æ¬ ã§ããååã«ææžåãããã³ã³ããŒãã³ãã©ã€ãã©ãªã«ã¯ã以äžãå«ãŸããã¹ãã§ãã
- ã³ã³ããŒãã³ãAPIïŒ åã³ã³ããŒãã³ãã®ããããã£ãã¡ãœãããã€ãã³ãã®è©³çްãªèª¬æã
- 䜿çšäŸïŒ åã³ã³ããŒãã³ãã®äœ¿ç𿹿³ã«é¢ããæç¢ºã§ç°¡æœãªäŸã
- ãã¶ã€ã³ã¬ã€ãã©ã€ã³ïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªã§äœ¿çšãããŠãããã¶ã€ã³ååãšã¹ã¿ã€ã«ã«é¢ããæ å ±ã
- ã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé ïŒ ã³ã³ããŒãã³ããé害ãæã€ãŠãŒã¶ãŒã«ã¢ã¯ã»ã¹ããããããããã®ã¬ã€ãã³ã¹ã
- ã³ã³ããªãã¥ãŒã·ã§ã³ã¬ã€ãã©ã€ã³ïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªã«è²¢ç®ããæ¹æ³ã«é¢ããæç€ºã
ããã¥ã¡ã³ããŒã·ã§ã³ãçæããããã®ããŒã«
- StorybookïŒ UIã³ã³ããŒãã³ããéçºããææžåããããã®äººæ°ããŒã«ãåã³ã³ããŒãã³ãã®æ©èœã瀺ãã€ã³ã¿ã©ã¯ãã£ããªã¹ããŒãªãŒãäœæã§ããŸãã
- DoczïŒ Markdownãã¡ã€ã«ããããã¥ã¡ã³ããŒã·ã§ã³ãŠã§ããµã€ããäœæããããã®ããŒã«ã
- StyleguidistïŒ Reactã³ã³ããŒãã³ãããããã¥ã¡ã³ããŒã·ã§ã³ãŠã§ããµã€ããçæããããã®ããŒã«ã
- CompodocïŒ Angularã¢ããªã±ãŒã·ã§ã³ãšã³ã³ããŒãã³ãã©ã€ãã©ãªã®ããã¥ã¡ã³ããŒã·ã§ã³ãçæããããã®ããŒã«ã
ããã¥ã¡ã³ããŒã·ã§ã³æ§é ã®äŸïŒStorybookïŒïŒ
stories/
âââ Button.stories.js
âââ Input.stories.js
âââ ...
ã³ã©ãã¬ãŒã·ã§ã³ãšã³ãã¥ãã±ãŒã·ã§ã³
广çãªã³ã©ãã¬ãŒã·ã§ã³ãšã³ãã¥ãã±ãŒã·ã§ã³ã¯ãã°ããŒãã«ããŒã å ã§ã³ã³ããŒãã³ãã©ã€ãã©ãªã管çããããã«äžå¯æ¬ ã§ãã倿Žã«ã€ããŠè°è«ããåé¡ã解決ãããã£ãŒãããã¯ãåéããããã®æç¢ºãªã³ãã¥ãã±ãŒã·ã§ã³ãã£ãã«ãšããã»ã¹ã確ç«ããŠãã ããã
ã³ã©ãã¬ãŒã·ã§ã³ã®ããã®ãã¹ããã©ã¯ãã£ã¹
- æç¢ºãªæææš©ã¢ãã«ã®ç¢ºç«ïŒ 誰ãã³ã³ããŒãã³ãã©ã€ãã©ãªã®ä¿å®ãšæŽæ°ã«è²¬ä»»ãæã€ããå®çŸ©ããŸãã
- å ±æãã¶ã€ã³ã·ã¹ãã ã®äœ¿çšïŒ ãã¶ã€ããŒãšéçºè ãã³ã³ããŒãã³ãã©ã€ãã©ãªã§äœ¿çšããããã¶ã€ã³ååãšã¹ã¿ã€ã«ã«ã€ããŠé£æºããŠããããšã確èªããŸãã
- 宿çãªã³ãŒãã¬ãã¥ãŒã®å®æœïŒ å質ãšäžè²«æ§ã確ä¿ããããã«ãã³ã³ããŒãã³ãã©ã€ãã©ãªãžã®å€æŽãã¬ãã¥ãŒããŸãã
- ããŒãžã§ã³ç®¡çã·ã¹ãã ã®äœ¿çšïŒ Gitãä»ã®ããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšããŠã倿Žã远跡ããã³ãŒãã§å ±åäœæ¥ããŸãã
- ã³ãã¥ãã±ãŒã·ã§ã³ãã©ãããã©ãŒã ã®äœ¿çšïŒ SlackãMicrosoft TeamsããŸãã¯ä»ã®ã³ãã¥ãã±ãŒã·ã§ã³ãã©ãããã©ãŒã ã䜿çšããŠãã³ãã¥ãã±ãŒã·ã§ã³ãšã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããŸãã
- æç¢ºãªã³ãã¥ãã±ãŒã·ã§ã³ãã£ãã«ã®ç¢ºç«ïŒ ç°ãªãçš®é¡ã®ã³ãã¥ãã±ãŒã·ã§ã³ïŒäŸïŒäžè¬çãªè°è«ããã°å ±åãæ©èœãªã¯ãšã¹ãïŒã®ããã®ç¹å®ã®ãã£ãã«ãå®çŸ©ããŸãã
- 決å®äºé ã®ææžåïŒ éææ§ãšäžè²«æ§ã確ä¿ããããã«ãã³ã³ããŒãã³ãã©ã€ãã©ãªã«é¢é£ããéèŠãªæ±ºå®ãææžåããŸãã
ç Žå£ç倿Žã®åãæ±ã
ç Žå£ç倿Žã¯ãé²åããã³ã³ããŒãã³ãã©ã€ãã©ãªã«ãããŠé¿ããããŸãããæ··ä¹±ãæå°éã«æããå©çšè ã«ãšã£ãŠã¹ã ãŒãºãªç§»è¡ãä¿èšŒããããã«ãããããæ éã«åãæ±ãããšãäžå¯æ¬ ã§ãã
ç Žå£ç倿Žãåãæ±ãããã®ãã¹ããã©ã¯ãã£ã¹
- æç¢ºãªã³ãã¥ãã±ãŒã·ã§ã³ïŒ ä»åŸã®ç Žå£ç倿Žã«ã€ããŠååãªèŠåãæäŸããŸãã
- ç§»è¡ã¬ã€ãã®æäŸïŒ 倿Žã«å¯Ÿå¿ããããã«ã³ãŒããæŽæ°ããæ¹æ³ã«é¢ããè©³çŽ°ãªæç€ºãæäŸããŸãã
- å€ãAPIã®éæšå¥šåïŒ éæšå¥šã®APIã«æç¢ºãªèŠåã¡ãã»ãŒãžãä»ããŸãã
- äºææ§ã¬ã€ã€ãŒã®æäŸïŒ å¯èœã§ããã°ãå©çšè ãéãããæéãå€ãAPIãåŒãç¶ã䜿çšã§ããäºææ§ã¬ã€ã€ãŒãæäŸããŸãã
- ãµããŒãã®æäŸïŒ å©çšè ãæ°ããAPIã«ç§»è¡ããã®ãå©ããããã®ãµããŒããæäŸããŸãã
éæšå¥šã®èŠåäŸïŒ
// Deprecated in version 2.0.0, will be removed in version 3.0.0
console.warn('The `oldMethod` function is deprecated and will be removed in version 3.0.0. Please use `newMethod` instead.');
ã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé
ã¢ã¯ã»ã·ããªãã£ã¯ãããããããã³ããšã³ãã³ã³ããŒãã³ãã©ã€ãã©ãªã®éèŠãªåŽé¢ã§ããWCAGïŒãŠã§ãã³ã³ãã³ãã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ïŒãªã©ã®ã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ã«åŸã£ãŠãã³ã³ããŒãã³ããé害ãæã€ãŠãŒã¶ãŒã«ã¢ã¯ã»ã¹å¯èœã§ããããšã確èªããŠãã ããã
äž»èŠãªã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé
- ã»ãã³ãã£ãã¯HTMLïŒ ã»ãã³ãã£ãã¯HTMLèŠçŽ ã䜿çšããŠãã³ã³ãã³ãã«æ§é ãšæå³ãæäŸããŸãã
- ARIA屿§ïŒ ARIAïŒAccessible Rich Internet ApplicationsïŒå±æ§ã䜿çšããŠãåçã³ã³ãã³ãã®ã¢ã¯ã»ã·ããªãã£ã匷åããŸãã
- ããŒããŒãããã²ãŒã·ã§ã³ïŒ ãã¹ãŠã®ã³ã³ããŒãã³ããããŒããŒãã䜿çšããŠããã²ãŒãã§ããããšã確èªããŸãã
- è²ã®ã³ã³ãã©ã¹ãïŒ èŠåã®äœããŠãŒã¶ãŒãããã¹ããèªããããã«ãååãªè²ã®ã³ã³ãã©ã¹ãã䜿çšããŸãã
- ã¹ã¯ãªãŒã³ãªãŒããŒã®äºææ§ïŒ ã¹ã¯ãªãŒã³ãªãŒããŒã§ã³ã³ããŒãã³ãããã¹ãããæ£ããè§£éãããããšã確èªããŸãã
- ãã©ãŒã«ã¹ç®¡çïŒ ãŠãŒã¶ãŒãã³ã³ããŒãã³ãéãç°¡åã«ç§»åã§ããããã«ããã©ãŒã«ã¹ãé©åã«ç®¡çããŸãã
ããã©ãŒãã³ã¹ã®æé©å
ããã©ãŒãã³ã¹ããããã³ããšã³ãã³ã³ããŒãã³ãã©ã€ãã©ãªã®ããäžã€ã®éèŠãªåŽé¢ã§ããã³ã³ããŒãã³ããæé©åããŠãè¿ éã«èªã¿èŸŒãŸããå¹ççã«åäœããããã«ããŠãã ããã
äž»èŠãªããã©ãŒãã³ã¹æé©åæè¡
- ã³ãŒãåå²ïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªãããå°ããªãã£ã³ã¯ã«åå²ããŠãåæèªã¿èŸŒã¿æéãççž®ããŸãã
- é å»¶èªã¿èŸŒã¿ïŒ ã³ã³ããŒãã³ããå¿ èŠã«ãªã£ããšãã«ã®ã¿èªã¿èŸŒã¿ãŸãã
- ããªãŒã·ã§ã€ãã³ã°ïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªããæªäœ¿çšã®ã³ãŒããåé€ããŸãã
- ç»åã®æé©åïŒ ç»åãæé©åããŠãã¡ã€ã«ãµã€ãºãåæžããŸãã
- ã¡ã¢åïŒ äžèŠãªåã¬ã³ããªã³ã°ãé²ãããã«ã³ã³ããŒãã³ããã¡ã¢åããŸãã
- ä»®æ³åïŒ ä»®æ³åæè¡ã䜿çšããŠãå€§èŠæš¡ãªããŒã¿ãªã¹ããå¹ççã«ã¬ã³ããªã³ã°ããŸãã
çµè«
ããã³ããšã³ãã³ã³ããŒãã³ãã©ã€ãã©ãªã®æ§ç¯ãšç®¡çã¯éèŠãªåãçµã¿ã§ãããéçºé床ãäžè²«æ§ãä¿å®æ§ã®é¢ã§å€§ããªå©ç¹ããããããŸãããã®ã¬ã€ãã§æŠèª¬ããããŒãžã§ãã³ã°ãšé åžæŠç¥ã«åŸãããšã§ãã³ã³ããŒãã³ãã©ã€ãã©ãªãç°¡åã«ã¢ã¯ã»ã¹ã§ããé©åã«ä¿å®ãããçµç¹ã®çµ¶ããå€åããããŒãºã«é©å¿ã§ããããã«ãªããŸããã°ããŒãã«ããŒã ã«ãšã£ãŠçã«äŸ¡å€ã®ããã³ã³ããŒãã³ãã©ã€ãã©ãªãäœæããããã«ãã³ã©ãã¬ãŒã·ã§ã³ãã³ãã¥ãã±ãŒã·ã§ã³ãã¢ã¯ã»ã·ããªãã£ãåªå ããããšãå¿ããªãã§ãã ããã
ã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ãèªååãããCI/CDãã€ãã©ã€ã³ãå æ¬çãªããã¥ã¡ã³ããŒã·ã§ã³ããããŠã³ã©ãã¬ãŒã·ã§ã³ãžã®åŒ·ãçŠç¹ãçã蟌ãã å ç¢ãªæŠç¥ãå®è£ ããããšã§ãã°ããŒãã«ããŒã ã¯ã³ã³ããŒãã³ãé§åéçºã®ããã³ã·ã£ã«ãæå€§éã«åŒãåºãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã§äžè²«ããŠåªãããŠãŒã¶ãŒäœéšãæäŸããããšãã§ããŸãã