Cursor実装体験(コード生成デモ)

フロントエンド生成(React)

Cursorへの自然言語指示のみで、EcoMarketの商品一覧コンポーネントを自動生成

Cursor - ProductList.jsx
import React, { useState, useEffect } from 'react';
import { Card, Badge, Button } from '../components/ui';
import { fetchProducts } from '../api/products';

const ProductList = ({ categoryFilter }) => {
  const [products, setProducts] = useState([]);
  const [loading, setLoading] = useState(true);
  
  useEffect(() => {
    const loadProducts = async () => {
      setLoading(true);
      try {
        const data = await fetchProducts(categoryFilter);
        setProducts(data);
      } catch (error) {
        console.error('商品の読み込みに失敗しました', error);
      } finally {
        setLoading(false);
      }
    };
    
    loadProducts();
  }, [categoryFilter]);

  // 💡 Cursor AI提案: Suspenseを使った非同期データ取得に改善できます
  
  return (
    <div className="eco-products grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
      {loading ? (
        Array(6).fill().map((_, i) => (
          <Card key={`skeleton-${i}`} className="animate-pulse" />
        ))
      ) : (
        products.map(product => (
          <Card key={product.id} className="product-card">
            <img src={product.image} alt={product.name} className="mb-2 rounded-t" />
            <div className="p-4">
              <Badge color={product.inStock ? 'green' : 'red'}>
                {product.inStock ? '在庫あり' : '在庫なし'}
              </Badge>
              <h3 className="text-lg font-semibold mt-2">{product.name}</h3>
              <p className="text-gray-600">¥{product.price.toLocaleString()}</p>
              <Button onClick={() => addToCart(product)} 
                     disabled={!product.inStock}>
                カートに追加
              </Button>
            </div>
          </Card>
        ))
      )}
    </div>
  );
};

export default ProductList;

コンポーネント設計の自動提案

MVCパターンに適したコード構造を自動生成

リアルタイム最適化提案

パフォーマンス向上のためのコード改善を自動提案

生成UI プレビュー

自動レンダリング
在庫あり

エコバッグ(オーガニック素材)

¥1,980

在庫あり

ステンレスボトル(保温)

¥3,480

在庫なし

竹製食器セット

¥2,480

バックエンド生成(API)

Kiroの設計書を読み込ませるだけで、必要なAPIルート・コントローラを自動生成

Cursor - productController.js
// EcoMarket API - 商品管理コントローラ
const Product = require('../models/Product');
const { validationResult } = require('express-validator');
const logger = require('../utils/logger');

/**
 * 商品一覧を取得
 * @param {Object} req - Expressリクエストオブジェクト
 * @param {Object} res - Expressレスポンスオブジェクト
 */
exports.getProducts = async (req, res) => {
  try {
    const { category, sort, limit = 20, page = 1 } = req.query;
    const skip = (page - 1) * limit;
    
    // クエリビルダー
    let query = {};
    if (category) query.category = category;
    
    // ソート条件
    let sortOption = {};
    if (sort === 'price_asc') sortOption = { price: 1 };
    else if (sort === 'price_desc') sortOption = { price: -1 };
    else sortOption = { createdAt: -1 }; // デフォルトは新着順
    
    // DBクエリ実行
    const products = await Product.find(query)
                                  .sort(sortOption)
                                  .skip(skip)
                                  .limit(Number(limit));
    
    // 総件数取得(ページネーション用)
    const total = await Product.countDocuments(query);
    
    res.status(200).json({
      success: true,
      data: products,
      pagination: {
        total,
        page: Number(page),
        pages: Math.ceil(total / limit)
      }
    });
  } catch (err) {
    logger.error(`商品一覧取得エラー: ${err.message}`);
    res.status(500).json({
      success: false,
      error: '商品情報の取得に失敗しました'
    });
  }
};

セキュリティ対策自動実装

バリデーション、エラーハンドリングを自動付加

APIスキーマ自動生成

OpenAPI/Swagger形式のAPIドキュメント自動作成

Cursor実装デモの実行手順

  1. 1 Kiro生成の設計書(design.md)をCursorにインポート
  2. 2 Cursorに「商品一覧のUIとAPIを実装」と指示するだけ
  3. 3 コードレビューや最適化提案もAIが自動実行
  4. 4 必要に応じて修正指示を出し、調整を繰り返す
要件定義 設計 実装 テスト

SE向けAI開発技術レクチャーシリーズ

© 2025 Tech Innovation Team