【Next.js】ユーザーを1秒も待たせない。「loading.js」で作る、ストレスフリーな爆速Web体験の裏側
ユーザーを1秒も待たせない。「loading.js」で作るストレスフリーなWeb体験
こんにちは!Obsidianに学習記録を溜め込むのが快感になってきた、午年エンジニアの筆者です。
「ページをクリックしたのに、画面が真っ白なまま数秒待たされる……」 これ、ユーザーが最もストレスを感じて離脱する瞬間です。
Next.js(App Router)なら、この問題を解決する**「loading.js」**という魔法のファイルがあります。これ一つ置くだけで、どんなに重い処理の間も、ユーザーを退屈させません。
💡 1. 置くだけで動く loading.tsx
実装は驚くほど簡単です。各フォルダに loading.tsx という名前のファイルを置くだけ。
自動検知: Next.jsが「あ、このページは読み込みに時間がかかっているな」と判断した瞬間、このファイルの中身を身代わりとして表示してくれます。
TypeScript
// app/blog/loading.tsx
export default function Loading() {
return (
<div className="flex justify-center items-center h-screen">
<div className="animate-spin h-10 w-10 border-4 border-blue-500 rounded-full border-t-transparent"></div>
<p className="ml-4 text-lg font-semibold">データを読み込んでいます...</p>
</div>
)
}
これだけで、ユーザーには「今、頑張って動いていますよ!」という安心感を与えられるのです。
💡 2. 「ストリーミング」の凄さ
Next.jsは、ページ全体が出来上がるのを待たずに、「準備ができたパーツから順番に」 ブラウザに送り込みます(ストリーミング)。
まず「ヘッダー」を表示
次に loading.js の内容を表示
重い「メインコンテンツ」が完成次第、中身を差し替える
この「動き」があるUIが、サイトの「プロっぽさ」を演出します。
📚 「待たせない」設計をUXの視点から学ぶ
技術だけでなく「人がどう感じるか」を知ると、エンジニアとしての価値が跳ね上がります。UIデザインの心理学を学ぶなら、この一冊がバイブルです。
🐎 大切な「資産」を守る、物理バックアップの安心感
GitHubにコードを上げ、Obsidianにメモを溜める。その大切なデータを「物理的」にも手元に残しておきたい大人世代のあなたへ。午年の勢いで書いた大切な記録を、万が一のトラブルから守りましょう。
📝 21日目の課題
app/blog フォルダに loading.tsx を作成し、Tailwindで簡単なスピナーを作ってみましょう。
Server Componentの中で、わざと await new Promise(resolve => setTimeout(resolve, 3000)) と書いて、3秒間ローディングが表示されるか試してください。
その「安心感」を体験したら、Amazonアソシエイトリンクを添えて、noteで共有しましょう!
#Nextjs #React #100DaysOfCode #Web制作 #UXデザイン #GitHub #Amazonアソシエイト
