なぜ現代のウェブにダークモードが必須なのか?
夜、部屋の明かりを消してスマホを操作している時、突然白背景に黒文字の従来型ウェブサイトを開いたら、その眩しい光であなたは一瞬で目を潰され、次の瞬間には即座にタブを閉じることになるでしょう。
AppleがiOSとmacOSシステムに「ダークモード」を正式導入して以来、テクノロジー界の美的感覚は根本から覆されました。 今や、洗練されたビジネスウェブサイトがダーク/ライトモード切り替え機能を提供していないと、前世紀の遺物のように感じられる時代です。多くのエンジニアが受託開発で「サイト全体のダークモード対応」を追加すれば、報酬を2〜3万円上乗せできることも珍しくありません。
従来のCSS時��では、ダークモード実装は悪夢でした。全てのフォントカラー、背景色、ボーダー色を複製し、.darkタグを追加する必要があり、コードは冗長で煩雑になりがちでした。
しかしTailwind CSS + Vibe Codingの世界では、これが涙が出るほど簡単に実現できます。
Tailwind CSSの闇魔法:dark:プレフィックス
Tailwindには超強力な仕組みが組み込まれています:条件修飾子(Modifiers)。
変更したい色のプロパティに、単にdark:というプレフィックスを追加するだけ。ウェブページがダークモードに切り替わると、Tailwindが自動的にそれを有効化します。
最も直感的な例を見てみましょう:
<!-- これは色が変わるボタンです -->
<button class="bg-white text-black dark:bg-black dark:text-white">
注文する
</button>
- ライトモード時:このボタンは
bg-white(白背景)とtext-black(黒文字)が適用されます。後ろのdark:呪文は自動的に無視されます。 - ダークモード時:魔法が発動!Tailwindが暗闇を感知し、
dark:bg-black(黒背景)とdark:text-white(白文字)が即座に前面の色を上書きします。
これはつまり、1つのHTMLタグ内で昼と夜の見た目を同時に記述できることを意味します。Vibe Coderにとって、これはメンテナンス性が極めて高い神レベルの設計なのです!
実戦Vibe Prompt:太陽/月ボタンのシームレス切り替え
Reactプロジェクトでこのダーク/ライトモードを実際に動作させるには、「トグル(Toggle)」ボタンが必要です。 ユーザーがクリックすると、ページの右上で太陽が月に変わり、背景全体が滑らかに暗転するようにします。
あなたのプロジェクトで、CursorにこのUI呪文を唱えてください:
【ダークモード切り替えボタン Vibe Prompt】 Next.js(App Router)とTailwind CSSを使用して開発中です。
ThemeToggle.tsxというClient Componentを作成してください。 要件:
- ダーク/ライトモード状態管理に
next-themesパッケージを使用(未インストールの場合は警告を表示)。- このコンポーネントは円形ボタンとする。
- 現在がライトモード(
light)時は黄色い太陽アイコンを表示(lucide-reactのSunアイコン使用)。- 現在がダークモード(
dark)時は白色の月アイコンを表示(lucide-reactのMoonアイコン使用)。- ボタンクリック時には滑らかな回転アニメーションを付与(
transition-transform duration-500)。- Hydration Mismatchエラーを防ぐため、
useEffectでマウント後にのみアイコンをレンダリング。- 詳細な日本語コメントを付記すること。
AIが生成した神級シームレス切り替えボタン:
'use client'; // クライアントサイドで実行するコンポーネント宣言
import { useTheme } from 'next-themes';
import { Sun, Moon } from 'lucide-react';
import { useEffect, useState } from 'react';
export default function ThemeToggle() {
const { theme, setTheme } = useTheme();
const [mounted, setMounted] = useState(false);
// クライアントサイドマウント後にのみレンダリングし、Reactハイドレーションエラーを防止
useEffect(() => {
setMounted(true);
}, []);
if (!mounted) return <div className="w-10 h-10" />; // ローディング中のプレースホルダー
return (
<button
onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}
className="p-2 rounded-full bg-gray-200 dark:bg-gray-800 transition-colors duration-300 hover:scale-110"
aria-label="Toggle Dark Mode"
>
{/* ダークモード時は月、ライトモード時は太陽を表示し、回転エフェクトを追加 */}
{theme === 'dark' ? (
<Moon className="w-6 h-6 text-yellow-300 animate-[spin_0.5s_ease-in-out]" />
) : (
<Sun className="w-6 h-6 text-yellow-500 animate-[spin_0.5s_ease-in-out]" />
)}
</button>
);
}
このボタンをページの右上(ナビゲーションバー)に配置してください。 クリックした瞬間、サイト全体の背景、テキスト、カードの色調が1秒以内に高級感あるダークスタイルに変化します。
この機能はフリーランス市場において、クライアントを「驚嘆」させる追加ポイントとなることが多いです。 TailwindとAIの力を借りれば、CSSを一切書かずにこの高級ビジネス機能を完成させられます。
次章では、さらに難しい挑戦を行います:AIに直接3つの全く異なる「ビジネススタイルテンプレート」を生成させ、同一コードベースで3つの異なるクライアントに販売できる技を伝授します!