はじめに
前回の第1回記事では、TauriとNext.js(App Router構成)を使ったデスクトップアプリの開発環境を整えました。
今回はその続きとして、Tauri TodoアプリのUIを構築します。Tailwind CSSは初期設定で導入済みのため、TailwindCSSを使って簡単なデザインも実装していきます。
UI構成の概要
作成する画面には以下の要素を含めます。
- アプリ名と説明を表示するヘッダー
 - Todo入力フォームと追加ボタン
 - 入力されたTodoをカード形式でリスト表示
 
ディレクトリ構成(App Router + src配下)
Next.js App Router構成では以下のような配置になります。
/src
├── app
│   └── page.tsx
├── components
│   └── TodoCard.tsx
TodoCardコンポーネントの実装
src/components/TodoCard.tsx に以下のようなUIを記述します。
'use client';
import { useState } from "react";
export default function TodoCard() {
  const [task, setTask] = useState("");
  const [todos, setTodos] = useState<string[]>([]);
  const handleAdd = () => {
    if (!task.trim()) return;
    setTodos([...todos, task.trim()]);
    setTask("");
  };
  return (
    <div className="max-w-xl mx-auto mt-20 p-8 bg-white rounded-2xl shadow-xl border border-gray-200">
      <h1 className="text-3xl font-bold mb-2 text-center text-gray-800">My Todo App</h1>
      <p className="text-center text-gray-500 mb-6">今日やることを整理しましょう</p>
      <div className="flex items-center gap-2 mb-6">
        <input
          type="text"
          className="flex-1 px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 text-black"
          placeholder="タスクを入力..."
          value={task}
          onChange={(e) => setTask(e.target.value)}
        />
        <button
          onClick={handleAdd}
          className="bg-blue-500 hover:bg-blue-600 text-white font-semibold px-4 py-2 rounded-lg transition duration-150"
        >
          追加
        </button>
      </div>
      <ul className="space-y-2">
        {todos.map((todo, index) => (
          <li
            key={index}
            className="px-4 py-3 bg-blue-50 border border-blue-100 rounded-lg text-gray-800 shadow-sm"
          >
            {todo}
          </li>
        ))}
      </ul>
    </div>
  );
}
実行結果
- 中央に白いカードUIが表示される
 - タスク入力後にリスト表示され、見た目も整っている
 - モバイルでも快適に操作可能
 
トップページへの組み込み
src/app/page.tsx にコンポーネントを読み込み、ページに表示させます。
import TodoCard from "@/components/TodoCard";
export default function Home() {
  return (
    <main className="bg-gradient-to-br from-blue-50 to-white min-h-screen py-10 px-4">
      <TodoCard />
    </main>
  );
}
実行結果
ページを起動すると、簡単にテキストを入力するだけのTodo UIが表示されます。簡単なUIについてはTailwind CSSを活かしています。

まとめ
今回は、Next.js App Router構成に沿った簡単なTodoリストUIの構築を行いました。
次回は、Todoの削除機能やローカル保存など、より実用的な機能の実装を行います。TauriとRustの力を活かして、ネイティブアプリらしいデータ永続化処理を組み込んでいきましょう。
今回簡単に使ったTailwind cssのデザインで参考になるコンポーネント集もぜひ活用してください:
👉 https://tailwindui.com/
  
  
  
  