← Posts

AI Land の中身 — Astro + R3F + Tailwind v4 でブログを作る

本文超軽量、ヒーローだけ 3D。Astro Islands を使って「重さ」を 1 セクションだけに閉じ込めるブログサイトの設計メモ。

· Wataru Takahashi · #astro#r3f#tailwind#design

設計のゴール

ヒーローは派手に、本文は軽く。

ブログでよくある失敗が「凝った 3D を入れた結果、記事ページまで重い」こと。 このサイトでは Astro Islands を使って、3D は トップページの hero セクションだけ に閉じ込めています。

レイヤーの分け方

レイヤー使っているもの役割
静的部分Astro本文・ナビゲーション・SEO
3D ヒーローReact Three Fiber + dreiヤシ・ロボット・ビーチ
アニメFramer Motionフェードイン・hover・stagger
ページ遷移View Transitions APIふわっと切り替え
スタイルTailwind CSS v4@theme で AI Land パレット

Astro Islands の使いどころ

<!-- index.astro -->
<HeroIsland client:load />     <!-- 即座にハイドレート -->
<PostCard client:visible />    <!-- ビューポートに入ったら -->
<ScrollHint client:idle />     <!-- アイドル時 -->

ポイント: 3D Canvas は client:load で即時、その他は client:visible で必要になってから。これで初回 JS バンドルが膨らみません。

prefers-reduced-motion を最初から尊重する

HeroIsland.tsx(prefers-reduced-motion: reduce) を見て、true なら 3D シーンを描画せずグラデーション背景にフォールバック。 アクセシビリティ的にも、モバイルバッテリー的にも親切。

なぜ Cloudflare Pages なのか

  • 無料枠が広い
  • ビルド npm run build をそのまま流せる
  • Edge で配信されるので海外読者にも速い
  • カスタムドメイン + 自動 HTTPS が秒で終わる

次のステップ

  • Phase 2: Supabase Auth + 投稿管理画面
  • Phase 3: 招待制マルチユーザー
  • Phase 4: LinkedIn 自動投稿

詳細は About ページ にも書いています。