Reactã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã¯ãã³ã³ããŒãã³ãã®ãã€ãã¬ãŒã·ã§ã³ãæŠç¥çã«åªå ããWebã¢ããªã®ããã©ãŒãã³ã¹ãåäžãããæå 端æè¡ã§ãããã®ä»çµã¿ãšå®è£ æ¹æ³ãåŠã³ãŸãããã
Reactã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ïŒã³ã³ããŒãã³ãèªã¿èŸŒã¿ã®ã€ã³ããªãžã§ã³ã¹
çŸä»£ã®Webéçºã®é åã§ã¯ãåè¶ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããšãæãéèŠã§ããèªã¿èŸŒã¿æéãé ããã€ã³ã¿ã©ã¯ãã£ãæ§ãäœããšããŠãŒã¶ãŒã®äžæºãé¢è±ã«ã€ãªããå¯èœæ§ããããŸãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã®äººæ°ã®JavaScriptã©ã€ãã©ãªã§ããReactã¯ãããã©ãŒãã³ã¹ãåäžãããããã®ããŸããŸãªæé©åææ³ãæäŸããŠããŸãããã®äžã§ããã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã¯ãåæèªã¿èŸŒã¿æéãšäœæçãªå¿çæ§ãå€§å¹ ã«æ¹åããããã®åŒ·åãªã¢ãããŒããšããŠéç«ã£ãŠããŸãã
Reactãã€ãã¬ãŒã·ã§ã³ãšã¯ïŒ
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã«é£ã³èŸŒãåã«ããŸãReactã«ããããã€ãã¬ãŒã·ã§ã³ã®æŠå¿µãçè§£ããŸãããããã€ãã¬ãŒã·ã§ã³ãšã¯ãReactããµãŒããŒã§ã¬ã³ããªã³ã°ãããHTMLãåãåããã¯ã©ã€ã¢ã³ãåŽã§ããã«ã€ãã³ããªã¹ããŒããã®ä»ã®ã€ã³ã¿ã©ã¯ãã£ãæ§ãä»å ããããã»ã¹ã§ããåºæ¬çã«ãéçãªHTMLãå®å šã«æ©èœããã€ã³ã¿ã©ã¯ãã£ããªReactã¢ããªã±ãŒã·ã§ã³ã«å€æããŸãã
åŸæ¥ã®ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒã®ã»ããã¢ããã§ã¯ããµãŒããŒã¯ã¢ããªã±ãŒã·ã§ã³å šäœãHTMLã«ã¬ã³ããªã³ã°ãããããã¯ã©ã€ã¢ã³ãã«éä¿¡ãããŸãããã®åŸãã¯ã©ã€ã¢ã³ãåŽã®Reactã³ãŒãããã®HTMLãããã€ãã¬ãŒã·ã§ã³ãããã€ã³ã¿ã©ã¯ãã£ãã«ããŸããSSRã¯äºåã«ã¬ã³ããªã³ã°ãããHTMLæ§é ãæäŸããããšã§åæèªã¿èŸŒã¿æéãæ¹åããŸããããã€ãã¬ãŒã·ã§ã³ããã»ã¹ã¯ãç¹ã«å€æ°ã®ã³ã³ããŒãã³ããæã€è€éãªã¢ããªã±ãŒã·ã§ã³ã§ã¯äŸç¶ãšããŠããã«ããã¯ã«ãªãå¯èœæ§ããããŸãã
åŸæ¥ã®ãã€ãã¬ãŒã·ã§ã³ã®åé¡ç¹
åŸæ¥ã®ãã€ãã¬ãŒã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³å šäœãäžåºŠã«ç©æ¥µçã«ãã€ãã¬ãŒã·ã§ã³ããŸããããã«ã¯ãããã€ãã®äž»èŠãªåé¡ããããŸãïŒ
- ã€ã³ã¿ã©ã¯ãã£ãæ§ã®é å»¶ïŒ ãŠãŒã¶ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããããã®éšåãã€ã³ã¿ã©ã¯ãã£ãã«ãªãåã«ãã¢ããªã±ãŒã·ã§ã³å šäœã®ãã€ãã¬ãŒã·ã§ã³ãå®äºããã®ãåŸ ã€å¿ èŠããããŸããããŒãžã®è¡šç€ºéšåã¯ãµãŒããŒã§è¿ éã«ã¬ã³ããªã³ã°ãããŠãããã€ãã¬ãŒã·ã§ã³ããã»ã¹å šäœãå®äºãããŸã§ãŠãŒã¶ãŒã¯ããããšå¯Ÿè©±ã§ããŸããã
- CPUè² è·ãé«ãïŒ å€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã®ãã€ãã¬ãŒã·ã§ã³ã¯ãç¹ã«æ§èœã®äœãããã€ã¹ã§ã¯èšç®ã³ã¹ããé«ããªãå¯èœæ§ããããŸããããã«ãããç¹ã«åæèªã¿èŸŒã¿æã«ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãäœäžããå¯èœæ§ããããŸãã
Reactã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®ç޹ä»
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã¯ãã©ã®ã³ã³ããŒãã³ããæåã«ãã€ãã¬ãŒã·ã§ã³ããããåªå é äœä»ãã§ããããã«ããããšã§ããããã®èª²é¡ã«å¯ŸåŠããŸããããã¯ããŠãŒã¶ãŒã«è¡šç€ºãããåæã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã«äžå¯æ¬ ãªéèŠãªã³ã³ããŒãã³ãããéèŠåºŠã®äœãã³ã³ããŒãã³ããç»é¢å€ã®ã³ã³ããŒãã³ãã®åã«ãã€ãã¬ãŒã·ã§ã³ã§ããããšãæå³ããŸããã³ã³ããŒãã³ããæŠç¥çã«ãã€ãã¬ãŒã·ã§ã³ããããšã§ã次ã®ããšãå¯èœã«ãªããŸãïŒ
- Time to Interactive (TTI) ã®æ¹åïŒ ãŠãŒã¶ãŒãããŒãžãšå¯Ÿè©±ã§ããããã«ãªããŸã§ã®æéãççž®ããŸãã
- äœæããã©ãŒãã³ã¹ã®åäžïŒ ããŒãžå šäœãå®å šã«ãã€ãã¬ãŒã·ã§ã³ãããŠããªããŠããã¢ããªã±ãŒã·ã§ã³ãããéããããå¿çæ§ãé«ããšæããããŸãã
- ãªãœãŒã¹å©çšã®æé©åïŒ éèŠåºŠã®äœãã³ã³ããŒãã³ãã®ãã€ãã¬ãŒã·ã§ã³ãé ãããããšã§ãããéèŠãªã¿ã¹ã¯ã®ããã«ãªãœãŒã¹ãè§£æŸããŸãã
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®ä»çµã¿ã¯ïŒ
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®æ žãšãªãèãæ¹ã¯ããã€ãã¬ãŒã·ã§ã³ããã»ã¹ãããå°ãã管çãããããã£ã³ã¯ã«åå²ãããã®éèŠæ§ã«åºã¥ããŠåªå é äœãä»ããããšã§ããããã¯ã以äžã®ãããªããŸããŸãªææ³ãéããŠå®çŸã§ããŸãïŒ
- é å»¶ãã€ãã¬ãŒã·ã§ã³ïŒ ã³ã³ããŒãã³ãã衚瀺ããããå¿ èŠã«ãªããŸã§ããã€ãã¬ãŒã·ã§ã³ãå»¶æããŸãã
- æ¡ä»¶ä»ããã€ãã¬ãŒã·ã§ã³ïŒ ãŠãŒã¶ãŒã®æäœãããã€ã¹ã®èœåãªã©ãç¹å®ã®æ¡ä»¶ã«åºã¥ããŠã³ã³ããŒãã³ãããã€ãã¬ãŒã·ã§ã³ããŸãã
- åªå é äœä»ããã€ãã¬ãŒã·ã§ã³ïŒ ã³ã³ããŒãã³ãããã€ãã¬ãŒã·ã§ã³ãããé åºãæç€ºçã«æå®ããŸãã
ãããã®ææ³ã¯ãå€ãã®å ŽåãReactã®çµã¿èŸŒã¿æ©èœã§ããReact.lazyãSuspenseãããã³ã«ã¹ã¿ã ããã¯ã䜿çšããŠãã€ãã¬ãŒã·ã§ã³ããã»ã¹ãå¶åŸ¡ããŸãã
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®å©ç¹
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãå®è£ ãããšãReactã¢ããªã±ãŒã·ã§ã³ã«å€§ããªå©ç¹ãããããããŸãïŒ
- åæèªã¿èŸŒã¿æéã®ççž®ïŒ éèŠãªã³ã³ããŒãã³ãã®ãã€ãã¬ãŒã·ã§ã³ãåªå ããããšã§ãããŒãžãã€ã³ã¿ã©ã¯ãã£ãã«ãªããŸã§ã®æéãççž®ã§ããŸãã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäžïŒ ããå¿çæ§ãé«ãã€ã³ã¿ã©ã¯ãã£ããªã¢ããªã±ãŒã·ã§ã³ã¯ãç¹ã«æ¥ç¶ãé ããŠãŒã¶ãŒãå€ãããã€ã¹ã®ãŠãŒã¶ãŒã«ãšã£ãŠãããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã€ãªãããŸãã
- SEOã®åŒ·åïŒ èªã¿èŸŒã¿æéãéããšããŠã§ããµã€ãã®æ€çŽ¢ãšã³ãžã³ã©ã³ãã³ã°ãåäžããå¯èœæ§ããããŸãã
- ãªãœãŒã¹æ¶è²»ã®æé©åïŒ éèŠåºŠã®äœãã³ã³ããŒãã³ãã®ãã€ãã¬ãŒã·ã§ã³ãé ãããããšã§ãã¯ã©ã€ã¢ã³ãã®ããã€ã¹ã«ãããåæã®CPUè² è·ã軜æžã§ããŸãã
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®å®è£ ïŒå®è·µçãªäŸ
Reactã¢ããªã±ãŒã·ã§ã³ã«ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãå®è£ ããæ¹æ³ã«ã€ããŠãããã€ãã®å®è·µçãªäŸãèŠãŠãããŸãããã
1. React.lazy ãš Suspense ã䜿çšããé
å»¶ãã€ãã¬ãŒã·ã§ã³
React.lazy ã䜿çšãããšãã³ã³ããŒãã³ããåçã«ã€ã³ããŒãã§ããŸããã€ãŸããã³ã³ããŒãã³ãã¯å®éã«å¿
èŠã«ãªã£ããšãã«ã®ã¿èªã¿èŸŒãŸããŸãããããSuspense ãšçµã¿åãããããšã§ãã³ã³ããŒãã³ãã®èªã¿èŸŒã¿äžã«ãã©ãŒã«ããã¯UIã衚瀺ã§ããŸãã
äŸïŒ
import React, { Suspense, lazy } from 'react';
const LazyComponent = lazy(() => import('./LazyComponent'));
function MyComponent() {
return (
Some important content
Loading... }>
ãã®äŸã§ã¯ãLazyComponentã¯Suspenseã®å¢çå
ã§ã¬ã³ããªã³ã°ããããšãã«ã®ã¿èªã¿èŸŒãŸããŸãããŠãŒã¶ãŒã¯ãã³ã³ããŒãã³ããèªã¿èŸŒãŸããŠãã€ãã¬ãŒã·ã§ã³ããããŸã§ããLoading...ããšãããã©ãŒã«ããã¯UIãèŠãããšã«ãªããŸãã
ã°ããŒãã«ãªèŠç¹ïŒ ãã®ã¢ãããŒãã¯ãå°ååºæã®ã³ã³ãã³ãã衚瀺ããã³ã³ããŒãã³ããããŠãŒã¶ãŒã®æåšå°ã«ãã£ãŠå¿çæéãç°ãªãå¯èœæ§ã®ããå€éšAPIãå¿ èŠãšããã³ã³ããŒãã³ãã«ç¹ã«åœ¹ç«ã¡ãŸãããã®ãããªã³ã³ããŒãã³ãã®èªã¿èŸŒã¿ãšãã€ãã¬ãŒã·ã§ã³ãå¿ èŠã«ãªããŸã§é ãããããšã§ãæåšå°ã«é¢ä¿ãªããã¹ãŠã®ãŠãŒã¶ãŒã®åæèªã¿èŸŒã¿æéãæ¹åã§ããŸãã
2. ã«ã¹ã¿ã ããã¯ã䜿çšããæ¡ä»¶ä»ããã€ãã¬ãŒã·ã§ã³
ã«ã¹ã¿ã ããã¯ãäœæããŠãç¹å®ã®åºæºã«åºã¥ããŠã³ã³ããŒãã³ããæ¡ä»¶ä»ãã§ãã€ãã¬ãŒã·ã§ã³ã§ããŸããããšãã°ãã³ã³ããŒãã³ãããã¥ãŒããŒãã«è¡šç€ºããããšãã«ã®ã¿ãã€ãã¬ãŒã·ã§ã³ãããå ŽåããããŸãã
äŸïŒ
import React, { useState, useEffect, useRef } from 'react';
function useInView(ref) {
const [isInView, setIsInView] = useState(false);
useEffect(() => {
const observer = new IntersectionObserver(
([entry]) => {
setIsInView(entry.isIntersecting);
},
{ threshold: 0.1 }
);
if (ref.current) {
observer.observe(ref.current);
}
return () => {
if (ref.current) {
observer.unobserve(ref.current);
}
};
}, [ref]);
return isInView;
}
function MyComponent() {
const ref = useRef(null);
const isInView = useInView(ref);
return (
Some content
{isInView && }
);
}
export default MyComponent;
ãã®äŸã§ã¯ãInteractiveComponentã¯ãã¥ãŒããŒãã«è¡šç€ºããããšãã«ã®ã¿ã¬ã³ããªã³ã°ããããã€ãã¬ãŒã·ã§ã³ãããŸããããã¯ãã¹ã¯ããŒã«ããªããã°èŠããªãäœçœ®ãããŠãŒã¶ãŒãããã«ã¯èŠãªãé åã«ããã³ã³ããŒãã³ãã«åœ¹ç«ã¡ãŸãã
ã°ããŒãã«ãªèŠç¹ïŒ ããã¿ãŒã«èšèªã»ã¬ã¯ã¿ãŒããããŠã§ããµã€ããèããŠã¿ãŸããããæ¡ä»¶ä»ããã€ãã¬ãŒã·ã§ã³ã䜿çšãããšããŠãŒã¶ãŒãããã¿ãŒãŸã§ã¹ã¯ããŒã«ãããšãã«ã®ã¿èšèªã»ã¬ã¯ã¿ãŒã³ã³ããŒãã³ãããã€ãã¬ãŒã·ã§ã³ã§ããŸããããã¯ã倿°ã®èšèªãªãã·ã§ã³ãæã€ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã察象ãšãããŠã§ããµã€ãã«ãšã£ãŠç¹ã«æçã§ãããªããªãããã¹ãŠã®ãŠãŒã¶ãŒã«ããã«é¢é£ãããšã¯éããªãã³ã³ããŒãã³ãã®äžèŠãªãã€ãã¬ãŒã·ã§ã³ãé²ãããšãã§ããããã§ãã
3. æç€ºçãªå¶åŸ¡ã«ããåªå é äœä»ããã€ãã¬ãŒã·ã§ã³
ããè€éãªã·ããªãªã§ã¯ãã³ã³ããŒãã³ãããã€ãã¬ãŒã·ã§ã³ãããé åºãæç€ºçã«å¶åŸ¡ããå¿ èŠãããå ŽåããããŸããããã¯ãã«ã¹ã¿ã ããžãã¯ã䜿çšããŠãã€ãã¬ãŒã·ã§ã³ããã»ã¹ã管çããããšã§å®çŸã§ããŸãã
äŸïŒ
import React, { useState, useEffect } from 'react';
function MyComponent() {
const [hydratedComponents, setHydratedComponents] = useState([]);
const componentsToHydrate = [
'Header',
'MainContent',
'Footer',
];
useEffect(() => {
const hydrateNextComponent = () => {
if (hydratedComponents.length < componentsToHydrate.length) {
const nextComponent = componentsToHydrate[hydratedComponents.length];
// Simulate hydration delay
setTimeout(() => {
setHydratedComponents([...hydratedComponents, nextComponent]);
}, 500);
}
};
hydrateNextComponent();
}, [hydratedComponents]);
return (
{hydratedComponents.includes('Header') ? : Loading Header...
}
{hydratedComponents.includes('MainContent') ? : Loading MainContent...
}
{hydratedComponents.includes('Footer') ? : Loading Footer...
}
);
}
export default MyComponent;
ãã®äŸã§ã¯ãã³ã³ããŒãã³ãã¯componentsToHydrateé
åã§å®çŸ©ãããç¹å®ã®é åºã§ãã€ãã¬ãŒã·ã§ã³ãããŸããããã«ãããããããŒãã¡ã€ã³ã³ã³ãã³ããªã©ã®éèŠãªã³ã³ããŒãã³ãã®ãã€ãã¬ãŒã·ã§ã³ããããã¿ãŒãªã©ã®éèŠåºŠã®äœãã³ã³ããŒãã³ãã®åã«åªå
ãããããšãã§ããŸãã
ã°ããŒãã«ãªèŠç¹ïŒ äžçäžã®ãŠãŒã¶ãŒãã¿ãŒã²ããã«ããeã³ããŒã¹ãµã€ããæ³åããŠã¿ãŠãã ããããŠãŒã¶ãŒã®å°åã«é¢é£ããååã衚瀺ããååã«ã¿ãã°ã³ã³ããŒãã³ãã¯ãå°çäœçœ®æ å ±ããŒã¿ã«åºã¥ããŠãã€ãã¬ãŒã·ã§ã³ãåªå ããããããããŸãããããã«ããããŠãŒã¶ãŒã¬ãã¥ãŒããœãŒã·ã£ã«ã¡ãã£ã¢ãã£ãŒããªã©ãããŒãžã®ä»ã®éšåãåŸã§ãã€ãã¬ãŒã·ã§ã³ããããšããŠãããŠãŒã¶ãŒã¯é¢é£ååãããã«èŠãããšãã§ããŸãã
課é¡ãšèæ ®äºé
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã¯å€§ããªå©ç¹ãæäŸããŸããããã®å®è£ ã«äŒŽã課é¡ãšèæ ®äºé ãèªèããããšãéèŠã§ãïŒ
- è€éãïŒ ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãå®è£ ãããšãç¹ã«å€§èŠæš¡ã§è€éãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã³ãŒãããŒã¹ãè€éã«ãªãå¯èœæ§ããããŸãã
- ãã¹ãïŒ ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãæå¹ã«ããç¶æ ã§ã¢ããªã±ãŒã·ã§ã³ãæ£ããåäœããããšã確èªããã«ã¯ã培åºçãªãã¹ããäžå¯æ¬ ã§ããæœåšçãªåé¡ãç¹å®ããããã«ãããŸããŸãªã·ããªãªããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ããã¹ãããå¿ èŠããããŸãã
- ãããã°ïŒ ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã«é¢é£ããåé¡ã®ãããã°ã¯ãã³ã³ããŒãã³ãããã€ãã¬ãŒã·ã§ã³ãããé åºãçžäºäœçšãçè§£ããå¿ èŠããããããå°é£ãªå ŽåããããŸãã
- ãã¬ãŒããªãïŒ ããã©ãŒãã³ã¹ãšè€éãã®éã«ã¯åžžã«ãã¬ãŒããªããååšããŸããã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®å©ç¹ãšã远å ãããè€éããã¡ã³ããã³ã¹ã®ãªãŒããŒããããæ éã«è©äŸ¡ããå¿ èŠããããŸãã
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®ãã¹ããã©ã¯ãã£ã¹
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã广çã«å®è£ ããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ããïŒ
- éèŠãªã³ã³ããŒãã³ããç¹å®ããïŒ ãŸããåæã®ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã«æãéèŠãªã³ã³ããŒãã³ããç¹å®ãããã®ãã€ãã¬ãŒã·ã§ã³ãåªå ããŸãã
- ããã©ãŒãã³ã¹ã枬å®ããïŒ ããã©ãŒãã³ã¹ç£èŠããŒã«ã䜿çšããŠãã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«äžãã圱é¿ã枬å®ããŸããããã«ããããã€ãã¬ãŒã·ã§ã³ããã»ã¹ãããã«æé©åã§ããé åãç¹å®ã§ããŸãã
- 培åºçã«ãã¹ãããïŒ ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãæå¹ã«ããç¶æ ã§ã¢ããªã±ãŒã·ã§ã³ã培åºçã«ãã¹ãããããŸããŸãªã·ããªãªãããã€ã¹ã§æ£ããåäœããããšã確èªããŸãã
- ã¢ãããŒããææžåããïŒ ä»ã®éçºè ãçè§£ããä¿å®ããããããããã«ãã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®æŠç¥ãšå®è£ ã®è©³çŽ°ãææžåããŸãã
- ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãïŒ JavaScriptãç¡å¹ã«ãªã£ãŠããå Žåãèªã¿èŸŒã¿ã«å€±æããå Žåã§ããã¢ããªã±ãŒã·ã§ã³ãé©åã«æ©èœããããã«ããŸããããã¯ãæ¥ç¶ãé ããŠãŒã¶ãŒãå€ãããã€ã¹ã®ãŠãŒã¶ãŒã«ãšã£ãŠç¹ã«éèŠã§ãã
ããŒã«ãšã©ã€ãã©ãª
Reactã¢ããªã±ãŒã·ã§ã³ã«ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãå®è£ ããã®ã«åœ¹ç«ã€ããã€ãã®ããŒã«ãšã©ã€ãã©ãªããããŸãïŒ
- React.lazy ãš SuspenseïŒ é å»¶èªã¿èŸŒã¿ãšãã©ãŒã«ããã¯UIã衚瀺ããããã®Reactçµã¿èŸŒã¿æ©èœã
- Intersection Observer APIïŒ èŠçŽ ããã¥ãŒããŒãã«åºå ¥ãããã¿ã€ãã³ã°ãæ€åºããããã®ãã©ãŠã¶APIã
- ãµãŒãããŒãã£ã©ã€ãã©ãªïŒ
react-intersection-observerã®ãããªã©ã€ãã©ãªã¯ãIntersection Observer APIã®äœ¿çšããã»ã¹ãç°¡çŽ åã§ããŸãã - ããã©ãŒãã³ã¹ç£èŠããŒã«ïŒ Google LighthouseãWebPageTestãChrome DevToolsãªã©ã®ããŒã«ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã枬å®ããæ¹åã®äœå°ãããé åãç¹å®ããŸãã
çµè«
Reactã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã¯ãç¹ã«ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒã䜿çšããReactã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããããã®åŒ·åãªææ³ã§ããã³ã³ããŒãã³ãã®ãã€ãã¬ãŒã·ã§ã³ãæŠç¥çã«åªå é äœä»ãããããšã§ãåæèªã¿èŸŒã¿æéãå€§å¹ ã«æ¹åããäœæããã©ãŒãã³ã¹ãåäžããããªãœãŒã¹å©çšãæé©åã§ããŸããã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®å®è£ ã¯ã³ãŒãããŒã¹ãè€éã«ããå¯èœæ§ããããŸããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšããã©ãŒãã³ã¹ã®é¢ã§æäŸãããå©ç¹ã¯ãå€ãã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäŸ¡å€ã®ããæè³ã§ãã課é¡ãæ éã«æ€èšãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã广çã«æŽ»çšããäžçäžã®ãŠãŒã¶ãŒã«ããéããããå¿çæ§ã®é«ãWebã¢ããªã±ãŒã·ã§ã³ãæäŸã§ããŸãã
Webéçºãé²åãç¶ããã«ã€ããŠãã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãåæ§ã®ããã©ãŒãã³ã¹æé©åæè¡ã¯ãåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããã°ããŒãã«ãªããžã¿ã«ç°å¢ã§ç«¶äºåãç¶æããããã«ãŸããŸãéèŠã«ãªããŸãããããã®æè¡ãåãå ¥ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããæ¹æ³ãç¶ç¶çã«æš¡çŽ¢ããããšã¯ã仿¥ã®ããŒã¹ã®éãWebç°å¢ã§æåããããã«äžå¯æ¬ ã§ãã