Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
290
ハーネスエンジニアリング白書
kubotak
0
140
Laravelにはdeleted_atがありますけど?
kubotak
2
120
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
2.5k
情報漏洩させないための設計
kubotak
6
3.2k
Svelteコンポーネントの依存関係に秩序を〜
kubotak
0
250
DMARCレポート可視化ツールを SvelteKitで作った話
kubotak
2
710
Superforms本番投入で分かった良さとハマりどころ
kubotak
0
1.1k
Storybookを書くだけでリグレッションテストが 実行される世界へようこそ
kubotak
31
12k
Other Decks in Programming
See All in Programming
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
180
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
440
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
340
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
930
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.2k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
220
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.8k
wkhtmltopdfの次どうするか問題2026
willnet
2
1.7k
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
360
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5k
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
560
30 Presentation Tips
portentint
PRO
1
410
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
490
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
Designing for humans not robots
tammielis
254
26k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
340
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Making Projects Easy
brettharned
120
6.8k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
540
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Ethics towards AI in product and experience design
skipperchong
2
380
RailsConf 2023
tenderlove
30
1.6k
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