ブログに Scrap(技術メモ)機能を追加しました。
Zenn のスクラップのように、日々の気づきやエラー解決ログを短く残すための場所です。
使い方
scraps/ ディレクトリに Markdown ファイルを置くだけです。
---
title: メモのタイトル
date: YYYY-MM-DD
tags: [tag1, tag2]
---
本文は Markdown で自由に書けます。コードブロックにも対応しています。
日々の気づきやエラー解決ログを短く残すメモ帳
ブログに Scrap(技術メモ)機能を追加しました。
Zenn のスクラップのように、日々の気づきやエラー解決ログを短く残すための場所です。
scraps/ ディレクトリに Markdown ファイルを置くだけです。
---
title: メモのタイトル
date: YYYY-MM-DD
tags: [tag1, tag2]
---
本文は Markdown で自由に書けます。コードブロックにも対応しています。
App Router の fetch はデフォルトで積極的にキャッシュされる。開発中に API レスポンスが古いまま返ってきて原因究明に時間がかかった。
キャッシュを無効にしたい場合は cache: 'no-store' を渡す。
const res = await fetch('/api/data', { cache: 'no-store' });
再検証間隔を指定したい場合は next.revalidate を使う。
const res = await fetch('/api/data', { next: { revalidate: 60 } }); // 60秒ごと
generateStaticParams 内の fetch は SSG 時に 1 度だけ実行される。動的データを使いたい場合は Route Handler 経由にする必要がある。
React の cache() と Next.js の fetch キャッシュは別物なので混同しないように注意。
satisfies 演算子を使うと、型チェックをしつつ型を広げずに推論させられる。
const palette = {
red: [255, 0, 0],
green: '#00ff00',
} satisfies Record<string, string | number[]>;
// NG: as や明示的な型注釈だと string | number[] になる
palette.green.toUpperCase(); // OK — string として推論される
palette.red.at(0); // OK — number[] として推論される
as const との組み合わせも強力。オブジェクトのキーが特定の型に合致することを保証しながら、値の型は可能な限り絞り込める。
ライブラリの設定オブジェクト定義や、定数マップを書くときに重宝している。