Reactã®ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãšåªå 床ããŒã¹ã®èªã¿èŸŒã¿ã掻çšããæ§ã ãªããã€ã¹ããããã¯ãŒã¯ç°å¢ã§ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšãŠãŒã¶ãŒäœéšãå€§å¹ ã«åäžãããæ¹æ³ãåŠã³ãŸããå®è·µçãªäŸãšã°ããŒãã«ãªãã¹ããã©ã¯ãã£ã¹ãæ¢ããŸãã
Reactã®ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ïŒåªå 床ããŒã¹ã®èªã¿èŸŒã¿ã«ãããŠã§ãããã©ãŒãã³ã¹ã®æé©å
é²åãç¶ãããŠã§ãéçºã®äžçã«ãããŠãã·ãŒã ã¬ã¹ã§ããã©ãŒãã³ã¹ã®é«ããŠãŒã¶ãŒäœéšãæäŸããããšã¯æãéèŠã§ãããŠã§ãã¢ããªã±ãŒã·ã§ã³ããŸããŸãè€éã«ãªãã«ã€ããŠãåæèªã¿èŸŒã¿æéãšå šäœçãªå¿çæ§ãæãªãããå¯èœæ§ããããŸãããããã®ããã©ãŒãã³ã¹ã®ããã«ããã¯ã軜æžããããã®åŒ·åãªãã¯ããã¯ã®äžã€ããç¹ã«Reactã¢ããªã±ãŒã·ã§ã³ã«ãããŠãã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ïŒSelective HydrationïŒãšåªå 床ããŒã¹ã®èªã¿èŸŒã¿ïŒPriority-Based LoadingïŒãçµã¿åãããããšã§ãããã®ããã°èšäºã§ã¯ããããã®æŠå¿µã®è€éããæãäžããReactã¢ããªã±ãŒã·ã§ã³ãæé©åããããã®å®è·µçãªç¥èŠãšã°ããŒãã«ãªãã¹ããã©ã¯ãã£ã¹ãæäŸããŸãã
Reactã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹èª²é¡ãçè§£ãã
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã®äººæ°ã®JavaScriptã©ã€ãã©ãªã§ããReactã¯ãå€ãã®å ŽåããµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒãŸãã¯ã¯ã©ã€ã¢ã³ããµã€ãã¬ã³ããªã³ã°ïŒCSRïŒã«äŸåããŠããŸããããããã®ã¢ãããŒãã«ã¯å©ç¹ããããŸãããç¬èªã®ããã©ãŒãã³ã¹èª²é¡ãæ±ããŠããŸããäžè¬çãªåé¡ã®ããã€ããæ€èšŒããŠã¿ãŸãããïŒ
- 巚倧ãªåæJavaScriptãã³ãã«ïŒ Reactã¢ããªã±ãŒã·ã§ã³ã¯ãç¹ã«ãµãŒãããŒãã£ã©ã€ãã©ãªãè€éãªã³ã³ããŒãã³ããçµã¿èŸŒãå Žåã巚倧ãªJavaScriptãã³ãã«ãçæããå¯èœæ§ããããŸããããã«ãããç¹ã«ã€ã³ã¿ãŒãããæ¥ç¶ãé ããŠãŒã¶ãŒãã¢ãã€ã«ããã€ã¹ã§ã¯ãããŠã³ããŒãæéãå¢å ããå¯èœæ§ããããŸãã
- ãã€ãã¬ãŒã·ã§ã³ã®é å»¶ïŒ SSRã¢ããªã±ãŒã·ã§ã³ã§ã¯ããµãŒããŒãåæHTMLãçæããŸãããã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¿ã©ã¯ãã£ãã«ããããã«ã¯ãJavaScriptãã³ãã«ãã¯ã©ã€ã¢ã³ããµã€ãã§ããŠã³ããŒãããŠå®è¡ããïŒãã€ãã¬ãŒã·ã§ã³ïŒå¿ èŠããããŸãããã®ãã€ãã¬ãŒã·ã§ã³ããã»ã¹ã¯èšç®ã³ã¹ããé«ãããŠãŒã¶ãŒãããŒãžãšå¯Ÿè©±ã§ããããã«ãªããŸã§ã«é å»¶ãåŒãèµ·ããå¯èœæ§ããããŸãã
- ã¬ã³ããªã³ã°ã®ãããã¯ïŒ JavaScriptã®å®è¡ã¯ã¡ã€ã³ã¹ã¬ããããããã¯ããããšãå€ãããã©ãŠã¶ãã³ã³ãã³ããã¬ã³ããªã³ã°ããããŠãŒã¶ãŒå ¥åã«å¿çãããããã®ã劚ããäœæçãªå¿çæ§ã®æ¬ åŠã«ã€ãªãããŸãã
- éå¹çãªãªãœãŒã¹èªã¿èŸŒã¿ïŒ æ éãªæé©åããªããã°ãããã«ã¯å¿ èŠãªããªãœãŒã¹ã§ãã£ãŠãããã¹ãŠã®JavaScriptãCSSãç»åãªãœãŒã¹ãæåã«èªã¿èŸŒãŸããŠããŸãå¯èœæ§ããããŸããããã¯åæèªã¿èŸŒã¿æéã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã
ãããã®èª²é¡ã«å¯ŸåŠããããšã¯ãã¹ã ãŒãºãªãŠãŒã¶ãŒäœéšãæäŸããFirst Contentful Paint (FCP)ãLargest Contentful Paint (LCP)ãTime to Interactive (TTI) ãšãã£ãäž»èŠãªããã©ãŒãã³ã¹ææšãæ¹åããããã«äžå¯æ¬ ã§ãã
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãšã¯ïŒ
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã¯ãéšåçãã€ãã¬ãŒã·ã§ã³ãŸãã¯ããã°ã¬ãã·ããã€ãã¬ãŒã·ã§ã³ãšããŠãç¥ãããåæèªã¿èŸŒã¿æã«Reactã¢ããªã±ãŒã·ã§ã³ã®éèŠãªéšåã®ã¿ããã€ãã¬ãŒã·ã§ã³ã§ããããã«ãããã¯ããã¯ã§ããã¢ããªã±ãŒã·ã§ã³å šäœãäžåºŠã«ãã€ãã¬ãŒã·ã§ã³ããã®ã§ã¯ãªããã³ã³ããŒãã³ãã®åªå 床ãšå¯èŠæ§ã«åºã¥ããŠãã€ãã¬ãŒã·ã§ã³ããŸãããã®ã¢ãããŒãã«ãããåæèªã¿èŸŒã¿æéãåçã«ççž®ããã¢ããªã±ãŒã·ã§ã³ã®å šäœçãªå¿çæ§ãåäžãããããšãã§ããŸãã
ãã®ä»çµã¿ã¯æ¬¡ã®ãšããã§ãïŒ
- åªå ã³ã³ããŒãã³ãã®ç¹å®ïŒ åæãŠãŒã¶ãŒäœéšã«ãšã£ãŠæãéèŠãªã³ã³ããŒãã³ãïŒäŸïŒãã¡ãŒã¹ããã¥ãŒã®ã³ã³ãã³ããéèŠãªããã²ãŒã·ã§ã³èŠçŽ ãéèŠãªã€ã³ã¿ã©ã¯ãã£ãèŠçŽ ïŒã決å®ããŸãã
- éèŠã§ãªãã³ã³ããŒãã³ãã®é å»¶èªã¿èŸŒã¿ïŒ éèŠã§ãªãã³ã³ããŒãã³ãã®ãã€ãã¬ãŒã·ã§ã³ã¯ãç»é¢ã«è¡šç€ºãããããã«ãªã£ããšããåæããŒãžèªã¿èŸŒã¿åŸãªã©ãåŸã§å®è¡ããããã«é å»¶ãããŸãã
- ãã€ãã¬ãŒã·ã§ã³æŠç¥ã®äœ¿çšïŒ Reactã®`Suspense`ã`lazy`æ©èœããŸãã¯ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³çšã«èšèšããããµãŒãããŒãã£ã©ã€ãã©ãªãªã©ã䜿çšããŠãã³ã³ããŒãã³ãããã€ãã¬ãŒã·ã§ã³ããæŠç¥ãå®è£ ããŸãã
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã®éèŠã§ãªãéšåã®ãã€ãã¬ãŒã·ã§ã³ã广çã«å»¶æãããã©ãŠã¶ãéèŠãªã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ãšã€ã³ã¿ã©ã¯ãã£ãåã«éäžã§ããããã«ããŸããããã«ãããç¹ã«ãªãœãŒã¹ãéãããããã€ã¹ã«ãããŠãäœæããã©ãŒãã³ã¹ãåäžãããŠãŒã¶ãŒäœéšãæ¹åãããŸãã
åªå 床ããŒã¹ã®èªã¿èŸŒã¿ïŒã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®è£å®æè¡
åªå 床ããŒã¹ã®èªã¿èŸŒã¿ã¯ãã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãšå¯æ¥ã«é£æºããè£å®çãªãã¯ããã¯ã§ããããã¯ãäœæããã©ãŒãã³ã¹ãšå®éã®ããã©ãŒãã³ã¹ãæé©åããé åºã§ãªãœãŒã¹ïŒJavaScriptãCSSãç»åïŒãèªã¿èŸŒãããšã«çŠç¹ãåœãŠãŠããŸããäžå¿çãªã¢ã€ãã¢ã¯ããã¡ãŒã¹ããã¥ãŒã®ã³ã³ãã³ããã¬ã³ããªã³ã°ããããã«å¿ èŠãªéèŠãªCSSãJavaScriptãªã©ãåæãŠãŒã¶ãŒäœéšã«äžå¯æ¬ ãªãªãœãŒã¹ã®èªã¿èŸŒã¿ãåªå ããããšã§ããéèŠåºŠã®äœããªãœãŒã¹ã¯ãåªå 床ãäœãããŠèªã¿èŸŒãããåŸã§èªã¿èŸŒãããã«é å»¶ãããŸãã
åªå 床ããŒã¹ã®èªã¿èŸŒã¿ã®äž»èŠãªåŽé¢ã¯ä»¥äžã®ãšããã§ãïŒ
- ãªãœãŒã¹ã®åªå é äœä»ãïŒ éèŠåºŠã«åºã¥ããŠããŸããŸãªãªãœãŒã¹ã«åªå é äœãå²ãåœãŠãŸããããšãã°ããã¡ãŒã¹ããã¥ãŒã®ã³ã³ãã³ãã®ã¬ã³ããªã³ã°ã«å¿ èŠãªCSSã¯é«ãåªå 床ãæã€ã¹ãã§ãã
- ç»åãšåç»ã®é å»¶èªã¿èŸŒã¿ïŒ é å»¶èªã¿èŸŒã¿æè¡ã䜿çšããŠãç»åãåç»ããã¥ãŒããŒãå ã«å ¥ããŸã§èªã¿èŸŒã¿ãé å»¶ãããŸãã
- ã³ãŒãåå²ïŒ JavaScriptãã³ãã«ãããå°ããªãã£ã³ã¯ã«åå²ããåã«ãŒããŸãã¯ã³ã³ããŒãã³ãã«å¿ èŠãªã³ãŒãã®ã¿ãèªã¿èŸŒã¿ãŸãã
- éèŠãªãœãŒã¹ã®ããªããŒãïŒ ``ã䜿çšããŠãã¬ã³ããªã³ã°ããã»ã¹ã®æ©ã段éã§å¿ èŠãšãªããã©ã³ããJavaScriptãã¡ã€ã«ãªã©ã®éèŠãªãªãœãŒã¹ãäºåã«ååŸããŸãã
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãšåªå 床ããŒã¹ã®èªã¿èŸŒã¿ãçµã¿åãããããšã§ãé ãããã€ã¹ããããã¯ãŒã¯äžã§ãé«éã§é åçãªãŠãŒã¶ãŒäœéšãæäŸãããŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãããã®ã¢ãããŒãã¯ãã€ã³ã¿ãŒãããé床ãããã€ã¹ã®æ§èœãç°ãªãå°åã§ç¹ã«æå¹ã§ãã
Reactã§ã®ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãšåªå 床ããŒã¹ã®èªã¿èŸŒã¿ã®å®è£
Reactã¢ããªã±ãŒã·ã§ã³ã§ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãšåªå 床ããŒã¹ã®èªã¿èŸŒã¿ãå®è£ ããããã€ãã®å®è·µçãªæ¹æ³ãæ¢ã£ãŠã¿ãŸããããå©çšã§ããäž»èŠãªãã¯ããã¯ãšã©ã€ãã©ãªã«ã€ããŠèª¬æããŸãã
1. React.lazyãšSuspense
Reactã«çµã¿èŸŒãŸããŠãã`lazy`ãš`Suspense`ã³ã³ããŒãã³ãã¯ãã³ãŒãåå²ãšé å»¶èªã¿èŸŒã¿ãå®è£ ããç°¡åãªæ¹æ³ãæäŸããŸããããã¯ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®åºæ¬çãªæ§æèŠçŽ ã§ãã`lazy`颿°ã䜿çšãããšã³ã³ããŒãã³ããé å»¶èªã¿èŸŒã¿ã§ãã`Suspense`ã¯ã³ã³ããŒãã³ããèªã¿èŸŒãŸããŠããéã«ãã©ãŒã«ããã¯UIïŒäŸïŒããŒãã£ã³ã°ã¹ãããŒïŒãæäŸããŸããæ¬¡ã®äŸãèããŠã¿ãŸãããïŒ
import React, { Suspense, lazy } from 'react';
const MyLazyComponent = lazy(() => import('./MyLazyComponent'));
function App() {
return (
<div>
<!-- Critical content -->
<Suspense fallback={<div>Loading...</div>}>
<MyLazyComponent />
</Suspense>
</div>
);
}
ãã®äŸã§ã¯ã`MyLazyComponent`ã¯å¿ èŠãªãšãã«ã®ã¿èªã¿èŸŒãŸããååŸäžã¯ãLoading...ããšããã¡ãã»ãŒãžã衚瀺ãããŸããããã¯ãé å»¶èªã¿èŸŒã¿ãã€ãŸãã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãããã³ã³ããŒãã³ããå®è£ ããããã®è¯ãåºçºç¹ã§ããããã¯ãåæã¬ã³ããªã³ã°æã«ããã«ã¯è¡šç€ºãããªãã³ã³ããŒãã³ãã«å¯ŸããŠç¹ã«å¹æçã§ãã
2. é å»¶ãã€ãã¬ãŒã·ã§ã³ã®ããã®Intersection Observer API
Intersection Observer APIã¯ãèŠçŽ ããã¥ãŒããŒãã«å ¥ã£ãããšãæ€åºããæ¹æ³ãæäŸããŸãããã®APIã䜿çšããŠãã³ã³ããŒãã³ããç»é¢ã«è¡šç€ºããããšãã«ãã®ãã€ãã¬ãŒã·ã§ã³ãããªã¬ãŒããããšãã§ããŸããããã«ãããå¿ èŠãªãšãã«ã®ã¿ã³ã³ããŒãã³ãããã€ãã¬ãŒã·ã§ã³ããããšã§ãã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãããã«æŽç·Žãããããšãã§ããŸãã
import React, { useState, useEffect } from 'react';
function HydratableComponent() {
const [isHydrated, setIsHydrated] = useState(false);
const [ref, setRef] = useState(null);
useEffect(() => {
const observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
setIsHydrated(true);
observer.unobserve(entry.target);
}
});
},
{ threshold: 0 }
);
if (ref) {
observer.observe(ref);
}
return () => {
if (ref) {
observer.unobserve(ref);
}
};
}, [ref]);
if (!isHydrated) {
return <div ref={setRef}>Loading Hydratable Component...</div>;
}
return (
<div ref={setRef}>
<!-- Hydrated content -->
<p>This component is now hydrated!</p>
</div>
);
}
ãã®äŸã§ã¯ã`HydratableComponent`ã¯Intersection Observerã䜿çšããŠããã¥ãŒããŒãã«è¡šç€ºãããŠãããã©ããã倿ããŸããã³ã³ããŒãã³ãããã¥ãŒããŒããšäº€å·®ãããšãã«ã®ã¿`isHydrated`ã¹ããŒãã`true`ã«èšå®ããããã€ãã¬ãŒã·ã§ã³ãããã³ã³ãã³ãã®ã¬ã³ããªã³ã°ãããªã¬ãŒãããŸããããã¯ãç¹å®ã®ã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ããã®å¯èŠæ§ã«åºã¥ããŠæ¡ä»¶ä»ãã§è¡ã匷åãªæ¹æ³ãæäŸããäœæããã©ãŒãã³ã¹ãåäžãããäžã§å€§ããªå©ç¹ãšãªããŸãã
3. ãµãŒãããŒãã£ã©ã€ãã©ãª
ããã€ãã®ãµãŒãããŒãã£ã©ã€ãã©ãªã¯ãã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãšåªå 床ããŒã¹ã®èªã¿èŸŒã¿ã®å®è£ ãç°¡çŽ åã§ããŸãã人æ°ã®ããéžæè¢ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- react-lazy-hydration: ãã®ã©ã€ãã©ãªã¯ããã¥ãŒããŒãã®å¯èŠæ§ããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãªã©ãããŸããŸãªããªã¬ãŒã«åºã¥ããŠã³ã³ããŒãã³ããã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ããããã®å®£èšçãªæ¹æ³ãæäŸããŸãã
- @loadable/component: ãã®ã©ã€ãã©ãªã¯ãç¹ã«ãã€ãã¬ãŒã·ã§ã³ã«çŠç¹ãåœãŠãŠããããã§ã¯ãããŸããããå ç¢ãªã³ãŒãåå²ãšé å»¶èªã¿èŸŒã¿æ©èœãæäŸããã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã®åºç€ãæ§ç¯ããããã«äœ¿çšã§ããŸãã
ãããã®ã©ã€ãã©ãªã¯ãå®è£ ãç°¡çŽ åããè€éãã管çããæœè±¡åãæäŸããããšãå€ãããããã®ãã¯ããã¯ãã¢ããªã±ãŒã·ã§ã³ã§ãã广çã«é©çšããã®ã«åœ¹ç«ã¡ãŸãã
4. åªå 床ããŒã¹ã®ãªãœãŒã¹èªã¿èŸŒã¿ã®äŸ
åªå 床ããŒã¹ã®ãªãœãŒã¹èªã¿èŸŒã¿ãå®è£ ããããšã¯ãéèŠãªèŠçŽ ã®èªã¿èŸŒã¿ãæé©åããããã«äžå¯æ¬ ã§ãã以äžã«ããã€ãã®ãã¯ããã¯ã瀺ããŸãïŒ
- CSSã®åªå é äœä»ãïŒ éèŠãªCSSã<head>å ã«ã€ã³ã©ã€ã³åããããã¡ã€ã³ã®ã¹ã¿ã€ã«ã·ãŒããèªã¿èŸŒãåã«éèŠãªCSSã«å¯ŸããŠ``ã䜿çšããŸãã
- JavaScriptã®åªå é äœä»ãïŒ <script>ã¿ã°ã§`defer`ãŸãã¯`async`屿§ã䜿çšããŠãã¹ã¯ãªãããèªã¿èŸŒãŸãå®è¡ãããé åºãå¶åŸ¡ããŸãã`defer`ã¯HTMLãè§£æãããåŸã«ã¹ã¯ãªãããå®è¡ãããããšãä¿èšŒãã`async`ã¯ã¹ã¯ãªãããéåæã«èªã¿èŸŒã¿ãŸããäŸåé¢ä¿ã«åºã¥ããŠåã¹ã¯ãªããã«é©åãªå±æ§ãæ éã«æ€èšããŠãã ããã
- ç»åã®é å»¶èªã¿èŸŒã¿ïŒ <img>ã¿ã°ã«`loading="lazy"`屿§ã䜿çšããŠãç»åããã¥ãŒããŒãã«è¿ã¥ããŸã§ç»åã®èªã¿èŸŒã¿ãé å»¶ãããŸããã»ãšãã©ã®ã¢ãã³ãã©ãŠã¶ã¯ããããã€ãã£ãã§ãµããŒãããŠããŸãã
- ãã©ã³ãã®æé©åïŒ ``ã§ãã©ã³ããããªããŒãããåæã¬ã³ããªã³ã°ã«å¿ èŠãªæåã®ã¿ãå«ãããã«ãã©ã³ãããµãã»ããåããããšãæ€èšããŠãã ããã
ãªãœãŒã¹ã®èªã¿èŸŒã¿ãšå®è¡ã®é åºãæ éã«ç®¡çããããšã§ãéèŠãªã³ã³ããŒãã³ããè¿ éã«ã¬ã³ããªã³ã°ãããããè¯ããŠãŒã¶ãŒäœéšãæäŸã§ããŸãã
ãããã®æè¡ãã°ããŒãã«ã«é©çšããããã®ãã¹ããã©ã¯ãã£ã¹
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãšåªå 床ããŒã¹ã®èªã¿èŸŒã¿ã广çã«å®è£ ããã«ã¯ãæ éãªèšç»ãšå®è¡ãå¿ èŠã§ãã以äžã«ããã®åãçµã¿ãå°ãããã®ãã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãïŒ
- ããã©ãŒãã³ã¹ã®ç£æ»ãšç£èŠïŒ Google PageSpeed InsightsãWebPageTestãLighthouseãªã©ã®ããŒã«ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã宿çã«ç£æ»ããŸããFCPãLCPãTTIãªã©ã®äž»èŠæ¥çžŸè©äŸ¡ææšïŒKPIïŒãç£èŠããŠãæé©åã®åœ±é¿ã远跡ããŸãã
- ãã¡ãŒã¹ããã¥ãŒã®ã³ã³ãã³ããåªå ããïŒ åæãŠãŒã¶ãŒäœéšã«äžå¯æ¬ ãªã³ã³ããŒãã³ããç¹å®ããåªå é äœãä»ããŸãããã¡ãŒã¹ããã¥ãŒã®ã³ã³ãã³ããã§ããã ãæ©ãèªã¿èŸŒãŸããããã«ããŸããããã¯ãŠãŒã¶ãŒã®æ³šæãåŒããè¯ã第äžå°è±¡ãäžããããã«éèŠã§ãã
- ç»åã®æé©åïŒ ç»åãå§çž®ããé©åãªç»å圢åŒïŒäŸïŒWebPïŒã䜿çšããããã«ã¯è¡šç€ºãããªãç»åã«å¯ŸããŠã¯é å»¶èªã¿èŸŒã¿ãå®è£ ããŸããããã«ããã転éãããããŒã¿éãåæžãããèªã¿èŸŒã¿æéãæ¹åãããŸãã
- ã³ãŒãåå²ãšãã³ãã«ãµã€ãºã®åæžïŒ JavaScriptãã³ãã«ãããå°ããªãã£ã³ã¯ã«åå²ããéèŠã§ãªãã³ã³ããŒãã³ããé å»¶èªã¿èŸŒã¿ããŠãåæããŠã³ããŒããµã€ãºãåæžããŸããäŸåé¢ä¿ã宿çã«èŠçŽããæé©åããŠãã³ãã«ãµã€ãºãæå°éã«æããŸãã
- ãããã¯ãŒã¯ç¶æ³ãèæ ®ããïŒ ããŸããŸãªãããã¯ãŒã¯ç¶æ³ïŒäŸïŒ3Gã4GãWi-FiïŒã§ã¢ããªã±ãŒã·ã§ã³ããã¹ãããããŸããŸãªããã€ã¹ãã€ã³ã¿ãŒãããæ¥ç¶ã§äžè²«ãããŠãŒã¶ãŒäœéšãä¿èšŒããŸããããé«éãªåæèªã¿èŸŒã¿ã®ããã«ããµãŒããŒãµã€ãã¬ã³ããªã³ã°ãéçãµã€ãçæãªã©ã®æè¡ã®äœ¿çšãæ€èšããŸãã
- 宿©ã§ã®ãã¹ãïŒ ãšãã¥ã¬ãŒã¿ãã·ãã¥ã¬ãŒã¿ã圹ç«ã¡ãŸãããããŸããŸãªç»é¢ãµã€ãºããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããããã¯ãŒã¯ç¶æ³ãæã€å®æ©ã§ãã¹ãããããšã¯ããã¹ãŠã®ãŠãŒã¶ãŒã«äžè²«ãããŠãŒã¶ãŒäœéšãä¿èšŒããããã«äžå¯æ¬ ã§ããããã¯ã倿§ãªããŒããŠã§ã¢ã䜿çšããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠç¹ã«éèŠã§ãã
- ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒãšéçãµã€ãçæïŒSSGïŒïŒ å¯èœã§ããã°ããµãŒããŒãµã€ãã§åæHTMLãäºåã¬ã³ããªã³ã°ããããã«SSRãŸãã¯SSGã®äœ¿çšãæ€èšããŸããããã«ãããç¹ã«ã³ã³ãã³ãã®å€ãã¢ããªã±ãŒã·ã§ã³ã«ãããŠãåæèªã¿èŸŒã¿æéãå€§å¹ ã«æ¹åã§ããŸãã
- 宿çãªæŽæ°ãšã¡ã³ããã³ã¹ïŒ äŸåé¢ä¿ãææ°ã®ç¶æ ã«ä¿ã¡ãæé©åæŠç¥ã宿çã«èŠçŽããŸãããŠã§ãããã©ãŒãã³ã¹ã¯ç¶ç¶çãªããã»ã¹ã§ãããç¶ç¶çãªæ¹åãäžå¯æ¬ ã§ããã©ã€ãã©ãªããã¹ããã©ã¯ãã£ã¹ã¯æéãšãšãã«é²åããŸãã
- åœéåïŒi18nïŒã«é¢ããèæ ®äºé ïŒ ã¢ããªã±ãŒã·ã§ã³ãè€æ°ã®èšèªããµããŒãããå Žåããã€ãã¬ãŒã·ã§ã³ãšèªã¿èŸŒã¿æŠç¥ãããŒã«ã©ã€ãºãããã³ã³ãã³ããšç¿»èš³ã广çã«åŠçã§ããããã«èšèšãããŠããããšã確èªããŸããå¿ èŠã«å¿ããŠãèšèªåºæã®ãªãœãŒã¹ãé å»¶èªã¿èŸŒã¿ããŸãã
ã°ããŒãã«ãªåœ±é¿ãšäºäŸ
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãšåªå 床ããŒã¹ã®èªã¿èŸŒã¿ã®å©ç¹ã¯ãæ¹åãããããã©ãŒãã³ã¹ææšã«ãšã©ãŸããŸããããããã¯ä»¥äžã«å€§ããªåœ±é¿ãäžããŸãïŒ
- ãŠãŒã¶ãŒäœéšïŒ èªã¿èŸŒã¿æéã®ççž®ãšå¿çæ§ã®åäžã¯ãããé åçã§æºè¶³åºŠã®é«ããŠãŒã¶ãŒäœéšã«ã€ãªãããŸããããã¯ãã€ã³ã¿ãŒãããæ¥ç¶ãé ãå°åã®ãŠãŒã¶ãŒã«ãšã£ãŠç¹ã«éèŠã§ãã
- SEOïŒ èªã¿èŸŒã¿æéãéããšããŠã§ããµã€ãã®æ€çŽ¢ãšã³ãžã³ã©ã³ãã³ã°ãåäžããå¯èœæ§ããããŸããæ€çŽ¢ãšã³ãžã³ã¯ãè¯ããŠãŒã¶ãŒäœéšãæäŸãããŠã§ããµã€ããåªå ããŸãã
- ã¢ã¯ã»ã·ããªãã£ïŒ ãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãæé©åããããšã§ãã¹ã¯ãªãŒã³ãªãŒããŒã䜿çšãããŠãŒã¶ãŒãªã©ãé害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠããã¢ã¯ã»ã¹ãããããªããŸãã
- ã³ã³ããŒãžã§ã³çïŒ èªã¿èŸŒã¿æéã®ççž®ãšãŠãŒã¶ãŒäœéšã®åäžã¯ãç¹ã«eã³ããŒã¹ãµã€ãã«ãããŠãããé«ãã³ã³ããŒãžã§ã³çã«ã€ãªããå¯èœæ§ããããŸãã
ã°ããŒãã«ãªé©çšã®äºäŸïŒ
- Eã³ããŒã¹ïŒ äŸãã°ãã€ã³ãã®eã³ããŒã¹ãµã€ãã¯ãã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ã䜿çšããŠååç»åãšãã«ãŒãã«è¿œå ããã¿ã³ã®èªã¿èŸŒã¿ãåªå ããååã¬ãã¥ãŒã®ãã€ãã¬ãŒã·ã§ã³ãé å»¶ãããããšãã§ããŸãã
- ãã¥ãŒã¹ãµã€ãïŒ ãã©ãžã«ã®ãã¥ãŒã¹ãµã€ãã¯ãåªå 床ããŒã¹ã®èªã¿èŸŒã¿ã䜿çšããŠã垯åå¹ ãéãããã¢ãã€ã«ããã€ã¹ã§ããããèšäºãšèŠåºããè¿ éã«èªã¿èŸŒãŸããããã«ããããšãã§ããŸãã
- æ è¡ãµã€ãïŒ ã°ããŒãã«ãªæ è¡ãµã€ãã¯ãåæã³ã³ãã³ãã衚瀺ãããåŸã§ã€ã³ã¿ã©ã¯ãã£ããªå°å³ãããŒãã£ã«ãã¢ãŒãèªã¿èŸŒãããã«ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãæ¡çšã§ããŸãã
ãããã®ãã¯ããã¯ãæŠç¥çã«å®è£ ããããšã§ãäžçäžã®äŒæ¥ã¯ããŠãŒã¶ãŒäœéšã®åäžããšã³ã²ãŒãžã¡ã³ãã®å¢å ããããŠããè¯ãããžãã¹ææã®ããã«ãŠã§ããµã€ããæé©åã§ããŸãã
çµè«
ã»ã¬ã¯ãã£ããã€ãã¬ãŒã·ã§ã³ãšåªå 床ããŒã¹ã®èªã¿èŸŒã¿ã¯ãReactã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããããã®åŒ·åãªãã¯ããã¯ã§ããã³ã³ããŒãã³ããã€ã³ããªãžã§ã³ãã«ãã€ãã¬ãŒã·ã§ã³ãããªãœãŒã¹ã®èªã¿èŸŒã¿ãåªå ããããšã§ãåæèªã¿èŸŒã¿æéãå šäœçãªå¿çæ§ãããã³ãŠãŒã¶ãŒäœéšãåçã«æ¹åã§ããŸãããããã®ãã¯ããã¯ããã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®ããŒãºãšã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®èŠä»¶ã«çŠç¹ãåœãŠãŠãæŠç¥çã«å®è£ ããããšãå¿ããªãã§ãã ããã
ãã®ããã°èšäºã§æŠèª¬ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãäžçäžã®ãŠãŒã¶ãŒã«ã·ãŒã ã¬ã¹ãªäœéšãæäŸãããããéããããé åçã§ãããã¢ã¯ã»ã¹ããããReactã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸããåžžã«ããã©ãŒãã³ã¹æé©åã®åãçµã¿ãç£èŠã»æ¹åããæä»£ã®å ãè¡ããå¯èœãªéãæé«ã®ãŠãŒã¶ãŒäœéšãæäŸãç¶ããŸãããã