å人ããã°ã®é床æ¹åèš
by reu · 2026/5/15
Next.js 16 å人ããã°ãçéåãã話 â èšäºè©³çްã 3.8s â 73ms ã«çž®ãããŸã§ TL;DR - é
ããŠè©°ãŸã£ãŠããã€ã³ãã人éãåå ç¹å®ããã®ããŸã æ©ãæ°ããã
- Next.js 16 + Vercel + Prisma ã§åãããŠããã®ããã°ïŒèªåèªèº«ïŒã倿®µã§é床æ¹åãã
- äž»ç¯ã¯ ãISR ã宣èšããã®ã«å¹ããŠãªãã£ãã ããš â ã§åŸ©æŽ»
- èšäºè©³çް: 3.8s â 73msïŒã40åïŒ / weather API: 427ms â 49msïŒã9åïŒ ãªã©ã®å¹æ
- Next.js 16 ã§ ã®ã·ã°ããã£ãå€ãã£ãŠãå°å³ãªèœãšã穎ã ç°å¢ - Next.js 16.2.3ïŒTurbopackïŒ
- Vercel ãã¹ãã£ã³ã°
- Prisma + SupabaseïŒDB + Auth + StorageïŒ
- TypeScript / Tailwind CSS ãã£ãããšç·èЧ | | æã¡æ | 广 |
|---|---|---|
| 1 | PostList ã®ã¯ãšãªã ã§ãã£ãã·ã¥ | ãããã§æ¯ãªã¯ãšã¹ã DB ãå©ããªããªã£ã |
| 2 | ã ã§ dedupe | ãªã¯ãšã¹ãå
ã® DB åŸåŸ© 2 å â 1 å |
| 3 | ã ã§æ°žç¶ãã£ãã·ã¥ | ã® HTTP åŸåŸ©ã¹ããã |
| 4 | æçš¿ç³» API ã§ / | ãã£ãã·ã¥ç¡å¹åãæç€ºå |
| 5 | EditButton ã® â åãæ¿ã | ã® 812ms ãæ¶æ»
|
| 6 | å€©æ° fetch ã ã§é
å»¶ | æç»ãããã¯è§£æ¶ïŒè£
食ãªã®ã§åŸã§ååïŒ |
| 7 | 㫠远å | ãæ»ããæŒäžæã® RSC åååŸ 1.9s ãæ¶æ»
|
| 8 | Yusei Magic ã | woff2 preload 37 å â 7 å |
| 9 | ã§å
šèšäº SSG | èšäºè©³çް 3.8s â 73ms |
| 10 | ã Edge Runtime + | 427ms â 49ms | 以äžãç¹ã«åŠã³ã倧ããã£ããã®ãããã¯ã¢ããããŠæžãã --- â ããŒã¿ååŸããã£ãã·ã¥ããïŒ + ïŒ ãããããŒãžã®ãæè¿ã®æ¯èšãã»ã¯ã·ã§ã³ãã¢ã¯ã»ã¹ããšã« Prisma ãå©ããŠããã ã§ 1 æ¥ãã£ãã·ã¥ + tag ã§æç€ºç Žæ£ã§ããæ§æã«ããã æŽæ°æã¯ POST/PUT ã®ãšã³ããã€ã³ãã§ ãåŒãã§æç€ºç Žæ£ããã > â ïž Next.js 16 ãã 㮠第äºåŒæ°ãå¿
é ã«ãªã£ãŠããã 㯠cacheLife ãããã¡ã€ã«åã§ãæ°žç¶ãã£ãã·ã¥çžåœã®æåãããã«æ°ä»ãããã«ããèœã¡ãã
>
> ãŸã ã® ãš ã®æ¬äœã§åã slug ã® ã 2 åå©ããŠããã®ã§ã ã§ dedupe ããã 㯠åäžãªã¯ãšã¹ãå
ã§åãåŒæ°ãªãçµæãåå©çšããä»çµã¿ãISR ãå¹ããŠããã°ãããã DB ã¯è§Šããªããããã£ãã·ã¥åçææã«ã ãå¹ãä¿éºãšããŠå
¥ããã --- â¡ Markdown ã¬ã³ããªã³ã°çµæãæ°žç¶ãã£ãã·ã¥ ã¯å
éšã§ ã䜿ããèšäºå
ç»åã®å®ãµã€ãºããªã¢ãŒããã HTTP ã§ååŸããŠããããããç»åææ°åèµ°ãã®ã§çµæ§éãã ã§ ãããŒã«æ°žç¶ãã£ãã·ã¥åããã ãããŒã«å«ãŸããã®ã§ãèšäºæŽæ°æã¯èªåã§å¥ããŒã«ãªãåèšç®ããããå€ãããŒã®ãã£ãã·ã¥ã¯ Next.js åŽã§æŸçœ®ãããã --- ⢠EditButton ã® 812ms åæž ãã©ãŠã¶ã® DevTools ã§ Network ãèŠãŠããããèšäºããŒãžã«é£ã¶ãã³ã« ãžã® fetch ã 812ms ããã£ãŠãããç¯äººã¯ããã 㯠Supabase ã®èªèšŒãµãŒããŒã«æ¯ååãåãããã®ã§é
ããäžæ¹ 㯠localStorage / Cookie ããæ¢åã»ãã·ã§ã³ãèªãã ãã§ã»ãŒ 0msã ãã®ãã¿ã³ã®çšéã¯ããã°ã€ã³äžãªãç·šéãã¿ã³ã衚瀺ãããã ããå®éã«ç·šéãå®è¡ãã API ã«ãŒãã§ã¯å¥é ã§æ€èšŒãããã®ã§ãUI 衚瀺å€å®ãšããŠã¯ ã§ååã ãããã¯ãŒã¯ã¿ããã ã®ãªã¯ãšã¹ãããšæ¶ããã --- ⣠è£
é£Ÿçš API ã¯æç»åŸã§ããïŒïŒ èæ¯ã®ç©ºã®è²ã倩æ°ã§å€ããè£
食ãããã ã峿 fetch ããŠããããã ããã¯è£
食ãªã®ã§ãã¡ã€ã³æç»åŸã§ååã ã§ãã©ãŠã¶ã®ã¢ã€ãã«æéã«é
å»¶ããã 㯠Safari ã®å€ãããŒãžã§ã³ã§æªå¯Ÿå¿ãªã®ã§ã ã§ãã©ãŒã«ããã¯ããŠããã --- â€ ãæ»ãããã¿ã³ã§ 1.9 ç§ â ã®èœãšã穎 èšäºè©³çްãããæ»ãããæŒããšããããã«æ»ãã®ã«æ¯å 1.9 ç§ããã£ãŠãããDevTools ã§èŠããš ãšãã URL ã« GET ãé£ãã§ããã ãã㯠React Server Components ã® payload ãååŸãã Next.js ã®æåãæ¬æ¥ã¯ Router Cache ããå³åŸ©å
ãã¹ããšãããæ¯ååååŸããŠããã åå 㯠Next.js 16 ã® Router Cache ã®ããã©ã«ãèšå®ã | ããŒãžçš®å¥ | ããã©ã«ãã® staleTimes |
|---|---|
| Static | 5 å |
| Dynamic | 0 ç§ â å³ expire | ãã®ãµã€ãã®ããã㯠AboutMe ã ã䜿ã£ãŠãé¢ä¿ã§ Dynamic æ±ãã«ãªã£ãŠãããRouter Cache ã®ä¿ææéã 0 ç§ã ã£ãã ã§æç€ºçã«æ¡åŒµããã ããã§æ»ããã¿ã³æŒäžæã« Router Cache ããå³åŸ©å
ãããããã«ãªãã ã®åååŸãæ¶ããã --- ⥠ãã©ã³ãã® preload ã 37 åããã£ã ãããã¯ãŒã¯ã¿ãã§ ãèŠããš 37 å ã® preload ãèµ°ã£ãŠããã ã ã§äœ¿ã£ãŠããããæ¥æ¬èªãã©ã³ãã® Google Fonts CSS 㯠ã§å€§éã® segment ã«åå²ãããŠãããNext.js ãããããå
šãŠèªå preload ããŠããã ã«ããããšã§ãrevalidate = 86400curl -I
cache-control: private, no-cache, no-store, max-age=0, must-revalidate
x-vercel-cache: MISS
cf-cache-status: DYNAMIC
MISSage: 0await paramsforce-staticts
// ãã£ãŠããŸã£ã
export const dynamic = "force-static";
export const revalidate = 86400;
[slug]generateStaticParamsforce-staticforce-staticgenerateStaticParamsgenerateStaticParamsforce-staticgenerateStaticParamsts
// app/posts/[slug]/page.tsx
import { getAllPublishedSlugs } from "@/lib/queries"; export const revalidate = 86400; export async function generateStaticParams() {
const slugs = await getAllPublishedSlugs();
return slugs.map((slug) => ({ slug }));
}
ts
// lib/queries.ts
export async function getAllPublishedSlugs(): Promise {
const posts = await prisma.post.findMany({
where: { published: true },
select: { slug: true },
});
return posts.map(({ slug }) => slug);
}
generateStaticParamsdynamicParams = truecurl -I
[1] TTFB=1.071s x-vercel-cache: HIT age: 0
[2] TTFB=0.341s x-vercel-cache: HIT age: 2
[3] TTFB=0.056s x-vercel-cache: HIT age: 3
x-vercel-cache/api/weatheripapi.co/json//api/weather?lat=...&lon=...x-vercel-ip-latitudex-vercel-ip-longitudets
// app/api/weather/route.ts
export const runtime = "edge"; export async function GET(request: NextRequest) {
const headerLat = request.headers.get("x-vercel-ip-latitude");
const headerLon = request.headers.get("x-vercel-ip-longitude");
const lat = parseFloat(headerLat ?? "");
const lon = parseFloat(headerLon ?? ""); // 0.1床ïŒçŽ 11kmïŒã«äžžã㊠CDN ãã£ãã·ã¥ããŒãå
±æãããããã
const finalLat = Number.isFinite(lat) ? Math.round(lat 10) / 10 : 35.6812;
const finalLon = Number.isFinite(lon) ? Math.round(lon 10) / 10 : 139.7671; const res = await fetch(
,
{ next: { revalidate: 600 } }
);
// ... return NextResponse.json(data, {
headers: {
"Cache-Control":
"public, max-age=600, s-maxage=600, stale-while-revalidate=3600",
},
});
}
runtime = "edge"/api/weatheripapi.co
[1] TTFB=1.061s age: 0 (Edge cold start)
[2] TTFB=0.219s age: 0
[3] TTFB=0.049s age: 1 â 49ms!
/api/weatherrevalidatex-vercel-cache: MISSforce-staticgenerateStaticParamsrevalidateTag"max"getSessiongetUserrequestIdleCallbackunstable_cache'use cache'probe-image-size` ã®çµæã DB ã«æ°žç¶åããïŒæçš¿æã®ã¿å®è¡ããèšèšïŒ åèãªã³ã¯ - Next.js: generateStaticParams
- Next.js: staleTimes
- Next.js: revalidateTag
- Vercel: Edge Functions geolocation headers
- Supabase: getSession vs getUser
è²éžã³ãèŠæã ããæ©æ¢°çã«éžã¹ãªãã詊ãããããŒã«ãäœã£ã
by reu · 2026/5/15
è²ã銎æãŸãã Web ããŒã«ãreuniãäœã£ã çµµæããšãè²éžã³ã§è©°ãŸããã¡ã ã£ããããã«ã©ãŒãã¬ãããæ©æ¢°çã«éŠŽæãŸãã Web ããŒã«äœã£ãŠã¿ãããã£ãŠè©± - ðž ãµã€ã: https://reuni.ryu-reu.me
- ðŸ ãœãŒã¹: https://github.com/ryu1-1uyr/reuni reuni ã£ãŠäœ èµ€ã»é»ã»ç·ã¿ããã«è²çžãé¢ããè²ãçµã¿åããããšã圩床ãæåºŠããã©ã€ããŠã±ã³ã«ããŠèŠããã¡ãããªãïŒ ããããã®ã OKLCH è²ç©ºé ã§æ©æ¢°çã«æããŠããŸãšãŸã£ããã¬ããã«æŽããããŒã«ã å
¥åããè²ãããã§ãŒã³ãã£ãŠããã¹ãããã®çµã¿åããã§å å·¥ããŠãBefore / After ã䞊ã¹ãŠç¢ºèªã§ããæãã "reuni"(on) ããåã£ãé èªãããš ReU ãäœã£ãŠããããã®ååã äœ¿ãæ¹ãã£ãã 1. å
¥åãã¬ããã«è²ãå
¥ãã å
¥ãæ¹ã¯ 5 éãïŒ - HEX æå
¥åïŒïŒ
- ãã€ãã£ãã®ã«ã©ãŒããã«ãŒ
- ðš ã¹ãã€ãïŒEyeDropper APIã察å¿ãã©ãŠã¶ã®ã¿ïŒ
- ð² ã©ã³ãã 1ïŒããã£ãœãè²ã1å远å ïŒ
- ð² å
šã©ã³ãã 眮ãæãïŒ5è²ãŸãããšå·®ãæ¿ãïŒ ã©ã³ãã ç³»ã¯é»éè§ïŒ137.5°ïŒã§è²çžãããã㊠L=0.55ã0.80 / C=0.10ã0.16 ã®ã¬ã³ãžã«åããŠããå®å
šã©ã³ãã ã ãšå²ãšæ±ãè²åºãããããããã£ãŠã¬ã³ãžçžãæãã éã«æ¿ã£ãè²ã¯åºã«ããã£ãŠãã匱ç¹ããããã©ãã 2. ãã§ãŒã³ãçµã ã銎æãŸããã§ãŒã³ãã»ã¯ã·ã§ã³ã§ã¹ããããç©ã¿éããŠãããäžã«ãããã¿ã³ãã远å ã§ãããïŒ -
-
- ïŒLïŒC åæïŒ
-
- é çªãæå³ãã£ãŠãäžããé ã«é©çšããããäžŠã¹æ¿ã㯠ââ ãã¿ã³ã§ã 3.ããªããããæãã«ãããã¿ã³ã èªåã§ã¹ãããçµãã®é¢åãªãšãã¯ãããæŒããã³ã« 5 çš®é¡ã®ããªã»ãããããŒããŒã·ã§ã³ããïŒ 1. ããŒãžã¥éŠŽæãŸã: äžå€®å€ L/C ã§ããŒã³çµ±äž + ããŒãžã¥ 15% ãã¬ã³ã
2. ãã¹ãã«å: é«æåºŠã»äœåœ©åºŠããŒã³ + æçœ 4.5% ãã¬ã³ã
3. ã·ãã¯: äœæåºŠã»äœåœ©åºŠããŒã³ + é» 8% ãã¬ã³ã
4. ãããã: äžæåºŠã»é«åœ©åºŠããŒã³
5. ãªããæããããã€: åœ©åºŠãæ¥µç«¯ã«èœãšããŠéã¿ãæ··ããŠæããŒã³å æŒããã³ã«éããã€ãåœãããããã¬ãã£ãæèŠã§åããã
ãã¡ãã¯ãã®ãããããã 4. Before / After ã§ç¢ºèª å
¥åé / æåºŠé ã§ãœãŒãåæ¿ã§ãããæåºŠé ã«ãããšå·®ãèŠãããã ã¢ãã€ã«è¡šç€ºã ãšãã§ãŒã³ç·šéäžã« Before/After ãç»é¢å€ã«è¿œãããããåé¡ãã£ããããAfter è²ã ãã®ã³ã³ãã¯ãããŒãç»é¢äžéšã« sticky ã§è²Œãä»ãããã«ããã ã§ touch ããã€ã¹å€å®ããŠãPC ã§ã¯åºãªãã 5. ãšã¯ã¹ããŒã ãã¬ãŒã³ HEX / JSON / CSS 倿° / Tailwind v4 圢åŒã§ã¯ã³ã¯ãªãã¯ã³ããŒãTailwind v4 ã ãš ã¿ããã«ãã®ãŸãŸ config ã«è²Œãã圢åŒã§åºåããã 6. URL ã§å
±æ ã§ãã¬ããïŒãã§ãŒã³ã URL hash ã«è©°ããŠå
±æã§ããã hash éšå㯠state ã URL-safe base64 ã«ãšã³ã³ãŒããããã€ããµãŒããŒã«éä¿¡ãããªããããã°ã«ãæ®ããªãããããŒãžãªããŒããçºçããªãããã·ã³ãã«ã 仿§ã¡ã¢ OKLCH ãæ¡çšããçç± è²èšç®ã OKLCH è²ç©ºéã§ããã®ãããœã人éã®ç¥èŠãšç·åœ¢ã«è¿ããããL ã C ãæ©æ¢°çã«æããŠãèŠãç®ã§éåæåºã«ãããããã HSL ã§ãããšãäŸãã°æåºŠïŒHSL ã® LïŒã 0.7 ã«æããŠããé»è²ã¯ç©ããèŠããŠéã¯æãèŠãããããŠãèŠèŠçã«ã¯ãã©ã€ããŠæãããOKLCH ã® L ã¯ããããç¥èŠãã©ãããæ£èŠåããå€ã ãããæãããšèŠãç®ãã¡ãããšæã£ãŠæããã ãœãŒã¹ïŒåèã«ãããã€ïŒ - OKLCH vs HSL: Why Perceptual Uniformity Matters - ColorBox â ããããããæ¯èŒ
- OKLCH Color Space - Atmos Style â æ°å€ã®æå³ãäžå¯§ã«è§£èª¬
- What are OKLCH colors? - Jakub â HSL ã® hue driftïŒè²çžã®ãºã¬ïŒãææããŠã
- oklch() CSS-Tricks | â CSS ã®æèã§ã®è§£èª¬ 5 ã€ã®éŠŽæãŸãã¢ãŒã | ã¢ãŒã | å
éšåŠç |
|---|---|
| åœ©åºŠçµ±äž (chroma) | å
šè²ã® C ã target å€ã§çœ®æ |
| æåºŠçµ±äž (lightness) | å
šè²ã® L ã target å€ã§çœ®æ |
| ããŒã³çµ±äž (tone) | L ãš C ãåæã«çœ®æïŒH ã¯ç¶æïŒ |
| å
±éè²ãã¬ã³ã (mix) | å
šè²ãå
±éè²ãš OKLab 空éã§ç·åœ¢è£é |
| å
¥åè²ã«ãããã (anchor) | åºæºè²ã® L/C ã«ä»è²ãå¯ããïŒstrength å¯å€ïŒ | è²ãµãžã§ã¹ãæ©èœ ããããªè²ãåããããã»ã¯ã·ã§ã³ã§ãæ¢åãã¬ããã® hue ã®ã£ãããèšç®ããŠåãŸã£ãŠãªãè²çžã 3 ã€ææ¡ãããè²çžç°ã 0ã360° ã§èŠãŠã飿¥ããè²çžéã®ã®ã£ããã倧ããé ã«äžäœ 3 ã€ã®äžç¹ã hue ãšããŠãL/C ã¯æ¢åãã¬ããã®äžå€®å€ã䜿ãã ãã§ãŒã³æ©èœã®å®è£
åå®çŸ©ïŒdiscriminated unionïŒ åã¢ãŒãã ã§èå¥ãã discriminated unionãTypeScript ã® switch æã§ã¡ãããšç¶²çŸ
æ§ãã§ãã¯å¹ãããå®å¿ã åã¢ãŒããçŽç²é¢æ°ã§å®è£
UI ã«äŸåããªãçŽç²é¢æ°ãšã㊠ã«åãåºããŠããåŸã§ CLI åããããªã£ãŠãåå©çšã§ãããããã¹ããããããã applyStep / applyChain ã§é çªã«é©çšããã ããã·ã³ãã«ã Mix ã¢ãŒã㯠OKLab ã§è£é ãã¬ã³ã㯠OKLCH ãããªã㊠OKLab ã§ãããOKLCH ã ãš hïŒè²çžïŒãååšäžã®è§åºŠã ãããè£éæ¹åã«ææ§ããåºãïŒæèšåãïŒåæèšåãïŒïŒãOKLab 㯠a/b 軞ã®çŽäº€åº§æšã ãããç·åœ¢è£éã§çŽ çŽã«è£éã§ããã Gamut clipping OKLCH ã§èšç®ããçµæã sRGB ã®è¡šç€ºç¯å²å€ã«åºãããšããããããHEX åããçŽåã« culori ã® ã§ã¯ãªããããïŒ ããããªããšãäŸãã°çŽç²ãª OKLCH(0.7, 0.3, 30) ã¿ãããªæå®ã gamut å€ã§ ãåºãããå€ãªè²ã«ãªã£ããããã anchor ã¢ãŒãã®èœãšã穎 æå ã®ãšãã«ãå€åãªããã«ãªãã¯ããªã®ã«ã埮åŠã«è²ãå€ããåé¡ããã£ããåå 㯠OKLCH â HEX ã®åŸåŸ©å€æã§ gamut å€ã®è²ã埮åŠã«äžžããããããšã ã®ãšãã¯æ©æãªã¿ãŒã³ã§å®å
šã«ã¹ããããå°å³ã ãã©å€§äºã æè¡ã¹ã¿ã㯠| å±€ | æ¡çš |
|---|---|
| ãã«ã | Vite 8ïŒrolldown ããŒã¹ïŒ|
| èšèª | TypeScript |
| UI | React 19 |
| è²èšç® | ïŒOKLCH â sRGBãgamut clipïŒ|
| ã¹ã¿ã€ã« | Tailwind CSS v4ïŒïŒ|
| ãã¹ã | Vitest 4ïŒhappy-domïŒ|
| Lint / Format | Biome |
| ããã〠| GitHub Pages + GitHub Actions + Cloudflare DNS | Tailwind v4 ã§æ¥æ¬èªãã©ã³ãïŒZen Maru GothicïŒãåœãŠããšãã ãæžããšããšïŒ v3 ãŸã§ã® ãããªããŠãCSS ã® ãããã¯ã§æå®ãã圢ã«ãªã£ããæ
£ãããš CSS ã ãã§å®çµããããè¯ãã ãããã« çµµæããšãã®è²éžã³ããæ©æ¢°çã«æãããã ãã§ãããã¡ããã¡ã楜ã«ãªãå Žé¢ãããããã®ã«ã©ãªã¹ãã®ä»£ããã«ã¯ãªããªããã©ãéã«ãã¬ããçµãã§ããªããããæãã«ãããã¿ã³ã飿ããã ãã§å®çšã«èãããã¬ããã«ãªãã®ã¯äœã£ãŠãŠã¡ãã£ãšé¢çœãã£ã
é 匵ã£ãŠçµµãæãããã° 1
by reu · 2026/4/9
ãã®ãã€ãŒãã®ãã€ð å¿çã³ãã«ããïŒïŒ #bluearchive #ãã«ã¢ã« pic.twitter.com/f7BOhMSqlv— ReU (@ReU0000) April 2, 2026 ãã€ã飜ããªãããã« 2 ~ 3æéçå°ã§äœæ¥ããŠãããã18æéã¯ãããã åãçµµã¿ãããªã®ãæèããŠæãããäž»ç·ããªãã€ã©ã¹ãã£ãŠããããã äž»ç·æ¶ãããã®è²ãã¬ã¹ã¯ç»é¢ãæ¡å€§ããŸãã£ãŠ 1px ãšã 1. 5px ã®ãã³ã§æããŠããæããŠããšãããããææ©ããããæã£ãŠããã ãã£ããæéããã£ããã©è²ã
ãªåŠã³ããã£ãŠè¯ãã£ãã
ææ³åæ
- çŽ äœããæããšæ§é ãæèãããã
- ã¡ãŸã¡ãŸé²æäžãããšèŠè¿ããæã«ãã¹ã«æ°ãä»ãããã
- ç·ç»ã¡ãããšæžããšè²ãã¬ã¹ãããã
- æ¡å€æ¥ã«ã¡ããããŠãã¢ãããç¶ã
- ã©ãã¯æ°Žåœ©ãœããã³ã§ããïœã£ãšæããšè¯ãã
- å®ã¯ç»é¢ããã£ã¡ãæ¡å€§ããŠçµµãæããŠããã
- è²ãã¬ã¹ã¯ 1px åäœã§ãã£ãŠããã倧å€ã ãã©
- è²æ°ã¯ãããªå€ããªããŠãã
- çŽåŸãããŸã§åã貌ãããã£ãŠè¯ã
- æªã¿ããŒã«æåŒ·
- 3DçŽ äœã¯ç¥
- ãŒããããŒã«ã¯ã ãºã€ããç¡çã«äœ¿ããã§ããã
- ç·ç»çŽåŸãããªãã£ããèãããŠã©ãã£ãŠããšã«ããŠããŸãã°ãã
- æµç³ã«3 ~ 4åãç·æžãçŽãã°ããã£ãœããªã
- é¡ã¯åœ±å
¥ããªããŠããããïŒã±ãŒã¹ã«ãããã㩠䌞ã³ãã - 髪ãšãé¡ã®æ
å ±éã¯ããã¡ãã£ãšå¢ãããŠãè¯ãã£ããªïœæã«è² ããŠãã
- 髪ãã£ãšé 匵ããããããªããïŒ
- 圱é°å²æ°ã§ä»ããŠããããå€ãããããªã
- èæ¯ã®ããŠããŠãç¡ãéãã
- ã¬ã€ã€ãŒäœ¿ãéããªã®ã§ããã¡ãã£ãšæŽçããã€ã€ã ãª....
俺ããã£ã±OGPãåºããããã ãã
by reu · 2026/4/9
OGP 衚瀺ãããªãåé¡ãšæŠã£ãèšé² Next.js ã® App Router ã§ OGP ãèšå®ããŠãX ã§ã«ãŒã衚瀺ããããŸã§ã«çµæ§èŠæŠããæã®åå¿é²ãæªå®è£
ã ã£ãæããã®æç³»åé ã --- 1. äžæŠæ®éã®ã¢ãããŒãã§ OGP ãåºããæ§ã«ããŠã¿ã ãµã€ãã«ã¯ ã« title ãš description ãããã ãã§ãOpenGraph ã¿ã°ã Twitter Card ã¿ã°ãäžåãªãç¶æ
ããã¹ã¿ãŒãã ãã£ãããš - ã« ïŒïŒãèšå®ããããã©ã«ã OGP ãš Twitter CardïŒïŒã远å
- ã«éçã¡ã¿ããŒã¿ã远å
- ãæ°èšããã ã Disallow
- ãæ°èšãPrisma ããå
¬éèšäºãå
šä»¶ååŸããŠåççæ èµ·ããããš èšäºè©³çްããŒãžïŒïŒã¯ ã ã£ãã®ã§ ã䜿ããªãã£ãã 解決ç: ã Server Component ãšããŠæ°èšããããã« ãæžãããããŒãžæ¬äœã¯ã¯ã©ã€ã¢ã³ãã³ã³ããŒãã³ãã®ãŸãŸã§ OKãNext.js ã® App Router ã§ã¯ãlayout ãš page ã¯ç¬ç«ããŠãµãŒããŒ/ã¯ã©ã€ã¢ã³ããéžã¹ãã®ããã€ã³ãã layout åŽã§ã¯ Prisma ãã DB ãååŸããæ¬æãã Markdown èšæ³ã HTML ã¿ã°ãé€å»ããŠå
é 120 æåã description ãšããŠäœ¿ãããã«ãããæãããŠããã¯æ¬åœã« description ãªãã§ããããã£ãŠè³å
ã©ã€ã³ã¹ã話ããããŠããã --- 2. OGP ç»åã®åççæ èšäºãã·ã§ã¢ããæã«ã¿ã€ãã«å
¥ãã®ããæãã®ç»åãåºããããªã£ãããããããã€ã ãæ°èŠäœæ Next.js ã® ïŒnext/ogãå
éšã¯ SatoriïŒã䜿ã£ãŠåçã«ç»åãçæãã API ãäœã£ãã - ã¯ãšãªãã©ã¡ãŒã¿ã§èšäºã DB ååŸ
- æ¬æããæåã®ç»å URLïŒïŒãæœåºããŠãµã ãã€ã«ã«
- èæ¯è² ãã¿ã€ãã«çœããµã€ãåãã³ã¯ïŒïŒ
- ç»åãµã€ãº: 1200x630ïŒTwitter æšå¥šïŒ
- ãµã€ãåã®æšªã«ã¢ãã¿ãŒç»å ãã©ã³ãæå® ããã©ã«ãã®ãã©ã³ãã ãšå³æ°ãªãã£ãã®ã§ãGoogle Fonts ãã Yusei Magic ã® ttf ã fetch ããŠã®ãªãã·ã§ã³ã«æž¡ãããïŒããã®ããã§åŸã§ã¡ãã£ãšçãç®ãèŠãïŒ layout.tsx åŽã§ã¯ãTwitter Card ã ã«å€æŽããOGP ç»å URL ã ã«åããã --- 3. X ã§ã«ãŒãç»åã衚瀺ãããªã: ãã®ïŒ ãããã€ããŠå®éã« X ã§ã·ã§ã¢ãããã«ãŒãç»åãåºãªãã èª¿æ» ã¡ã¿ã¿ã°ãçŽæ¥ fetch ããŠç¢ºèªãããããã¹ãŠæ£ããåºåãããŠããã åé¡ãªãããã«èŠãã⊠Twitter Card Validator ã®èŠå Twitter Card Validator ã§æ€èšŒããããããªèŠåãåºãŠããã åå : robots.txt ã§ ãå
šé¢ Disallow ããŠããã®ãåå ã ã£ãã Twitterbot 㯠robots.txt ãå°éããããã ã®ç»å URL ãååŸãã«æ¥ãæç¹ã§ãããã¯ãããŠãããOGP ã®ç»å URL ã é
äžã«ããã®ã«ããã®ãã¹ã robots.txt ã§æåŠããŠãããããããã¯ããŒã©ãŒã¯ç»åãåããªãã æèš: robots.txt ã§ ãäžæ¬ Disallow ãããšãOGP ç»åã®ãããªã¯ããŒã©ãŒã«ååŸããŠã»ãããšã³ããã€ã³ãããããã¯ãããã ä¿®æ£ robots.txt ã®èšå®ãèŠçŽã㊠ãèš±å¯ããããã«å€æŽããã --- 3. X ã§ã«ãŒãç»åã衚瀺ãããªã: ãã® 2 robots.txt çŽããŠãå
šç¶ OGP 衚瀺ãããªããŠæ³£ããŠãã
ç¶æ³ãšããŠã¯ã"ãã©ãŠã¶ã§çŽæ¥å©ããŠç»åã¯åºãããopengraph.xyz ãªã©ã§èŠããš unreachable" Gemini ã«èããŠã¿ãããã®ã±ãŒã¹ã¯ã¯ããŒã©ãŒã®ã¿ã€ã ã¢ãŠããåå ãªãã ã£ãŠãå®éããã§ã4.51 ç§ãã²ã©ãæã¯ 9.62 ç§ãããããã£ãŠããŠèã ã£ãã 詊ããããš 1. DB æ¥ç¶ã®æé€
2. ãã©ã³ãã®ããŒã«ã«å
3. Cache-Control ããããŒ
4. Edge Runtime å
5. ã¢ãã¿ãŒ base64 ã€ã³ã©ã€ã³å DB æ¥ç¶ã®æé€ ããšããš API route å
ã§ slug ãã DB ãåŒããŠããããlayout ã® ã§æ¢ã«ããŒã¿ãæã£ãŠããã®ã§ãããã API åŽã§åååŸããå¿
èŠããªãã£ãã 倿Ž: ã¯ãšãªãã©ã¡ãŒã¿ã ãã ã«å€æŽããAPI route åŽã¯ DB ã«äžåè§Šããªãããã«ã ãã©ã³ãã®ããŒã«ã«å Google Fonts ããæ¯ãªã¯ãšã¹ã ttf ã fetch ããŠããã®ããããŠãïŒçŽ 3MBïŒãããŒã«ã«ã«é
眮ã ã® ã§èªã¿èŸŒã¿ãã¡ã¢ãªã«ãã£ãã·ã¥ãã圢ã«ããã Cache-Control ããã㌠çæããç»åã®ã¬ã¹ãã³ã¹ã«ä»¥äžã远å ã ãã©ãŠã¶ 1 æ¥ãã£ãã·ã¥ + 7 æ¥éã® stale-while-revalidateãèšäºã¿ã€ãã«ãé »ç¹ã«å€ãããã®ã§ã¯ãªãã®ã§ãããã§ååã 以äžã®äºã€ã¯ Claude ã«ææ¡ããŠããã£ãŠããã®ãŸãŸå®è£
ããŠããã£ã Edge Runtime å - runtime = "nodejs" â "edge" ã«å€æŽ
- fs/promises + path ãå
šéšæ¶ããŠãimport.meta.url ãã¿ãŒã³ã«åãæ¿ãã
- ãã©ã³ãèªã¿èŸŒã¿ãã¢ãžã¥ãŒã«ã¹ã³ãŒãã® fetch ã«ãªã£ãŠãããããã«ãæã«ãã³ãã©ãŒã解決ããŠããããå®è¡æã¯å³ ArrayBuffer è¿ãã ã ã¢ãã¿ãŒ base64 ã€ã³ã©ã€ã³å - me.png ãåãã import.meta.url ã§èªãã§ btoa ã§ base64 倿
- data:image/png;base64,... ã OgCard ã«çŽæ¥æž¡ããããSatori ãç»ååãã«è¡ããããã¯ãŒã¯åŸåŸ©ããŒãã«ãªã£ã 4. ã€ãã§ã«ãã£ãã㚠念ã®ãã以äžã远å ããã - ãš ã«èªåã® X ã¢ã«ãŠã³ã
- ã«ããããã®å®éšå Žã ã¿ã°ã®å±æ§ãçŽæ¥å¶åŸ¡ã§ããªãããã ãã¢ãã³ãªã¯ããŒã©ãŒã¯ 屿§ãªãã§ãæ£åžžã« OGP ãèªã¿åãããããå®å®³ã¯ãªãã£ãã --- OgCard ã³ã³ããŒãã³ãã®åãåºã route.tsx å
ã® JSX ãè¥å€§åããŠããã®ã§ã ãšããŠåãåºãããStorybook ããã確èªã§ããããã«ãªãããã¶ã€ã³èª¿æŽãããããããªã£ãã --- 5. vercel ç¡ææ æ
> The Edge Function "api/og" size is 2.37 MB and your plan size limit is 1 MB. ãéãããŠãªããŠããããããã¯ãã©ã³ãã®ããã Edge Runtime -> Node.js ã«æ»ã㊠GET äºç¡ã ãŸãšã - robots.txt ãèŠçŽããã ïŒïŒïŒïŒ
- OPG çæã«ããã£ãŠãæéãã¡ãããšãã§ãã¯ããããªïŒïŒïŒïŒ æçµçã« OGP ã®çæã¯ 9.62s â 623ms ã«ãªã£ããå
ãé
ãã®ããããã© 15 åã§æµç³ã«å€§èåã
ãµã€ãã®èæ¯ã®ã空
by reu · 2026/4/9
Canvas ã§æãåçãªç©º â æå»Ã倩æ°é£åã®èæ¯ã¢ãã¡ãŒã·ã§ã³ 俺ã®ããã°ã®èæ¯ã«ãçŸåšæå»ãšå®éã®å€©æ°ã«é£åããŠå€åãã空ã HTML Canvas ã§æããŠãã話ã å€ã¯æãç¬ããŠæãæµ®ãã³ãæã«ãªããšç©ºããªã¬ã³ãžã«æãŸã£ãŠå€ªéœãæããéšã®æ¥ã¯éšç²ãéããé·éšãªã皲劻ãèµ°ããå
šéš canvas 2D API ã®ææãã ãããã¯ã·ã§ãŒããŒãšãã§ãæžããŠã¿ãããã ã©ããªæ©èœïŒ - æå»ã«å¿ããŠç©ºã®ã°ã©ããŒã·ã§ã³ãå€ããïŒå€ â æçŒã â æŒ â å€çŒã â å€ïŒ
- ãã§ãŒãºã®åãæ¿ããã¯æ»ããã«ãã¬ã³ãããã
- OpenWeatherMap API ããå®éã®å€©æ°ãååŸããŠãéšã»éªã»é²ã»é·ããªã¢ã«ã¿ã€ã 衚瀺
- äœçœ®æ
å ±ã¯ IP ããŒã¹ïŒèš±å¯ãã€ã¢ãã°ãªãïŒã§èªåååŸ
- 倩æ°ã®æåãªãŒããŒã©ã€ã UIïŒyaogoromo.exeïŒã§ãã€ã§ã倩æ°ãå€ãããã
- 察å¿ãã¢ãã€ã«ã§ã¯ããŒãã£ã¯ã«æ°ãåæž
- ã¿ãé衚瀺æã¯ã¢ãã¡ãŒã·ã§ã³äžæåæ¢ ã¢ãŒããã¯ã㣠SkyBackground ã hooks ãšã³ã³ããã¹ããæããŠãèšç®æžã¿ã® props ã SkyCanvas ã«æž¡ãã ããSkyCanvas ã¯çŽç²ãªæç»ãã·ã³ã åã¬ã€ã€ãŒã®è§£èª¬ 1. å€©æ° API ãããã· Next.js ã® Route Handler ã§ãµãŒããŒåŽããå©ããAPI ããŒãã¯ã©ã€ã¢ã³ãã«é²åºãããªã(ããã¯ãã)
ã¬ã¹ãã³ã¹ã¯ ã§ã ã® 10 åãã£ãã·ã¥ä»ãã
äžå¿APIå©ããªãã£ãæã¯æŽãã倧æµã®å Žåã¯æŽããŠãæ¹ãå¬ãããããã 2. åå®çŸ© 空ã®ãã§ãŒãºãšå€©æ°ã®çš®é¡ãåã§çžãããšã§ãæç»é¢æ°ã®ãã¿ãŒã³ããããå®å
šã«ãªãã 3. æå»ãã㯠â useSkyPhase 60 ç§ééã§ æŽæ°ã空ã®å€åã¯ãã£ãããªã®ã§ããã§ååã
ããã¢ã§ãäŸãã°æçŒãã® ãªãããŸã å€ã£ãœã空ã«ãªã¬ã³ãžãæ··ããå§ãããã ãªããã»ãŒæŒã®ç©ºãã«ãªãã ãã®æ©èœãããªãæ°ã«å
¥ã£ãŠããŠã倿¹ãšãã®è³ªæãçµæ§ããæããçŸå³ããããããªãïŒ 4. 倩æ°ããŒã¿ãã㯠â useWeatherData Geolocation APIïŒãã©ãŠã¶ã®äœçœ®æ
å ±èš±å¯ïŒã¯äœ¿ããªããèš±å¯ãã€ã¢ãã°ã¿ããªå«ãã£ããïŒ 5. 倩æ°ãªãŒããŒã©ã€ã â WeatherOverride Context ã·ã³ãã«ãª Context + useStateãnull ãªãAPI ã®å€©æ°ããã®ãŸãŸäœ¿ããå€ãããã°ãã£ã¡ãåªå
ã
ãã£ã±ãå€©æ°æžãæãæ©èœã®ããã®ãã€ã
UI 㯠ãŠã£ã³ããŠã« 5 ã€ã®çµµæåãã¿ã³ïŒâïž âïž âïž âïž â¡ïžïŒã䞊ã¹ãŠãã°ã«åŒã§åãæ¿ããã 6. SkyBackground â ãªãŒã±ã¹ãã¬ãŒã·ã§ã³å±€ hooks ãæããŠãä»ã®ç©ºã¯ã©ããªç¶æ
ããã1ã€ã«è§£æ±ºã㊠SkyCanvas ã«æž¡ãã ãã®èãå±€ã
ã§ã³ã³ãã³ããžã®ã¯ãªãã¯ãé»å®³ããªãã ã§èæ¯ã«æ²ãã layout.tsx ãã㯠+ ã§ã©ããããã çµç±ã§èªã¿èŸŒããcanvas 㯠SSR ã§æå³ãªãã®ã§åå HTML ã軜ãããããã 7. SkyCanvas â æç»ã®æ žå¿ ãããæ¬äœãå
šéš canvas 2D API ã§ææãã ã¡ãªã¿ã«ãã£ã¡ãè¥å€§åããŠããããã°ããããªãããã æç»ã¬ã€ã€ãŒã®éãé 空ã°ã©ããŒã·ã§ã³ ãµã€ãã®ã«ã©ãŒãã¬ããïŒ, , , ïŒã«åãããè²èšèšãå€ã®ç©ºããµã€ãã®èæ¯è² ãšäžèŽããã®ã§ã空ãèªã¿èŸŒãŸããåã§ãéåæããªãã ãã§ãŒãºã®åãæ¿ãã㯠canvas ã¯ãµãŒããŒã§æå³ãªãã®ã§ + ã§ã¯ã©ã€ã¢ã³ãã®ã¿ããŒãã
ã body ã«ä»ããŠãã®ã§ãèªã¿èŸŒã¿å®äºãŸã§ã¯ãµã€ãã®éåžžèæ¯è²ã衚瀺ãããã ãã¡ã€ã«æ§æ | ãã¡ã€ã« | åœ¹å² |
|---------|------|
| | SkyPhase, WeatherCondition, WeatherData ã®åå®çŸ© |
| | OpenWeatherMap ãããã· API |
| | æå» â ãã§ãŒãº + é²è¡åºŠã®ç®åº |
| | IP äœçœ®æšå® + 倩æ°ååŸ + ãã£ãã·ã¥ |
| | 倩æ°ã®æåãªãŒããŒã©ã€ã Context |
| | canvas æç»ã®æ¬äœ |
| | hooks ãæãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ |
| | dynamic import ã©ãã㌠|
| | barrel export |
| | Storybook (13+ ããªãšãŒã·ã§ã³) |
| | 倩æ°åãæ¿ã UI (yaogoromo.exe) | èšèšã§æèããããš é¢å¿ã®åé¢
ããŒã¿ååŸïŒhooksïŒâ ç¶æ
解決ïŒSkyBackgroundïŒâ æç»ïŒSkyCanvasïŒãæç¢ºã«åãããSkyCanvas 㯠/ / ã® 3 ã€ã® props ã ãã§å®å
šã«åãçŽç²ãªæç»ã³ã³ããŒãã³ããStorybook ã§ä»»æã®çµã¿åãããããããããã«ãã®åœ¢ã«ãªã£ãŠããšèšã£ãŠãéèšã§ã¯ãªãã IP ããŒã¹ã®äœçœ®æšå®
Geolocation API ã¯èš±å¯ãã€ã¢ãã°ãåºãããã®ããã°ãåããŠèšªãã人ã«ãäœçœ®æ
å ±ãå
±æããŸããïŒãã¯äœéšãå£ããipapi.co ãªãç¡æã»ããŒäžèŠã»ãã€ã¢ãã°ãªãã§ãã£ããã®ç·¯åºŠçµåºŠãåããã®ã§ã倩æ°ãåºãã«ã¯ååãååŸå€±æããŠãæå»ããŒã¹ã®ç©ºã«ãã©ãŒã«ããã¯ããã®ã§äœãå£ããªãã ãã£ãã·ã¥ã®äºéæ§é
倩æ°ããŒã¿ã¯ 2 ç®æã§ãã£ãã·ã¥ããŠã:
- ã¯ã©ã€ã¢ã³ã: sessionStorage ã« 10 åïŒSPA å
é·ç§»ã§ãªãã§ããããªãïŒ
- ãµãŒããŒ: ïŒAPI Route ã¬ãã«ïŒ 倩æ°ããããªã«é »ç¹ã«å€ãããããªãã®ã§ã10 åãã£ãã·ã¥ã§ API åŒã³åºããæå°éã«ãOpenWeatherMap ç¡ææ ã® 1000 å/æ¥ãããŸããšãäœè£ã ã¢ã¯ã»ã·ããªãã£
ãæå¹ãªããã°ã©ããŒã·ã§ã³ 1 åæãã ãã§ã¢ãã¡ãŒã·ã§ã³ã«ãŒãã«å
¥ããªããèŠèŠçãªè£
食ãèŠæãªäººã«ãã¡ãããšé
æ
®ã ã§èæ¯å
šäœãã¹ã¯ãªãŒã³ãªãŒããŒããé ããŠãã ããã·ãŒãžã£ã«çæ
é²ã®ãã¯ã¹ãã£ç»åãçšæãã代ããã«ãæ¥åã®éãåããã§åçã«çæããŠããã¢ã»ãã管çäžèŠãã©ã³ãã æ§ã§æ¯åéãé²ãã§ããããµã€ãºãèªç±èªåšããã ã blob æ°ãå€ãïŒé²1ã€ã«ã€ã 50ã100 åã®æ¥åïŒã®ã§ãã¢ãã€ã«ã§ã¯é²ã®æ°èªäœãçµã£ãŠãã æžããŠãæäžã«æãã€ããã®ã§ãã®å€æŽå
¥ãã: https://github.com/ryu1-1uyr/ryu-reu.me/pull/119 é²ããªãã¹ã¯ãªãŒã³Canvasã«äžåºŠãã£ãã·ã¥ããŠãæç»æã¯drawImageäžçºã§è¡šç€ºãããããããã°æ¯åèšç®ããã§ãããããããªãããšèšããã€ã
ã¬ããã£ãœãèŠãããã€
by reu · 2026/4/9
ã¬ãããã¹ã¯ããã颚 UI ã®å®è£
ã¡ã¢ èªåã®ããã°ã®ãããããŒãžã Windows 颚ã®ãã¹ã¯ããã UI ã«ãã話ã ãã©ãã°ã§åããããŠã£ã³ããŠãâãã¿ã³ã§éãããã¹ã¿ãŒãã¡ãã¥ãŒããåèµ·åããŠã£ã³ããŠã®ã¯ãªãã¯ã§åé¢ã«æ¥ããã¿ã¹ã¯ããŒã«æèšã å
šéš React + Tailwind ã§ãŒãããçµãã ã ã©ããªæ©èœïŒ - ããŒãžå
šäœããã¹ã¯ããããåã³ã³ãã³ãïŒèªå·±ç޹ä»ãèšäºäžèЧãå€©æ°æäœ etc.ïŒãåå¥ã®ãŠã£ã³ããŠã§è¡šç€ºããã
- ãŠã£ã³ããŠã¯ã¿ã€ãã«ããŒããã©ãã°ããŠèªç±ã«ç§»åã§ããïŒã¢ãã€ã«ã¯å¡ãã§ãïŒ
- â ãã¿ã³ã§éãã â ã¹ã¿ãŒãã¡ãã¥ãŒããå床éãã
- ãŠã£ã³ããŠãã¯ãªãã¯ãããš z-index ãäžãã£ãŠåé¢ã«æ¥ã
- ç»é¢äžéšã«ã¿ã¹ã¯ããŒãStart ãã¿ã³ + æèš
- ã¢ãã€ã«ã§ã¯çžŠç©ã¿ã¬ã€ã¢ãŠãã«èªååãæ¿ãïŒãã©ãã°ç¡å¹ãå
šå¹
衚瀺ïŒ
- ãŠã£ã³ããŠã®è¿œå ã¯èšå®ãã¡ã€ã«1ç®æ + ã³ã³ãã³ã1è¡ã§å®äº ã¢ãŒããã¯ã㣠Q: ãªãã§äžèº«ã¯å€ããæ³šå
¥ãã圢ã«ããã®ïŒ A: æ¢åã®ã³ã³ããŒãã³ããäœãçŽãã®é¢åã ã£ããã wapperã¿ãããªåœ¢ãåãã°ãã¬ãŒã ã ãå€ä»ãã§ããããããã£ãŠæ°ãã€ããŠããããã äŸã®åŠããŸãContextå¢ããã¡ãã£ããç¶æ
ãé ãäœçœ®ã®ã³ã³ããŒãã³ãã«æã£ãŠè¡ãããæã«æ¯å䜿ã£ãŠããŸãã åã¬ã€ã€ãŒã®è§£èª¬ 1. ãŠã£ã³ããŠå®çŸ© â windowRegistry.ts å
šãŠã£ã³ããŠã®èšå®ã1ç®æã«ãŸãšããèšå®ãã¡ã€ã«ãæ°ãããŠã£ã³ããŠã远å ãããšãã¯ããã ãè§Šãã°ããã ãŠãŒãã£ãªãã£é¢æ°ãããã«: åæç¶æ
ã® zIndex 㯠ãªãŠã£ã³ããŠã«é çªã«æ¯ã£ãŠããã ããéããŠããŠã£ã³ããŠã¯ ã 2. ãŠã£ã³ããŠç¶æ
管ç â WindowManager Context 3ã€ã®æäœã ã: closeWindow â ã«ããã ããzIndex ã¯ãã®ãŸãŸã openWindow â ã«ãã€ã€ ãæ¯ã£ãŠæåé¢ã«ã focusWindow â æ¢ã«éããŠããŠã£ã³ããŠãã¯ãªãã¯ããæãzIndex ã ãæŽæ°ã ã¯ãä»ãŸã§ã«æ¯ã£ãæå€§ã® zIndexãã ã§æã£ãŠãŠãæäœã®ãã³ã« +1 ããŠãããèŠã¯ãæåŸã«è§Šã£ããŠã£ã³ããŠãäžçªåãã«ãªããOS ã®ãŠã£ã³ããŠãããŒãžã£ãŒãšåãèãæ¹ã 3. RetroWindow â ãŠã£ã³ããŠã®èŠãç® ç¶æ
管çãäžåç¥ããªããçŽç²ãªè¡šç€ºã³ã³ããŒãã³ãã ã¿ã€ãã«ããŒã®è²ããŒã 4è²ã®ã°ã©ããŒã·ã§ã³èšå®ãçšæ: ã®æšªã°ã©ããŒã·ã§ã³ã§ã¿ã€ãã«ããŒãå¡ãã 㯠â ãã¿ã³ã®ãããŒè²ã ãªããåœåããã¡ãã£ãšããã®ãªãããªãã®èŸº ãã©ãã°ã®ä»çµã¿ Pointer Events ã§å®è£
ãã¿ã€ãã«ããŒã® ã§ãã©ãã°éå§: ãããœãããããªããšããŠã¹ããŠã£ã³ããŠå€ã«åºãç¬éã«ãã©ãã°ãéåããããã£ããã£ããããšã§ããã€ã³ã¿ãŒãã©ãã«ããŠã move ã€ãã³ããã¿ã€ãã«ããŒã«å±ãã ã ïŒã¢ãã€ã«æïŒãªãå
šéšã¹ãããã ãŠã£ã³ããŠã®è£
食 ã®ããŒãã·ã£ããŠã§ã¬ããæãåºããŠããè§äžž + 2px ããŒã㌠+ ããããã·ã£ããŠã®çµã¿åããã è§äžžã®ããã§è¥å¹²èŠåããŠããæ°ãããŠããããäžæŠãšã·ïŒïŒïŒ â ãã¿ã³ã®æšªã«ãã â ãš â¡ ã¯é£Ÿããæå°åã»æå€§åã¯å®è£
ããŠãªãïŒ~é¢åãããã®ã§~èŠããªãããããªããïŒ ã³ã³ãã³ãéšåã¯èæ¯ã®ç©ºãéããŠèŠããããã«åéæ: 4. Desktop â ã³ã³ãã³ããšãŠã£ã³ããŠã®æ¥ç¶ ãŠã£ã³ããŠå®çŸ©ãšã³ã³ãã³ããçµã³ã€ããå Žæã ã§ã¬ãžã¹ããªãåããŠãéããŠããŠã£ã³ããŠã ãæç»ãããã¬ãžã¹ããªã®é åº = ããã©ã«ãã®æç»é ãzIndex ã§ããããååŸãå€ããã ã³ã³ãã³ã㯠page.tsx ããæ³šå
¥: ãŠã£ã³ããŠã·ã¹ãã ã¯äžã«äœãå
¥ããäžåç¥ããªããComposition ãã¿ãŒã³ã 5. Taskbar + StartMenu ã¿ã¹ã¯ã㌠ç»é¢äžéšã«åºå®ãé«ã 40pxãåéæ + ãã©ãŒã Start ãã¿ã³ãæŒããã³ã«ã©ã³ãã çµµæåãå€ããç¡é§ãªæ©èœ: å³ç«¯ã«ã¯ãããã«ãªæèšã10 ç§ããšã«æŽæ°: ã¹ã¿ãŒãã¡ãã¥ãŒ ããã®ãŸãŸåãã®ã§ããŠã£ã³ããŠã远å ããã°ã¹ã¿ãŒãã¡ãã¥ãŒã«ãèªåã§åºãã
éããŠããŠã£ã³ããŠã¯ããã¹ããèããªããéããŠããŠã£ã³ããŠã¯ãèµ·åãã©ãã«ãåºãã ã¡ãã¥ãŒå€ã¯ãªãã¯ã§éããåŠç㯠ã€ãã³ãã§ ãã§ãã¯: 6. ã¬ã¹ãã³ã·ã â useIsMobile ã§ ãç£èŠãSSR æã¯ ãè¿ãã ã¢ãã€ã«æã®æå:
- ãŠã£ã³ããŠã¯ ã§çžŠç©ã¿ïŒãã©ãã°ãªããzIndex ãªãïŒ
- ãé©çšãããŠå
šå¹
衚瀺
- ã¿ã¹ã¯ããŒã¯åãã ããŠã£ã³ããŠã®ã¯ãªãã¯åé¢åã¯ç¡å¹ ãã¡ã€ã«æ§æ | ãã¡ã€ã« | åœ¹å² |
|---------|------|
| | ãŠã£ã³ããŠå®çŸ©ã®åäžãœãŒã¹ïŒå + èšå®é
å + ãŠãŒãã£ãªãã£ïŒ |
| | ééã»zIndex ã®ç¶æ
管ç Context |
| | ãŠã£ã³ããŠã®èŠãç® + ãã©ãã° |
| | ã¬ãžã¹ããªãšã³ã³ãã³ãã®æ¥ç¶ + ã¬ã¹ãã³ã·ãåãæ¿ã |
| | ç»é¢äžéšã®ã¿ã¹ã¯ã㌠+ æèš |
| | ã¹ã¿ãŒãã¡ãã¥ãŒïŒãŠã£ã³ããŠäžèЧ + èµ·åïŒ |
| | ã¢ãã€ã«å€å®ãã㯠|
| | SSR/ã¯ã©ã€ã¢ã³ãå€å®ãã㯠|
| | Desktop ã« contents ãæž¡ã | èšèšã§æèããããš åäžãœãŒã¹ã®å®çŸ©ãã¡ã€ã«
ãŠã£ã³ããŠã®è¿œå ã«å¿
èŠãªå€æŽã¯ 2 ç®æã ã: ã«å®çŸ©ã远å + ã§ã³ã³ãã³ããæž¡ããã¹ã¿ãŒãã¡ãã¥ãŒã®é
ç®ãåæç¶æ
ãzIndex èšç®ãã¬ã¹ãã³ã·ãã¯ã©ã¹ã¯å
šéšã¬ãžã¹ããªããèªåçæãããããããã ãè§Šãã°OKãã培åºããã èŠãç®ãšç¶æ
ã®åé¢
RetroWindow ã¯ ã®æŠå¿µãç¥ããªããæž¡ããã propsïŒtitle, color, zIndex, onCloseïŒã§æç»ããã ããDesktop ããéããŠãªããã° render ããªããã倿ããŠãã®ã§ãRetroWindow ã¯æ±çšçãªãŠã£ã³ããŠæ ãšããŠä»ã®å Žæã§ã䜿ãåããã zIndex ã®ã€ã³ã¯ãªã¡ã³ãæ¹åŒ
ãŠã£ã³ããŠã®ååŸé¢ä¿ã ã®ã«ãŠã³ã¿1ã€ã§ç®¡çãã¿ãã/ã¯ãªãã¯ã®ãã³ã« +1 ããŠãè§Šã£ããŠã£ã³ããŠãå¿
ãæåé¢ã«æ¥ããOS ã®ãŠã£ã³ããŠãããŒãžã£ãŒãšåãã¢ã«ãŽãªãºã ã§ãäœåãŠã£ã³ããŠããã£ãŠãç Žç¶»ããªããçè«äžã¯æŽæ°ããªãŒããŒãããŒãããŸã§å€§äžå€«ïŒçŸå®çã«ã¯åé¡ã«ãªããªãïŒã Pointer Events ã®æ¡çš
ããªãããã: https://developer.mozilla.org/ja/docs/Web/CSS/Reference/Properties/pointer-events ããŠã¹ãšã¿ãããçµ±äžçã«æ±ãã Pointer Events API ã䜿ã£ãŠãã ã§ãã©ãã°äžã®ãã€ã³ã¿ãŒãããã¯ããããšã§ãé«éã«ããŠã¹ãåãããŠãŠã£ã³ããŠå€ã«åºãŠããã©ãã°ãéåããªããTouch Events ãš Mouse Events ãå¥ã
ã«ãã³ãã«ããå¿
èŠããªããªã£ãã ã¢ãã€ã«ã§ã®å²ãåã
ã¢ãã€ã«ã§ã¯ããã¹ã¯ãããã£ãœãããæšãŠãŠå®çšæ§ã«æ¯ã£ããããããããªãã Composition ãã¿ãŒã³
Desktop ã³ã³ããŒãã³ãã¯ãŠã£ã³ããŠã®äžèº«ãäžåç¥ããªãã ã§å€ããæ³šå
¥ããããã€ãŸããŠã£ã³ããŠã·ã¹ãã ãšã³ã³ãã³ããå®å
šã«ç¬ç«ããŠãŠã ã§ã©ããããããä»»æã® React ã³ã³ããŒãã³ããè©°ã蟌ããããã¬ãŒã ã¯ãŒã¯ãšã³ã³ãã³ãã®é¢å¿åé¢ã
Rakugaki In The Sky
by reu · 2026/4/4
ãçµµæãÃ空é£ã°ãæ©èœã®å®è£
ã¡ã¢ 俺ã®ããã°(ãã¡ããã«ã¯å£²ã£ãŠãªã) ã«ããçµµæãããŠç©ºã«é£ã°ããæ©èœã远å ãã話ã
èæ¯ã«æå»ãšå€©æ°ã«é£åãã空㮠canvas ã¢ãã¡ãŒã·ã§ã³ããããã ãã©ãããã«ãŠãŒã¶ãŒãæããçµµãé²ãšäžç·ã«æµããããã«ããã âãããªã® ã©ããªæ©èœïŒ 1. ã¹ã¿ãŒãã¡ãã¥ãŒãã ãèµ·åãããšãçµµæããŠã£ã³ããŠãéã
2. ãã³ãšæ¶ããŽã ã§èªç±ã«æã
3. ãâïž ç©ºã«é£ã°ãããã¿ã³ãæŒããšãæããçµµãã·ã¥ããšç©ºã«é£ãã§ãã
4. é£ã°ããçµµã¯èæ¯ã®ç©ºã«åæµããŠãé²ãšåãã¬ã€ã€ãŒã§å·Šããå³ã«ãµããµãæµãç¶ãã
5. äœåºŠã§ãé£ã°ããããéå»ã«é£ã°ããçµµãå
šéšæµããŠã
6. ããŒãžããªããŒããããšæ¶ãããåã ã¢ãã€ã«ã¯æå€§5åãPCã¯æå€§15åã®èœæžãé£ã°ãããã èœæžãããŠã¿ãŠã 以äžã¯èŸŒã¿å
¥ã£ã話 ã¢ãŒããã¯ã㣠èŠã¯ãçµµæãåŽãšç©ºã®æç»åŽã React Context ã§ã€ãªãã§ãã ããæå€ãšã·ã³ãã«ã Context: ãçµµæãããŒã¿ã®æ©æž¡ã ãµã€ãã«ã¯ããšããšå€©æ°ãªãŒããŒã©ã€ãçšã® ããã£ãã®ã§ãåããã¿ãŒã³ã§ ãäœã£ãã
(ãã®ããªã§æ©èœçã£ãŠãããšContextãããããšã«ãªããããªæ°ããã) ã§é
åãæã£ãŠã ã§è¿œå ããã ããæ°žç¶åãªããã»ãã·ã§ã³éãã
layout.tsx ã§ ãã¢ããªå
šäœã«è¢«ããŠãã ãçµµæããŠã£ã³ã㊠ãŠã£ã³ããŠç»é² ãµã€ãã®ãŠã£ã³ããŠã·ã¹ãã 㯠ã«å®çŸ©ã远å ããã ãã§åãã
windowã®ç®¡çãäžå
åããŠãŠããã£ãã æç»ã®ä»çµã¿ 320Ã240px ã® HTML Canvas ã« Pointer Events ã§ç·ãåŒãæ¹åŒã æ¶ããŽã 㯠ã䜿ã£ãŠãéæã«æ»ããæ¹åŒãèæ¯ãçœãããªããŠéæã«ãªãã®ã§ã空ã«é£ã°ããæã«èæ¯ãéããŠèŠããã®ããã€ã³ãã 座æšå€æã¯è¡šç€ºãµã€ãºãš canvas ã®å
éšè§£å床ã®ãºã¬ãåžåããŠã: ã¢ãã€ã«ã§ã¯ + ã§å®å®ãããŠãã é£ã³ç«ã¡ã¢ãã¡ãŒã·ã§ã³ ããäžçªéãªã®ã§ãã®ãã¡çŽãã ãã¿ã³ãæŒããç¬éãcanvas ã®äžã«ã¹ãããã·ã§ããç»åãéã㊠CSS ã¢ãã¡ãŒã·ã§ã³ã§é£ã°ã: Tailwind ã® ã§ ãšããŠç»é²ã800ms ã® ã§äžã«çž®ã¿ãªããæ¶ããŠããã 空åŽ: SkyCanvas ãžã®ããªããæç» ããŒã¿ã®æµã DriftingDrawing å â ã®å€æã¯ + ã§1åã ãã以éã®ãã¬ãŒã ã§ã¯ ã§é«éã«æç»ã åæããžã㯠prop ãå€ãããã³ã«ããŸã ã«ãªã id ã®ãã®ã ãæ°èŠè¿œå ãã: ã¢ãã€ã«ã¯æå€§5åãPCã¯æå€§15åãè¶
ãããå€ãã®ã ã§é€å»ã é²ã®çŽåŸã倩æ°ããŒãã£ã¯ã«ã®åã«é
眮ãéšãéªã¯çµµã®äžã«éã圢ã«ãªãã ããªããæç»é¢æ° é²ãšåãã§ãå³ç«¯ãŸã§è¡ã£ããå·Šç«¯ã«æ»ã£ãŠãŸãæµããŠãããé床ãšéæåºŠã¯ã©ã³ãã ãªã®ã§ãçµµããšã«éããæµ®éæããåºãã èšèšã§æèããããš æç»ããã©ãŒãã³ã¹
- â ã®å€æã¯åå1åã®ã¿ã 㯠GPU ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãå¹ãã®ã§æ¯ãã¬ãŒã åŒãã§ã軜ã
- 320Ã240 ã® PNG 㯠10ã50KB çšåºŠãã¡ã¢ãªã®å¿é
ãªã
- äžéãèšããŠå€ãã®ãèªååé€ æ¶ããŽã = éæ
ã§æ¶ãããšã§ãé£ã°ããæã«èæ¯ã®ç©ºãéããŠèŠãããçœã§å¡ãã€ã¶ãæ¹åŒã ãšç©ºã«çœãåè§ãæµ®ãããšã«ãªãã®ã§ããããæ£è§£ã ã»ãã·ã§ã³éã
ãããŠæ°žç¶åããªãéžæãæ°è»œã«æããŠé£ã°ããéã³ãã§ãã£ãŠãäœåãæ®ãå Žæãããªããšããå²ãåããuseState ã ãã§å®çµããã®ã§ã³ãŒããç°¡çŽ ã
ããã°ããããã
by reu · 2026/3/29
ryu-reu.me æ§æã¡ã¢ ãã£ã¬ã¯ããªæ§æ éå°ãªæ°ããã㪠--- ããã°æ©èœãå€å°çã£ã ã¡ãããšããCMSã£ãœã - èšäºãšãã£ã¿ â Markdown ãšãã£ã¿ + ãªã¢ã«ã¿ã€ã ãã¬ãã¥ãŒãç»åã¯ãã©ãã°&ããããã§ Supabase Storage ã«ã¢ããããŒãããŠæ¬æã«èªåæ¿å
¥ããããäžæžã㯠localStorage ã«èªåä¿åãããã®ã§ããã£ããã¿ãéããŠã倧äžå€«ã
- ããã°äžèЧ â ããŒãžã³ã°ä»ããServer Component ã§ Prisma ããçŽæ¥ååŸããŠãã®ã§éããããã
- èšäºè©³çް () â cuid ãããªã㊠slug ããŒã¹ã® URL ã«ãªã£ãã人éãèªããURLã¯æ£çŸ©ãã·ã§ã¢ãã¿ã³ä»ãïŒXãLINEãã³ããŒïŒã èªèšŒãå
¥ã£ã Supabase Auth ä»çµã¿ãšããŠã¯ cookie ããŒã¹ã®ã»ãã·ã§ã³ç®¡çã§ãSupabase ã¯ã©ã€ã¢ã³ãã ãã©ãŠã¶çšã»ãµãŒããŒçšã»ããã«ãŠã§ã¢çš ã«3åå²ããŠãããã㯠Next.js ã®å®è¡ç°å¢ããšã« cookie ã®èªã¿æžãæ¹æ³ãéãããã詳ãã㯠ãèŠãŠããããã°ã SEO 察çãã - ã«ãµã€ãå
šäœã®OGPèšå®
- èšäºè©³çްããŒãžã¯ ã§èšäºããšã«åçã«OGPãçæ
- ãš ã远å ããµã€ããããã¯èšäºã®è¿œå ã»æŽæ°ã«å¿ããŠèªåçæ DB ã¹ããŒã - User: id, emailãSupabase Auth ã®ãŠãŒã¶ãŒãšåãã¡ã¢ãã§çŽä»ãã
- Post: title, slug, content, published, authorIdãslug ã¯ã¿ã€ãã«ããèªåçæã
- Image**: url, path, postIdãSupabase Storage ã«ã¢ããããç»åã®ã¡ã¿æ
å ±ã slugã®æ±ãããã§ããã®ãã¯çŽåŸãã£ãŠãªã --- æè¡ã¹ã¿ã㯠| ã«ããŽãª | æ¡çšæè¡ |
|---------|---------|
| ãã¬ãŒã ã¯ãŒã¯ | Next.js 16 (App Router) |
| èšèª | TypeScript |
| ã¹ã¿ã€ãªã³ã° | Tailwind CSS |
| DB/ORM | Supabase (PostgreSQL) + Prisma |
| ã¹ãã¬ãŒãž | Supabase Storage |
| èªèšŒ | Supabase Auth |
| ã¢ãã¡ãŒã·ã§ã³ | framer-motion |
| ãã¹ã | Vitest |
| UIã«ã¿ãã° | Storybook |
| CI/CD | GitHub Actions + Vercel | --- ãŸãšã ãã€ã©ãŒãã¬ãŒãã®åãè¶
ããŠå®éã«äœ¿ããããã°ã«ãªã£ããšæããç»åã¢ããããŒããèªèšŒãSEO ãŸã§äžéãæã£ãã®ã§ãšããããèšäºãæžããŠéçšã§ããã
USBã¡ã¢ãªãç¡ãã£ãã®ã§ããŒã¿ãã«SSDã ãã§BIOSãã¢ããããŒãããæã®èšé²
by reu · 2026/3/29
USBã¡ã¢ãªãç¡ãã£ãã®ã§ããŒã¿ãã«SSDã ãã§BIOSãã¢ããããŒãããæã®èšé²ãMSI / M-FLASH 察å¿ã ã¯ããã« åç¥ãšã OW ã§åºãŠããã¶ãã® BIOS æŽæ°ããã£ãŠèŠåãæãåºããã®ã§ã¢ããããŒããã åç¥ã®äºåã¢ããããããšããããããªè¡šç€ºããBIOSã®ã¢ãããªããŠããããšãªããã©ããããããªããã pic.twitter.com/l18o98Qlx1— Aki-Games / ããã²ãŒã 㺠(@gamesaki) January 12, 2026
âããã®ã〠Intel 第 13ã»14 äžä»£ CPU ã®äžå
·åä¿®æ£ã®ããã« BIOS ãã¢ããããŒãããããšãããããªããå€ãªå£ã«ã¶ã€ãã£ãã - BIOS ã®ç»é¢ã§ããŒããŒããèªèãããªã
- USB ã¡ã¢ãªãæå
ã«ãªã
- ææã¡ã®ããŒã¿ãã« SSDïŒ238GBïŒã¯ NTFS ãã©ãŒãããã§ããã®ãŸãŸã§ã¯äœ¿ããªã ãã®èšäºã§ã¯ããã®ç¶æ³ãå®éã«è§£æ±ºããæé ããã®ãŸãŸç޹ä»ããã
åãç¶æ³ã§ããã£ãŠãã人ã®åèã«ãªãã°ã --- åæã»ç°å¢ - ãã¶ãŒããŒã: MSI PRO B760-P DDR4 (MS-7D98)
- CPU: Intel Core i7-14700FïŒç¬¬ 14 äžä»£ïŒ
- BIOS æŽæ°åããŒãžã§ã³: 1.F7ïŒ2023 幎 11 æïŒ
- æŽæ°åŸããŒãžã§ã³: 1.F0ïŒv1F / 2025 幎 8 æïŒ
- 䜿çšããã¹ãã¬ãŒãž: ããŒã¿ãã« SSD 238GBïŒNTFSïŒ --- ãªã BIOS ãã¢ããããŒãããå¿
èŠããã£ãã æ°ã«ãªã£ãããããã¹ãã Intel 第 13ã»14 äžä»£ã®ãã¹ã¯ãããåã CPU ã«ã¯ãã¢ã€ãã«æã»è»œè² è·æã«éå°ãªé»å§ãªã¯ãšã¹ããçºçããCPU ã®å£åãã·ã¹ãã ã®äžå®å®ãåŒãèµ·ããäžå
·åãå ±åãããŠããã£ãœãã ãã®åé¡ã¯ãã€ã¯ãã³ãŒãïŒCPU å
éšã®ãã¡ãŒã ãŠã§ã¢ã®ãããªãã®ïŒã®ã¢ããããŒãã§ä¿®æ£ãããŠãããMSI 㯠BIOS ã«ä»¥äžã®ãã€ã¯ãã³ãŒããé æ¬¡çµã¿èŸŒãã§ããã | ãã€ã¯ãã³ãŒã | å
容 |
| -------------- | ------------------------------------------------------------ |
| 0x129 | CPU ãé«é»å§ããªã¯ãšã¹ãããåé¡ã®ä¿®æ£ |
| 0x12B | ã¢ã€ãã«ã»è»œè² è·æã®éå°é»å§ãªã¯ãšã¹ããä¿®æ£ïŒ0x129 ãå«ãïŒ |
| 0x12F | è»œè² è·æã® CPU å£åãããã«æå¶ | ææ°ã® v1F ã«ã¯ããããã¹ãŠã®ãã€ã¯ãã³ãŒããš ME ãã¡ãŒã ãŠã§ã¢ã®æŽæ°ãå«ãŸããŠããã --- åé¡ â ïŒMSI Center ã® Live Update ã« BIOS ã衚瀺ãããªã BIOS çŽãããããããªãã£ãã®ã§ GUI ãããããªããæå調ã¹ãŠãã MSI Center ã® Live Update â Advance ãéããšãBIOS ã®é
ç®ããªã LED ãã¡ãŒã ãŠã§ã¢ã®ã¿è¡šç€ºãããããããïœ åå : Live Update ããçŸåšã® BIOS ã«åé¡ããªãããšå€æããå ŽåãBIOS ã®æŽæ°ã衚瀺ããªãããšãããããã·ã¹ãã ã«åé¡ããªãå ŽåãMSI 㯠BIOS ã®æŽæ°ãæšå¥šããŸããããšããèµ€æåã®æ³šææžãããã®éãã 察åŠ: æåã§ MSI ã®ãµããŒãããŒãžãã BIOS ãã¡ã€ã«ãããŠã³ããŒãããŠé©çšããã --- åé¡ â¡ïŒBIOS ã®ç»é¢ã§ USB ããŒããŒããåããªã ããã¯æ¬ä»¶ãšã¯é¢ä¿ãªãããŸç°ã ãšæããã©äžå¿èšèŒã BIOS ã«å
¥ãããšããŠããUSB ããŒããŒããèªèãããæäœã§ããªãã åå : BIOS èµ·åæã¯ USB ã® Legacy ãµããŒããç¡å¹ã«ãªã£ãŠããããUSB 3.0 ããŒãã®åæåãéã«åããªãã±ãŒã¹ããããPS/2 ããŒããŒããäžéšã®å®äŸ¡ãª USB ããŒããŒãã¯èªèãããããããã²ãŒãã³ã°ããŒããŒããªã©å°çšãœãããå¿
èŠãªããã€ã¹ã¯èªèãããªãããšãå€ããããã 察åŠ: BIOS ã«å®å
šã«å
¥ããªããŠã BIOS ãæŽæ°ã§ãããM-FlashïŒCtrl+F5ïŒãã䜿ãïŒåŸè¿°ïŒã --- åé¡ â¢ïŒå€§å®¹é SSD ã FAT32 ã«ãã©ãŒãããã§ããªã æå
ã« DTM çšã®ããŒã¿ãã« SSD ãããªãã£ããUSB ãªããŠæã£ãŠãªããå
šéšã¯ã©ãŠãã ãã M-Flash 㯠FAT32 ãã©ãŒãããã®ã¹ãã¬ãŒãžããèªèããªããããã Windows ã®æšæºããŒã«ïŒãšã¯ã¹ãããŒã©ãŒã»diskpartã»PowerShell ã® Format-VolumeïŒã¯ãããã32GB ãè¶
ãããã©ã€ãã® FAT32 ãã©ãŒãããã«é察å¿ã > FAT32 ã¯ä»æ§äž 32GB ãŸã§ãã察å¿ããŠããªããããWindows ã¯ãã®å¶éããã®ãŸãŸå®ã£ãŠããã 解決çïŒSSD ã®äžéšã ã FAT32 ããŒãã£ã·ã§ã³ãšããŠåãåºã 238GB ã®ãã©ã€ããäžžããš FAT32 ã«ããã®ã¯ç¡çã§ãã1GB ã®å°ããããŒãã£ã·ã§ã³ãæ°ãã«äœã£ãŠããã FAT32 ã«ããã°åé¡ãªããBIOS ãã¡ã€ã«ã¯ 32MB çšåºŠãªã®ã§ 1GB ã§ååã --- å®éã®æé Step 1: BIOS ãã¡ã€ã«ã®ããŠã³ããŒã MSI ã®ãµããŒãããŒãžããèªåã®ãã¶ãŒããŒãã¢ãã«ãæ€çŽ¢ããææ°ã® BIOS ãã¡ã€ã«ãããŠã³ããŒãããŠè§£åããŠããã - MSI ãµããŒãããŒãž
- äŸ: ã®ãããªãã¡ã€ã«ãå«ãŸããŠãã Step 2: SSD ã« FAT32 ããŒãã£ã·ã§ã³ãäœæãã 管çè
æš©éã®ã³ãã³ãããã³ãããéããŠä»¥äžãå®è¡ã 衚瀺ããããã£ã¹ã¯äžèЧãããèªåã®ããŒã¿ãã« SSD ã®çªå·ã確èªããïŒãµã€ãºã§å€æããïŒã
çªå·ãééãããšå¥ã®ãã£ã¹ã¯ã®ããŒã¿ãæ¶ããã®ã§æ³šæã æ¢åã®ããŒãã£ã·ã§ã³ã 1GB çž®å°ããã ããã§ G ãã©ã€ããšã㊠1GB ã® FAT32 ããŒãã£ã·ã§ã³ãäœãããã Step 3: BIOS ãã¡ã€ã«ãã³ã㌠解åãã BIOS ãã¡ã€ã«ïŒ ãªã©ïŒã G ãã©ã€ãã®ã«ãŒãçŽäžã«ã³ããŒããããã©ã«ãããšã§ã¯ãªããã¡ã€ã«åäœã§çœ®ãããšã
ãŒãã¯äžåãã¹ã£ãã¯ããããã Step 4: M-Flash ã§ã¢ããããŒã PC ãåèµ·åããMSI ã®ããŽã衚瀺ãããã¿ã€ãã³ã°ã§ Ctrl+F5 ã飿 ããã M-Flash ãèµ·åããããã³ããŒãã BIOS ãã¡ã€ã«ãéžæããŠã¢ããããŒããå®è¡ãå®äºãŸã§é»æºãåããªãããšïŒ5 åçšåºŠïŒã > M-Flash ãšã¯: BIOS ã«å®å
šã«å
¥ããªããŠã BIOS ãæžãæãããã MSI ç¬èªã®æ©èœãPOSTïŒèµ·åæã®èªå·±èšºæïŒäžã«èµ·åãããããBIOS ã§ããŒããŒããèªèãããªãåé¡ãåé¿ã§ããã Step 5: ã¢ããããŒãã®ç¢ºèª åèµ·ååŸãWindows ã§ ãéã㊠BIOS ããŒãžã§ã³ã確èªããã ããŒãžã§ã³ãæŽæ°ãããŠããã°æåã Step 6: åŸçä»ãïŒä»»æïŒ äœæ¥çšã«äœã£ã 1GB ã® FAT32 ããŒãã£ã·ã§ã³ã¯äžèŠã«ãªãã®ã§ãå
ã«æ»ããŠããã ãã®åŸãšã¯ã¹ãããŒã©ãŒãããã©ã€ãã NTFS ã§åãã©ãŒãããããã°å
éãã --- 泚æäºé
ã»ãªã¹ã¯ - BIOS ã¢ããããŒãäžã«é»æºãåãããšããã¶ãŒããŒããèµ·åäžèœã«ãªãå¯èœæ§ãããã ããŒã PC ãªã AC ã¢ããã¿ãŒãå¿
ãæ¥ç¶ããã¹ã¯ããããªã UPS ãããã°çæ³çã
- BIOS ã¢ããããŒãåŸã¯èšå®ãããã©ã«ãã«ãªã»ãããããããšããããXMP ã®æå¹åãªã©ãã«ã¹ã¿ã èšå®ãããŠããå Žåã¯åèšå®ãå¿
èŠã
- diskpart ã®æäœã¯ãã£ã¹ã¯çªå·ãå¿
ã確èªããŠãã**å®è¡ããããšã誀ã£ããã£ã¹ã¯ãéžæãããšããŒã¿ãæ¶ããã
- ä»åã®æ¹æ³ã¯ MSI 補ãã¶ãŒããŒãã® M-Flash ãåæã«ããŠãããä»ã¡ãŒã«ãŒã§ã¯æäœãç°ãªãã®ã§å瀟ã®ããã¥ã¢ã«ãåç
§ã®ããšã --- ãããã« USB ã¡ã¢ãªããªããŠãã倧容éã®ããŒã¿ãã« SSD ãããªããŠãã工倫次第㧠BIOS ã¢ããããŒãã¯å®éã§ããŠããã£ãã Intel 13ã»14 äžä»£ã® CPU äžå
·åãæ°ã«ãªã£ãŠãã人ã»ããããããšãã®ã²ãŒã ã§èŠåããŠã¶ããŠå°ã£ãŠã人ã¯ããã²ææ° BIOS ãžã®æŽæ°ãæ€èšããŠã¿ãŠããåã¯è²¬ä»»åããªããã©....
ãããã ã
by reu · 2026/3/19
ãªããšãç ãã