Vue.js/Nuxt×AI開発:Composition APIの効率的な実装

AIを知りたい

Vue.jsのComposition APIってOptions APIと全然書き方が違いますよね。data、methods、computedで分けていたのが全部setup関数内に入るのが混乱します…

AIエンジニア

Composition APIへの移行は確かに学習コストがありますが、AIを使えばOptions APIのコードをComposition APIに自動変換できます。mixinsの依存関係を解析してcomposablesに変換し、ロジックの分離・再利用性の向上まで一括で対応してくれます。特にmixinsの名前衝突問題がcomposablesで解消されるのは大きなメリットです。

AIを知りたい

NuxtのautoImportとかuseAsyncDataとか、独自の仕組みも多くて覚えるのが大変です。ドキュメントを読んでも使いどころがピンときません。

AIエンジニア

Nuxtの独自機能もAIは正確に理解して最適なコードを生成してくれます。useFetch、useAsyncData、useState、definePageMeta、ミドルウェアなど、Nuxt固有のAPIをフル活用したコードを出力します。useFetchとuseAsyncDataの使い分け(外部APIにはuseFetch、内部ロジックにはuseAsyncData)など、ドキュメントでは分かりにくい判断もAIが適切に行ってくれます。

Vue.js/Nuxt×AI開発とは

Vue.js/Nuxt×AI開発とは、AIツールを活用してVue.js(Composition API)およびNuxt 3アプリケーションの開発を効率化する手法です。composablesの設計、Piniaによる状態管理、Nuxt固有のデータフェッチング(useFetch/useAsyncData)、auto-imports、SSR設定まで、Vue/Nuxtエコシステムの広範な機能をAIが支援します。

Options APIからComposition APIへの移行はAIの得意分野で、data/methods/computed/watchの構造をsetup関数内のref/reactive/computed/watchに自動変換してくれます。mixinsからcomposablesへの変換も、依存関係を正確に解析して行ってくれるため、移行時のバグリスクを最小化できます。Nuxt 3のファイルベースルーティング、自動インポート、サーバーAPI(server/api/)の活用もAIがフル対応しています。

Options API vs Composition API比較

AIを知りたい

Options APIとComposition APIの違いを具体的に整理してもらえますか?移行すべきかどうかの判断材料にしたいです。

AIエンジニア

コードの構造が根本的に異なります。AIはどちらの形式も完全に理解しているので、相互変換もリファクタリングも正確に行えます。2026年時点ではComposition APIが公式推奨で、新規プロジェクトではComposition APIを使うのが標準です。

特徴 Options API Composition API
コード構造 data/methods/computed等で機能別に分類 機能(関心事)ごとにまとめて記述
ロジック再利用 mixins(名前衝突のリスクあり) composables(安全に再利用可能)
TypeScript対応 △ 型推論が弱い(thisの型付けが困難) ◎ 完全な型推論が効く
学習コスト 低い(直感的でVue 2経験者に馴染む) 中程度(関数的・リアクティブ思考が必要)
テスタビリティ △ コンポーネント丸ごとテストが必要 ◎ composable単位でユニットテスト可能
大規模での保守性 △ 機能横断的なコードが散在しがち ◎ 関心事ごとにまとまり読みやすい

composablesの設計パターン

AIを知りたい

composablesってどう設計すればいいんですか?useXxxという命名だけは知っているのですが中身の設計が分かりません。

AIエンジニア

AIに「ユーザー認証のcomposableを作って。ログイン、ログアウト、トークンリフレッシュを含めて」と指示するだけで、適切な設計パターンのcomposableを生成してくれます。ref/reactiveの使い分け、computed、watchの適切な配置まで含めた実用的なコードが手に入ります。

// AIが生成するcomposable例
// composables/useAuth.ts

export function useAuth() {
  // Nuxtのグローバルステート(SSR対応)
  const user = useState<User | null>("auth-user", () => null);
  const token = useCookie("auth-token", { maxAge: 60 * 60 * 24 * 7 });
  const isAuthenticated = computed(() => !!user.value);
  const isAdmin = computed(() => user.value?.role === "admin");

  async function login(email: string, password: string) {
    const { data, error } = await useFetch("/api/auth/login", {
      method: "POST",
      body: { email, password },
    });
    if (error.value) throw createError({ message: "認証に失敗しました" });
    user.value = data.value?.user ?? null;
    token.value = data.value?.token ?? null;
    return data.value;
  }

  async function logout() {
    await useFetch("/api/auth/logout", { method: "POST" });
    user.value = null;
    token.value = null;
    await navigateTo("/login");
  }

  async function refreshToken() {
    const { data } = await useFetch("/api/auth/refresh", { method: "POST" });
    if (data.value) token.value = data.value.token;
  }

  return { user, token, isAuthenticated, isAdmin, login, logout, refreshToken };
}

Piniaストア設計のAI活用

AIを知りたい

状態管理はPiniaを使えばいいんですか?composablesとの使い分けが分かりません…

AIエンジニア

Vue 3ではPiniaが公式推奨の状態管理ライブラリです。グローバルに共有する状態はPinia、コンポーネントローカルなロジックはcomposablesで管理するのが基本です。AIにプロジェクト構成を見せれば、状態の配置先を自動で判断して最適な設計を提案してくれます。

AIを知りたい

PiniaのOptions Store形式とSetup Store形式はどちらがいいですか?

AIエンジニア

Composition APIとの一貫性を考えるとSetup Store形式(Composition API風の記法)がおすすめです。composablesと同じ書き方ができるため学習コストが下がりますし、TypeScriptの型推論も効きやすくなります。AIはSetup Store形式で生成するのが得意で、ref/computed/functionで構成されたシンプルなストアコードを出力してくれます。

用途 composables推奨 Piniaストア推奨 判断基準
ユーザー認証状態 アプリ全体で参照するグローバル状態
フォームバリデーション フォームコンポーネント内のローカルロジック
ショッピングカート 複数ページで参照・変更するデータ
APIデータフェッチ useFetchラッパーとしてローカルに使用
通知・トースト管理 どの画面からでも発火するグローバル機能
テーマ切り替え アプリ全体のUI設定

Nuxt 3固有機能のAI活用

AIを知りたい

Nuxt 3のserver/api/ディレクトリでバックエンドAPIも書けるんですか?

AIエンジニア

はい。Nuxt 3にはNitroサーバーエンジンが内蔵されており、server/api/ディレクトリにファイルを置くだけでAPIエンドポイントが自動生成されます。AIに「ユーザーCRUD APIをNuxt server/apiで作って」と依頼すれば、ファイルベースルーティング、リクエストバリデーション(zod使用)、エラーハンドリングを含む完全なAPIが生成されます。フロントエンドとバックエンドを一つのプロジェクトで管理できるため、型の共有も容易です。

まとめとして、Vue.js/Nuxt開発はAI支援により学習コストを大幅に削減できます。特にOptions APIからComposition APIへの移行、composablesの設計、Nuxt固有のAPIの活用はAIが非常に得意とする領域です。「この画面のロジックをcomposableに抽出して」「Options APIのコードをComposition APIに変換して」と一言伝えるだけで、再利用性の高いコードに変換してくれます。PiniaとcomposablesのR使い分けもAIが自動判断してくれるので、状態管理の設計に迷うことがなくなります。

関連記事