Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Nuxt.jsでCompositionAPIを使う
Search
kubotak
February 25, 2020
Programming
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nuxt.jsでCompositionAPIを使う
Roppongi.vue#5 LT
kubotak
February 25, 2020
More Decks by kubotak
See All by kubotak
僕も、PHPフレームワーク作ってみた
kubotak
0
250
ハーネスエンジニアリング白書
kubotak
0
99
Laravelにはdeleted_atがありますけど?
kubotak
2
120
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
2.4k
情報漏洩させないための設計
kubotak
6
3.2k
Svelteコンポーネントの依存関係に秩序を〜
kubotak
0
240
DMARCレポート可視化ツールを SvelteKitで作った話
kubotak
2
690
Superforms本番投入で分かった良さとハマりどころ
kubotak
0
1.1k
Storybookを書くだけでリグレッションテストが 実行される世界へようこそ
kubotak
31
12k
Other Decks in Programming
See All in Programming
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
510
AIの中の人になってみる
htkym
0
130
Go 1.27 における memory allocation の高速化
andpad
0
330
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
7.8k
Hono + Inertia + React で LP を構築した話
oukayuka
2
170
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
150
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
230
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
170
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
220
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
270
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
440
typoなんかねぇよ
raspython3
0
560
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
390
Statistics for Hackers
jakevdp
799
230k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
650
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
220
A designer walks into a library…
pauljervisheath
211
24k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
How to Talk to Developers About Accessibility
jct
2
530
Transcript
Copyright © M&A Cloud All rights reserved. Roppongi.vue #5 @KenjiroKubota
Nuxt.jsでCompositionAPIを使う 1
Copyright © M&A Cloud All rights reserved. Profile 2 久保田
賢二朗 kubotak-is kubotak_public kenjiro.kubota 株式会社M&Aクラウド所属 PHP JavaScript Go Scala
Copyright © M&A Cloud All rights reserved. 3 PR
Copyright © M&A Cloud All rights reserved. 前置き 4 LaravelからNuxt.jsへ
Laravel(PHP)で作られたサイトをNuxt.jsに移行 LaravelでHTTP APIを作成し、Nuxt.jsでフロントエンドを作る ❏ フロントエンドはVue.jsを使っていたので学習コストが低いだろうと Nuxt.jsを選定 ❏ 型安全の恩恵を受けるためにTypescriptで開発 ❏ Vue.js version3で導入が決まっているCompositionAPIを利用
Copyright © M&A Cloud All rights reserved. 前置き 5 Composition
APIについては詳しく話さない もうみんな耳にタコができるくらい聞いていると思うのでCompositionAPIについ ては詳しく話しません。
Copyright © M&A Cloud All rights reserved. お品書き Nuxt.js +
CompositionAPI 6 1 Nuxt.js + Typescript + Composition API 2 Nuxt.js + Vuex 3 Vuex + CompositionAPI
Copyright © M&A Cloud All rights reserved. Nuxt.js + Typescript
7 Typescript Nuxt.jsをTypescriptで開発する ためにNuxt Typescriptを利用し てスケルトンを作成
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 8
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 9 pluginsディレクトリにこんな感じのファイルを作成
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 10 nuxt.config.tsのpluginsに作成したファイルを指定
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 11
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 12 SFCで普通にComposition APIが利用できる ※2020/02現在ではCompositionAPIライブラリが必須
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 13 @nuxt/types/app/vue.d.tsにNuxt.js特有のSFCプロパティ の定義があるのでTypescriptの恩恵を受けられる
Copyright © M&A Cloud All rights reserved. 14 (o`・ω・´σ)σ 普通に使えそうやん と思ったが
Copyright © M&A Cloud All rights reserved. 15 (o`・ω・´σ)σ 普通に使えそうやん と思ったが
そんなことはなかった _:(´ཀ`」 ∠):
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 16 Nuxt.js + Composition APIの問題点 Nuxtはサーバーサイドレンダリングの際に、サーバーサイドで取得し たデータをHTMLのscriptタグにwindow.__NUXT__.~に出力して、ク ライアントサイドでステートをマッピングすることができるが CompositionAPIを利用した際にはうまく出力されなかった・・・ (書き方を間違えているかもしれないのでホントはできるぞという方は 後で連絡ください)
Copyright © M&A Cloud All rights reserved. Nuxt.js + Composition
API 17 Nuxt.js + Composition APIの問題点 templateに埋め込んでHTMLとしてサーバーサイドレンダリングはされ るのでSEOとしては利用できるが、その出力した変数情報は空になって しまうのでAPI通信などでデータ取得してる場合はクライアントサイド でも再度取得しなければならない・・・
Copyright © M&A Cloud All rights reserved. 18 ( ー`дー´) ならばVuex
Copyright © M&A Cloud All rights reserved. Nuxt.js + Vuex
19 Nuxt.jsにはVuexコアが組み込まれている Vuexについてはみなさんもうご存知と思うので詳しく説明しません。 Nuxt.jsではstoreディレクトリにあるファイルをVuexとしてインポート する仕組みを持っている。 ここで状態管理がされたステートはwindow.__NUXT__.~を利用してク ライアントサイドでステートを引き継ぐことができる
Copyright © M&A Cloud All rights reserved. Nuxt.js + Vuex
20 VuexとTypescript Nuxt.jsでVuexをTypescriptで扱う場合は大きく以下の2パタンある • クラスベース • Vanilla
Copyright © M&A Cloud All rights reserved. Nuxt.js + Vuex
21 クラスベース vuex-module-decorators を利用する
Copyright © M&A Cloud All rights reserved. Nuxt.js + Vuex
22 Vanilla Vuexに用意されている型 定義を利用して素朴に記 述する
Copyright © M&A Cloud All rights reserved. 23 クラスベースに慣れてないので Vanillaを採用
Copyright © M&A Cloud All rights reserved. Nuxt.js + Vuex
24 nuxt-typed-vuex Vuexで型定義の恩恵を受けられるライブラリがあるらしいが検証でき てない(懇親会があったら聞きたかった・・・!)
Copyright © M&A Cloud All rights reserved. 25 ( ゚д゚
)あれ? Composition APIは?
Copyright © M&A Cloud All rights reserved. Vuex + Composition
API 26 SFC Composition API Vuex SFCから直接Vuexにdispatchやgettersを実行せず、CompisitionAPI側 にVuexとの接続を隠蔽
Copyright © M&A Cloud All rights reserved. Vuex + Composition
API 27 なぜCompositionAPIを挟むのか • 現状でVuexとのやりとりが文字ベースなので型情報が失われるの でCompositionAPIで型を定義し直す ◦ nuxt-typed-vuexで解決するかも • SFCが依存するものをCompositionAPIだけに制限したい • 将来的にサーバーとクライアントのステート共有が CompositionAPIだけになったらいいなという期待 • クライアントサイドだけで非同期通信して値を取得する場合は Vuexを使わず、CompositionAPIだけで完結させている
Copyright © M&A Cloud All rights reserved. Vuex + Composition
API 28
Copyright © M&A Cloud All rights reserved. Vuex + Composition
API 29 Vuexを利用している場合はCompositionAPIは右から左に バケツリレーするだけ
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 30 先程の構成のCompositionAPIをテストする(Jest)
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 31 LocalVueにVuexとCompositionAPIを登録
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 32 VuexStoreの登録
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 33 モジュールモードで登録されるように加工
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 34 APIレスポンスのモックを作成
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 35 モックの差し込み
Copyright © M&A Cloud All rights reserved. Vuex + Composition
APIのテスト 36 簡単でしたね?
Copyright © M&A Cloud All rights reserved. まとめ 37 まとめ
• Nuxt.js+CompositionAPIはサーバーサイドとクライアントサイド でのステート共有においてまだ使えないが、既存の仕組み(Vuex) と組み合わせることで問題なく使える • 懇親会で色々聞きたかった人生
Copyright © M&A Cloud All rights reserved. 38