Vue 3を体系的に学ぶロードマップ|初心者がリアクティブ・REST API・Swagger連携・Vuetifyまで理解する手順

プログラミング

※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。

Vue 3 を学び始めたとき、私がいちばん困ったのは「何から手をつければいいのか分からない」ことでした。リアクティブ、Composition API、Vue Router、Pinia、REST API、Swagger、Vuetify……単語は次々に出てくるのに、つながりが見えてこない。結局あちこちのページをつまみ食いして、毎回「これは Vue の話なのか、ライブラリの話なのか」で迷子になっていました。

このページは、そのときの自分に渡したかった「学ぶ順番の地図」です。単なる入門ではなく、最終的に業務アプリ(CRUD)を作れる状態をゴールに、基礎 → コンポーネント → API連携 → UI(Vuetify)→ 完成、という一本道で並べ直しました。各記事はこのページから順にたどれます。

※ 学習用に調べた内容を、個人的にわかりやすい形でまとめています。文章や図は AI の補助を受けながら作成しています。誤りに気づいたら都度直していきます。


このロードマップのゴール

最終的に、次のような小さな業務アプリ(題材はタスク管理)を自分で組み立てられる状態を目指します。

  • 一覧・詳細・登録・編集・削除(CRUD)の画面がある
  • ログイン状態を持ち、画面間で共有する
  • REST API と HTTP で通信し、JSON を画面に表示する
  • OpenAPI(Swagger)から TypeScript の API クライアントを生成する
  • Vuetify で見た目を整え、入力チェックと API エラー表示まで行う

ポイントは、「画面は状態の結果である」という考え方を最初に腹落ちさせることです。ここを飛ばして Vuetify や API 連携に進むと、不具合が「Vue の問題なのか・UIライブラリの問題なのか・API の問題なのか」を切り分けられなくなります(私はこれで何度もハマりました)。


全体像(5つのステップ)

ステップ学ぶことゴール
① 基礎Vueとは / リアクティブ / SFC / script setup状態が変われば画面が変わる仕組みを理解する
② コンポーネント設計 / props・emits・slots / Router / Pinia / composables画面を部品に分け、状態とロジックを整理する
③ API連携REST API / Swagger・OpenAPI / コード生成 / 設計型安全にバックエンドとつなぐ
④ UIVuetify導入 / フォーム・バリデーション実用的な画面に仕上げる
⑤ 完成CRUDアプリ①〜④を1つのアプリにまとめる

① 基礎クラスタ

まずは「Vue がそもそも何をしてくれるのか」と、その核であるリアクティブを理解します。ここが一番大事な土台です。

