pinia について
Vue 3 アプリで Pinia による状態管理を行うためのリファレンススキルです。ストア、SSR、プラグイン、テスト、Vuex からの移行を例と API 資料で扱います。
主な機能
- 01defineStore() によるストア作成
- 02状態、ゲッター、アクションの管理
- 03Composition API と Options API
- 04SSR とプラグインのガイド
- 05ストアのテストと Vuex 移行
活用シーン
- 01Vue 3 アプリへの状態管理の追加
- 02Pinia ストアの作成や構成
- 03SSR または Pinia プラグインの設定
- 04ストアのテストや Vuex からの移行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ full-stack-skills/ vue-skills --skill piniaインストール後、Claude Code で/piniaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlapi/@pinia/nuxt/index.mdapi/@pinia/nuxt/interfaces/ModuleOptions.mdapi/@pinia/nuxt/variables/default.mdapi/@pinia/testing/index.mdapi/@pinia/testing/functions/createTestingPinia.mdapi/@pinia/testing/interfaces/TestingOptions.mdTestingPinia.mdapi/pinia/index.mdapi/pinia/enumerations/MutationType.mdapi/pinia/functions/acceptHMRUpdate.mdcreatePinia.mddefineStore.mddisposePinia.mdgetActivePinia.mdmapActions.mdmapState.mdmapStores.mdmapWritableState.mdsetMapStoreSuffix.mdapi/pinia/interfaces/Store.mdStoreActions.mdStoreDefinition.mdStoreGetters.mdStoreProperties.mdStoreState.mdexamples/cookbook/composables.mdcomposing-stores.mdhot-module-replacement.mdindex.md詳細
このスキルを使用するタイミング
ユーザーが次のことを希望する場合は、いつでもこのスキルを使用します。
- Vue 3 アプリケーションで Pinia による状態管理をセットアップする
- defineStore() でストアを作成する
- 状態、ゲッター、アクションを扱う
- Composition API で Pinia を使用する
- Options API で Pinia を使用する
- Pinia で SSR(サーバーサイドレンダリング)を実装する
- Pinia プラグインを作成して使用する
- コンポーネントでストアにアクセスする
- コンポーネント間で状態を共有する
- プラグインで状態を永続化する
- Pinia ストアをテストする
- Vuex から Pinia に移行する
このスキルの使い方
このスキルは、Pinia の公式ドキュメントの構成に沿って整理されています(https://pinia.vuejs.org/introduction.html、https://pinia.vuejs.org/core-concepts/、https://pinia.vuejs.org/api/)。Pinia を使う際は、次の手順に従ってください。
-
ユーザーのリクエストからトピックを特定します。
- Introduction/紹介 →
examples/introduction/ - Core Concepts/核心概念 →
examples/core-concepts/ - Cookbook/レシピ →
examples/cookbook/ - SSR/サーバーサイドレンダリング →
examples/ssr/ - API Reference/API リファレンス →
api/
- Introduction/紹介 →
-
examples/ディレクトリから適切なサンプルファイルを読み込みます。Introduction(紹介) -
examples/introduction/:examples/introduction/introduction.md
Core Concepts(コアコンセプト) -
examples/core-concepts/:examples/core-concepts/actions.mdexamples/core-concepts/defining-a-store.mdexamples/core-concepts/getters.mdexamples/core-concepts/index.mdexamples/core-concepts/outside-component-usage.mdexamples/core-concepts/plugins.mdexamples/core-concepts/state.md
Cookbook(レシピ) -
examples/cookbook/:examples/cookbook/composables.mdexamples/cookbook/composing-stores.mdexamples/cookbook/hot-module-replacement.mdexamples/cookbook/index.mdexamples/cookbook/migration-v1-v2.mdexamples/cookbook/migration-v2-v3.mdexamples/cookbook/migration-vuex.mdexamples/cookbook/options-api.mdexamples/cookbook/testing.mdexamples/cookbook/vscode-snippets.md
SSR(サーバーサイドレンダリング) -
examples/ssr/:examples/ssr/index.mdexamples/ssr/nuxt.md
-
必要に応じて、
api/ディレクトリの API リファレンスドキュメントを参照します。Pinia Core API -
api/pinia/:api/pinia/enumerations/MutationType.mdapi/pinia/functions/acceptHMRUpdate.mdapi/pinia/functions/createPinia.mdapi/pinia/functions/defineStore.mdapi/pinia/functions/disposePinia.mdapi/pinia/functions/getActivePinia.mdapi/pinia/functions/mapActions.mdapi/pinia/functions/mapState.mdapi/pinia/functions/mapStores.mdapi/pinia/functions/mapWritableState.mdapi/pinia/functions/setMapStoreSuffix.mdapi/pinia/index.mdapi/pinia/interfaces/Store.mdapi/pinia/interfaces/StoreActions.mdapi/pinia/interfaces/StoreDefinition.mdapi/pinia/interfaces/StoreGetters.mdapi/pinia/interfaces/StoreProperties.mdapi/pinia/interfaces/StoreState.md
@pinia/nuxt -
api/@pinia/nuxt/:api/@pinia/nuxt/index.mdapi/@pinia/nuxt/interfaces/ModuleOptions.mdapi/@pinia/nuxt/variables/default.md
@pinia/testing -
api/@pinia/testing/:api/@pinia/testing/functions/createTestingPinia.mdapi/@pinia/testing/index.mdapi/@pinia/testing/interfaces/TestingOptions.mdapi/@pinia/testing/interfaces/TestingPinia.md
-
構文、構成、ベストプラクティスについては、該当するサンプルファイルの具体的な指示に従います。
重要な注意事項:
- すべてのサンプルは Pinia のベストプラクティスに従っています
- 該当する場合、サンプルには JavaScript 版と TypeScript 版の両方が含まれています
- 各サンプルファイルには、パラメーター、戻り値、よくあるエラー、ベストプラクティス、使用例が含まれています
- ベストプラクティスとよくあるパターンについては、必ずサンプルファイルを確認してください
-
必要に応じて、公式ドキュメントを参照します。
- Introduction: https://pinia.vuejs.org/introduction.html
- Core Concepts: https://pinia.vuejs.org/core-concepts/
- API Reference: https://pinia.vuejs.org/api/
ベストプラクティス
- defineStore() を使用する:ストアの作成には常に defineStore() を使用します
- ストアの命名:内容がわかりやすいストア ID を使用します
- 状態の構造:可能な限り、状態をフラットで正規化された構造にします
- ゲッター:状態から導出される計算値にはゲッターを使用します
- アクション:非同期処理やミューテーションにはアクションを使用します
- TypeScript:型安全性を確保するために TypeScript を使用します
- ストアの構成:大きなストアは、機能を絞った小さなストアに分割します
- SSR:サーバーサイドレンダリングには適切な SSR 設定を使用します
- プラグイン:横断的な関心事にはプラグインを使用します
- テスト:ストアとアクションのテストを作成します
リソース
- 公式ドキュメント:https://pinia.vuejs.org/
- はじめに:https://pinia.vuejs.org/introduction.html
- コアコンセプト:https://pinia.vuejs.org/core-concepts/
- API リファレンス:https://pinia.vuejs.org/api/
- GitHub リポジトリ:https://github.com/vuejs/pinia
キーワード
Pinia, 状態管理, ストア, Vue 3, Composition API, Options API, defineStore, state, getters, actions, plugins, SSR, サーバーサイドレンダリング, TypeScript, Vuex からの移行, 状態管理, ストレージ, コンポジション API, オプション API, プラグイン, サーバーサイドレンダリング, 型サポート