
Cursor AI 開発をマスターする!完全ガイド【応用編】
前回の「基礎編」では、Cursor の機能や使い方について紹介した。今回の「応用編」では、Cursor の AI 機能を使って実際にアプリケーションを構築していく。Cursor に不慣れな方は、スムーズに進めるためにまず基礎編から始めることをお勧めする:
今回の応用編では、「管理者は動画をアップロードして公開・販売でき、ユーザーはその動画を購入・視聴できる」Web アプリケーションを構築する。ここでは動画のみを扱うが、画像や音声などさまざまなコンテンツに応用できる。そして決済機能付き。とても実用的である。
Cursor AI 開発【応用編】で作る Web アプリケーションのデモ pic.twitter.com/ED7TPbEl3H
— komz (@komzweb) October 25, 2024
主要技術は次の通り:
フレームワーク:Next.js (App Router)
データベース:Supabase Postgres
ユーザー認証:Supabase Auth
ストレージ:Supabase Storage
決済システム:Stripe API
Next.js、Supabase、Stripe の組み合わせは様々な Web アプリケーション開発に使える。慣れておいて損はない。
今回 Cursor で使用する AI モデルは、Claude 3.5 Sonnet のみ。AI 機能は、Chat、Composer、Notepads にフォーカスする。
Cursor を使えば、今回のアプリケーションは 1 時間程度で作れるだろう。のんびりやっても半日あれば完成するはずだ。
どの AI 機能でどのようなプロンプトを使用するか、そしてどのような結果になるかを本文中でたくさん紹介するので、是非参考にしていただきたい。
それでは早速、Cursor AI 開発を始めよう。
最初の準備
Supabase と Stripe のアカウントを持っていない場合は、作成しておく。Stripe の本番環境利用申請はスキップして良い。
プロジェクトの作成
ターミナルで次のコマンドを実行して、Next.js プロジェクトを作成する:
npx create-next-app@latest
What is your project named? cursor-advanced
Would you like to use TypeScript? Yes
Would you like to use ESLint? No
Would you like to use Tailwind CSS? Yes
Would you like to use `src/` directory? No
Would you like to use App Router? (recommended) Yes
Would you like to customize the default import alias (@/*)? No
今回は、TypeScript、Tailwind CSS、App Router の使用は「Yes」を選択する。プロジェクト名やその他の構成は好きに設定していただいて構わない。
UIの実装
ホームとその他いくつかのページの UI を作成しよう。UI の生成には、v0 か Claude をお勧めする。Next.js プロジェクトだから v0 一択だろうと思考停止せずに、Claude も試してほしい。最近は Claude の UI 生成品質がかなり上がってきており、v0 より質の高いものを生成してくれることがある。
「自身の動画をアップロードして公開・販売でき、ユーザーはその動画を購入・視聴できる Web アプリケーションの UI を生成してください」
というプロンプトで生成した結果、今回は Claude の方が出来が良かったので、そちらを採用することにした。他の UI も Claude で統一する。
ホーム UI
ホームには、先ほどのプロンプトで生成された UI を使用する。プロジェクトのルートディレクトリにある page.tsx を、まるっと UI のコードに置き換えて見てみよう:

アプリケーション名を「TechTube」と変更したのみで、他はそのままのコードを使用している。
インポートエラー(shadcn/ui のセットアップと各コンポーネントのインストール)については、GitHub に記載している。
追加メモ:Claude 3.5 Sonnet v2 では、以前よりも正確なコマンドが生成されるようになった。ターミナルで Cmd K (Ctrl K) を使用し、Sonnet v2 を選択して「shadcn のセットアップ」で実行しても良い。
ブラウザで確認するには、ターミナルで npm run dev コマンドを実行して、http://localhost:3000 にアクセスする。これで上の画像と同じ結果を確認できるはずだ。
ログイン・新規登録 UI
このままの流れで、ユーザー認証ページも作成してしまおう。Claude で次のプロンプトを入力して生成する:
「メールアドレス・パスワードでのログインと、GitHub ログインのオプションを備えたログインページおよび新規登録ページを作成してください」
また、新規登録後のメール確認案内ページも作成しておこう。プロンプトはそのままで良い:
「新規登録後のメール確認を促すページを作成してください」
これらのページを Next.js で作成しよう。この程度の作業は手動でやった方が早いので AI は使わない。app/ ディレクトリに、login/page.tsx、signup/page.tsx、email-verification/page.tsx を作成し、それぞれに生成した UI のコードをコピペする。

では、ホーム、ログイン、新規登録ページをリンクしてみよう。ここでようやく AI 機能を使用する。Chat でも良いが、ここでは Composer を使う。さらにいくつか具体的な指示が必要なので、Notepads も使ってみよう。
Chat と Composer の使い分けについて
- Chat: AI との会話がメインの機能だが、コードの作成・修正・適用だけでなく、新しいファイルの自動生成、Notepads の追加も可能なので、かなり幅広く使用できる。基本は Chat で良いだろう。
- Composer: やることが明確であり、具体的な指示をもとに、より直接的に何かを作りたい場合は Composer が適している。
Cmd + Shift + i (Win: Ctrl + Shift + i) で Composer をフル画面で開いて、画面左上「NOTEPADS」エリアの「+」ボタンで新しい Notepad を作成する。タイトルは「Auth Pages」としたが何でも良い。そして入力エリアに具体的な指示を入力する:

1. ホームページにヘッダーを追加して、`h1`タグをそこに移動してください
2. ホームのヘッダーにログインボタンを追加してください
3. ログインボタンから`/login`ページにジャンプできるようにしてください
4. `/login`ページと`signup`ページをリンクしてください
5. `/login`ページと`signup`ページの下部に、ホームに戻るためのリンクを配置してください
次は、Composer でこの Notepad を使用する。「COMPOSERS」エリアに「Untitled composer」がすでにあると思うので、それをクリック。入力エリアの「+」ボタンで、使用するファイル(ホーム、ログイン、新規登録の page.tsx、そして Auth Pages)を選択。最後に「Notepad の指示通りに実行してください」と入力して Enter を押す:

実行が完了したら「Accept all」の前に「Save all」して結果を見てみよう:

ホームにヘッダーエリアが作成され、ログインボタンも追加されている。また、ログインページと新規登録ページ間も移動できるようになり、ホームに戻るリンクも追加されている。すべて Notepad の指示通り実行されている。素晴らしい。
問題なければ、「Accept all」してコードの変更を承認する。
ボタンのスタイルなど細い修正が必要な場合は、Chat や Cmd K を使用して修正すれば良い。
メモ:生成したコードがうまく機能するかを試してから、コードを適用するか否かを判断したい時は、先に「Save / Save all」して動作を確認してから、「Accept (all) | Reject (all)」すれば良い。Chat の場合は、Apply > Save >(動作チェック)> Accept | Reject の手順で行う。意外と知らない人が多い便利技。
メモ:Accept 前に Save する場合、Composer を閉じるとコードの Apply が解除されてしまう。もし閉じてしまった場合は、再度 Composer を開いて「Reapply (all)」を実行すれば再適用できる。生成コードが適用されないエラーが生じた場合にも Reapply は有効。
メモ:入力エリアでファイルを追加する際、「+」から選択しても良いが、「/」を入力して「Reference Open Editors」を指定すると、現在エディタで開いているファイルを全て追加してくれる。割と便利なので、状況に応じて使い分けよう。
ここから先は
¥ 800

応援していただけると、私のやる気がモリモリ大盛りご飯 3 杯分になります🍚🍚🍚!ぜひ一口、いや一押しお願いします!