【Vue 3入門】Vueの全体像を徹底解説!初心者が押さえるべき特徴と基本概念
Vue.jsの全体像を徹底解説JavaScriptやTypeScriptを理解している方が次に学ぶべきフロントエンド技術として人気なのが Vue.js です。ReactやAngularと並ぶ主要なフレームワークでありながら、Vueはシンプル...
【Vue 3入門】リアクティブの基礎を徹底解説!ref・reactive・computed・watchの使い方
Vue.js リアクティブの基礎を徹底解説リアクティブの基礎、ある意味でここが本丸だと思います。Vue.jsの核となる仕組みが リアクティブシステム です。リアクティブを理解すれば、Vueが「なぜ直感的に使えるのか」が腑に落ち、実務での活用...
VueのSFCとは何か|.vueファイルの読み方(template/script/style)
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。Vue を学び始めて最初に「これは何だ?」と止まったのが .vue という見慣れない拡張子のファイルでした。開いてみると <template> と <script> と <...
【Vue 3】script setupで書く理由|Options APIとの違いと書き方
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。Vue 3 を調べ始めると、同じ「カウンター」のサンプルでも書き方が2種類出てきて戸惑いました。export default { data() {...} } と書くもの(...

② コンポーネント・状態管理クラスタ

画面を小さな部品に分け、親子のデータの受け渡し、ページ遷移、画面をまたぐ状態の共有、ロジックの再利用を学びます。

Vueコンポーネント設計の基本|画面を部品に分ける考え方
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。Vue に慣れてくると、次にぶつかるのが「1つの .vue ファイルがどんどん長くなって読めなくなる」問題でした。一覧・検索フォーム・削除ダイアログ…全部を1ファイルに書い...
Vueのprops・emits・slotsの使い分け|親子コンポーネント連携
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。コンポーネントを部品に分けると、次は「部品どうしをどうつなぐか」が問題になります。親から子へデータを渡したい、子で起きたクリックを親で受け取りたい、子の中身を親から差し替え...
Vue Routerでページ遷移を作る|一覧・詳細・登録・編集の基本
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。コンポーネントで画面の部品は作れるようになっても、「一覧ページから詳細ページへ移動する」ようなページの切り替えはどうやるのか、最初は分かりませんでした。Vue で作る SP...
Piniaはいつ必要か|propsだけでは足りない場面と状態管理の基本
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。ログイン中のユーザー名を、ヘッダーにもマイページにも表示したい。props で親から子へ、さらにその子へ…とデータを延々と手渡ししていく「バケツリレー」に、私はすぐ音を上げ...
composablesでロジックを再利用する|Vueの.vueを薄くする設計
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。コンポーネントを作り込んでいくと、.vue の <script setup> にデータ取得・ローディング管理・エラー処理…とロジックが溜まっていき、画面が読みにくくなります...

③ REST API・OpenAPI連携クラスタ

フロント(Vue)とバックエンド(REST API)の境界を理解し、OpenAPI(Swagger)から型安全な API クライアントを生成して呼び出す流れを学びます。実装寄りで、個人ブログでも検索で勝負しやすい領域です。

Vue 3でREST APIを呼び出す方法|fetch・axiosとJSON表示の基本
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。Vue でボタンや一覧を作れるようになると、次に出てくる壁が「サーバーのデータをどう表示するか」です。私も最初、Vue の中にデータを直接書いていて、「これ、どうやって本物...
SwaggerとOpenAPIの違いをわかりやすく|Vue連携の前に整理する
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。API 連携を調べると、必ず「Swagger」と「OpenAPI」が出てきます。私は最初、この2つを別物だと思って混乱しました。結論を先に言うと、OpenAPI は「仕様(...
OpenAPI GeneratorでTypeScript APIクライアントを生成する|Vue 3連携
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。前の記事で「OpenAPI ファイルは API の設計図」だと整理しました。ここからが面白いところで、その設計図(openapi.yaml)から TypeScript の型...
OrvalでOpenAPIからVue Query向けコードを生成する|Vue 3実務寄り
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。OpenAPI から型安全な API クライアントを生成できるようになると、次に「毎回 onMounted で取得して、ローディングとエラーを手で管理するの、地味に面倒だな...
生成APIクライアントをVueに直接書かない設計|repository層のすすめ
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。OpenAPI からクライアントを生成できるようになると、つい .vue の中で生成物を直接呼びたくなります。私も最初はそうしていました。でも API 仕様が少し変わっただ...
Vue 3のAPIエラー処理と認証トークンの扱い方|axios interceptor入門
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。正常系(データが取れる)は動くのに、いざ「ログインが切れた」「入力が弾かれた」「サーバーが落ちた」となると、とたんに何をどう扱えばいいか分からなくなりました。実務のアプリは...

④ UI(Vuetify)クラスタ

見た目を整える UI ライブラリ Vuetify は、あえて最後に入れます。先に状態と API を固めてから被せると、切り分けが楽になります。

VuetifyをVue 3に導入する|なぜ最後に入れるのか・最小セットアップ
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。Vuetify は Vue 用の UI コンポーネントフレームワークです。ボタン・入力欄・テーブル・ダイアログなどが最初から用意されていて、自分で CSS を書かなくても整...
Vuetifyのフォーム・入力チェック・API送信|v-formとrulesの基本
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。Vuetify を導入できたら、次は実用の山場である入力フォームです。ただ入力欄を置くだけでなく、「必須なのに空」「文字数オーバー」を弾き、送信中はボタンを押せなくし、サー...

⑤ 完成編

①〜④を1つにまとめ、REST API + OpenAPI + Vuetify でタスク管理アプリ(CRUD)を組み立てます。

Vue 3 + REST API + Swagger + VuetifyでCRUDアプリを作る|完成編
※ 当ブログ「日々是事始め(コレコト)」はプロモーションを含みます。このシリーズの総まとめです。これまで学んだ「リアクティブ・コンポーネント・REST API・OpenAPI・Vuetify」を1つにつなげ、小さなタスク管理アプリ(CRUD...

学ぶ順番のコツ(つまずいた人へ)

  • Vuetify は最初に入れない。UI で見た目が崩れると、Vue の問題かCSSの問題か区別できなくなります。
  • Pinia を最初から使わない。1画面で完結する状態は ref / reactive で十分。共有が必要になってから Pinia を足します。
  • 生成した API クライアントを .vue から直接呼ばない。repository / composable で包むと、API 仕様変更の影響を画面に波及させずに済みます。


もっと体系的に学ぶなら(書籍)

この記事はシリーズの一部です。TypeScript前提で Composition API・Pinia・Vue Router・テストまで一冊で体系的に学びたい方には、内容がそのまま重なる次の本がおすすめです。

検証環境(このシリーズのコードについて)

本シリーズのサンプルコードは、実際の Vite + Vue 3 プロジェクトに配置し、TypeScript の型チェック(vue-tsc)を通し、さらに実際のブラウザで画面が表示・描画されることを確認したうえで掲載しています(2026年7月時点)。確認に使った主なバージョンは次のとおりです。

Vue 3の動作確認デモ画面(Vuetify・SFCカウンター・props/emits・タスク一覧フォーム)
検証環境で実際にブラウザ表示したデモ画面。本シリーズの部品(Vuetify・SFCカウンター・props/emits・composable→repositoryのタスク一覧)が描画されている。
  • Vue 3.5 / TypeScript 6 / Vite 8(Node 22)
  • Vue Router 5 / Pinia 3 / Vuetify 4
  • @tanstack/vue-query 5 / axios 1 系

補足:サンプル中の @/... という import は、Vite の resolve.aliastsconfigpathssrc を指すよう設定したエイリアスです(プロジェクト作成時に設定します)。

※ 型チェックとブラウザでの表示確認までを行っています(すべての操作を網羅した自動テストではありません)。また OpenAPI Generator / Orval については、生成物を想定した型に対してコードを検証しており、生成コマンドの実行結果そのものではありません。

PR

Back to top
タイトルとURLをコピーしました