# 5.1 Vue 3 による SPA 化と AI活用のポイント
バックエンド編では Django REST Framework を使った API 設計についてまとめた。
ここからはフロントエンド側、Vue 3 による SPA 化(Single Page Application) の取り組みを紹介する。
あわせて、実際に AI をコーディング補助に使う際の注意点も整理する。
1. なぜ SPA 化したのか
従来のサーバーレンダリング方式では、画面遷移のたびにページ全体がリロードされる。
その結果、以下の課題があった。
- ページ遷移の待ち時間が長い
- 一覧 → 詳細 → 一覧の繰り返し操作が重い
- 同時に複数の情報を見比べられない
SPA 化することで、これらの課題を解消できる。
必要なデータだけ API で取得し、画面を部分的に更新 するため、ユーザー操作が軽快になる。
2. Vue 3 を採用した理由
React や Angular もあるが、内製開発では 学習コストと直感性 を重視し Vue 3 を採用した。
-
シンプルな構文
→<template>/<script>/<style>が明確に分かれており、既存メンバーもすぐ慣れる -
Composition API
→ 業務画面特有の「複雑な状態管理」を整理しやすい -
コンポーネント設計が自然
→ フォーム、一覧、モーダルを部品化して再利用可能 -
豊富なUIライブラリ
→ Vuetify / Tailwind / ECharts などと相性が良い
3. SPA 化で得られた効果
-
操作感の向上
一日中操作してもストレスが少ない -
モバイル対応
タブレットでの利用もスムーズ -
複合画面構成が可能
一覧 + カレンダー + グラフ + チャットを同一画面にまとめられる -
バックエンドとUIの責務分離
Django は「堅牢なAPI」、Vue は「柔軟なUI」という分担が明確化
4. 改善例
検索画面
従来:
- 「検索」ボタン押下 → ページ全体リロード
- 再入力や再スクロールが必要
SPA 化後:
- 入力と同時に API 呼び出し
- 一覧部分だけが更新され、スクロール位置も保持
一覧+詳細
従来:
- 一覧と詳細が別画面
SPA 化後:
- 一覧の横に詳細モーダルを表示
- 遷移せずに複数レコードを連続確認できる
5. UI/UX 改善の工夫
-
レスポンシブ対応
PC では一覧、モバイルではカード表示に自動切替 -
UI の統一感
Vuetify / Tailwind でフォームやボタンを標準化 -
業務導線の設計
頻出操作を「左上」「右上」に配置し直感的に
6. 💡 AI活用のポイント
SPA 化と Vue 開発において、AI をコーディング補助に使うと便利だが注意点も多い。
-
フォルダパスのずれに注意
AI が生成するimportのパスはしょっちゅう間違っている。
→ 実際のsrc/components/...構成と突き合わせて必ず修正が必要。 -
親子コンポーネントの依存関係
親 → 子 → 孫とコンポーネントを分割したとき、AIは前回のやりとりの状態を覚えていないことが多い。
→ 古い props や emit の設計でコードを返してくるため、そのまま使うとバグる。 -
props/emit の受け渡しは要確認
AI はpropsの受け取りやemitの発火をよく間違える。
→ 「この子コンポーネントは親から何を受け取るか」「親にどのイベントを返すか」を毎回明示して伝える必要がある。 -
コンポーネント分割のジレンマ
- 細かく分割すれば保守性は上がるが、AIは全体を覚えられず不整合が出やすい
- 分割しないとコードが長大になり、AIが途中で省略したり精度が落ちる
→ 開発者自身が「どこまでを1コンポーネントにするか」の感覚を養うことが重要。
-
トレーニング感覚で付き合う
Vue のリアクティブ挙動やイベント発火順序は AI が単純化して考える傾向がある。
→ 実際には「watch が先に走る」「mounted が遅れる」などの違いで、AI提示コードがそのままでは動かないケースが多い。
開発者自身が「AIコードを土台にしつつ、自分で補正する」スキルを磨くことが前提になる。
まとめ
Vue 3 による SPA 化は業務システムの UI/UX を大きく改善する。
ただし、AI を活用する際は フォルダ構成・props/emit・コンポーネント分割粒度 などで必ずズレが出る。
👉 AIは雛形作成の相棒 として割り切り、最終的な正確さや一貫性は人間が担保する。
そうすることで、スピードと品質の両立が可能になる。
今後の記事では、より具体的に以下のテーマを掘り下げていく予定。
- Vue 3 + axios による API 呼び出し
- 状態管理(Pinia / Vuex)の設計パターン
- UI コンポーネント設計と再利用性
- 実際の業務画面(検索・一覧・詳細)の作り方
Discussion