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
Vue Composition APIのコードを見やすくする
Search
watsuyo_2
March 17, 2021
1
280
Vue Composition APIのコードを見やすくする
watsuyo_2
March 17, 2021
Tweet
Share
More Decks by watsuyo_2
See All by watsuyo_2
Migrating to Vue 2.7 for safe and improve development efficiency / 安全に開発効率を上げるための Vue_2.7 移行
watsuyo_2
0
390
OSS の変遷を振り返る
watsuyo_2
1
160
Notion RSS Readerを OSSとして公開した話
watsuyo_2
2
1.6k
Notion RSS Reader
watsuyo_2
0
740
iCAREにおけるデザイナーとフロントエンドエンジニアのコラボレーション
watsuyo_2
1
6.2k
iCARE と Vue.js と コンポーネント設計 と デザインシステムの話
watsuyo_2
1
550
Vue3 Breaking Changes
watsuyo_2
1
170
Qiitaの記事をメンション付きで<br>共有できるPWA<br>thanks-mentionsを作った🎉🎉
watsuyo_2
0
81
~今からでも始められる。開発チームを立ち上げてオリジナルサービスを作ってみよう!~
watsuyo_2
0
46
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
How to Ace a Technical Interview
jacobian
276
23k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Large-scale JavaScript Application Architecture
addyosmani
510
110k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Docker and Python
trallard
42
3.1k
Transcript
【iCARE Dev Meetup #19】Front-End 最 新アーキテクチャ Vue Composition APIのコー ドを⾒やすくする
2021/03/17 Tsuyoshi Hirosawa @watsuyo_2 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 1
#icare_meetup のツイート or YouTube のコメント で 質問、感想等のリアクションを随時募集中 【iCARE Dev Meetup
#19】Front-End 最新アーキテクチャ 2
誰が喋ってる? @watsuyo_2 Tsuyoshi Hirosawa Front-End Engineer Nuxt.js Vue.js TypeScript 【iCARE
Dev Meetup #19】Front-End 最新アーキテクチャ 3
誰が喋ってる? ひたすら ミートアップの宣伝してました 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 4
誰向け? Composition APIをこれから導⼊する⼈ Composition APIを導⼊していて、他社の知⾒を知りたい⼈ 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ
5
宣伝 iCAREのフロントエンドは Vue Composition API TypeScript GraphQL で開発しています 詳細はWantedlyの採⽤ページ https://www.wantedly.com/projects/54
9145 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 6
iCARE と Vue Composition API 2020年10⽉ iCAREに⼊社 既にComposition APIで書かれているコードが有りました 現在は、フロントエンドメンバーは全員がComposition
APIを触ったことがある 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 7
今⽇話すこと CompositionAPIのおさらい Composition APIを⽤いた開発の課題 フロントエンド組織にとってComposition APIとは? CompositionAPIのコードを⾒やすくする提案 【iCARE Dev Meetup
#19】Front-End 最新アーキテクチャ 8
CompositionAPIのおさらい 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 9
CompositionAPIのおさらい メリット ロジックの抽出と再利⽤しやすい モジュール化しやすい 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 10
Options API 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 11
Composition API TypeSctiptの世界 reactive関数でstateを定義 関数・incrementを定義 → retunする Vue.js側でimport 【iCARE Dev
Meetup #19】Front-End 最新アーキテクチャ 12
CompositionAPIのおさらい モジュール化しやすい 再利⽤性が⾼く、Reactivityを保ったコード use〇〇といったモジュールに切り出す 状態と振る舞い(更新処理など)を画⾯から切り離して書きやすくなった (隠蔽する設計にしやすくなった) 【iCARE Dev Meetup #19】Front-End
最新アーキテクチャ 13
そんなにコード量は 変わっていない ? 出典: https://github.com/vuejs/rfcs/blob/mas ter/active-rfcs/0013-composition- api.md 【iCARE Dev Meetup
#19】Front-End 最新アーキテクチャ 14
Composition APIを⽤いた開発の課題や悩み 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 15
Composition APIを⽤いた開発の課題や悩み Options API時代のスキルが役に⽴たないのでは? Vue.jsとはいえ、学習コストもかかるし、実装コストも⾼いのでは? ビジネス要求と setup()やロジックをどこに書くのがいいのか? 【iCARE Dev Meetup
#19】Front-End 最新アーキテクチャ 16
Options API時代のスキルが役に⽴たないのでは? Vue.jsとはいえ、学習コストもかかるし、実装コストも⾼いのでは? 社内勉強会、ペアプロで解決 Composition APIで実装するかの判断をルール化 基本はComposition APIで書く スケジュールや実装者スキルによってはOptions APIで書く
現在のiCAREのフロントエンドメンバーは全員Composition APIの 実装を経験済み 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 17
21Stepで体得 Vue.jsハンズオン 勉強会参加者は、全員買いました 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 18
ここでタイトル回収... Vue CompositionAPIのコードを⾒やすくするには ? 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 19
Composition API コンポーネントの作り⽅ の基本 setup() ref() reactive() computed() etc... 【iCARE
Dev Meetup #19】Front-End 最新アーキテクチャ 20
これでも動きますが、 Composition APIのメリットほぼ無いですよね 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 21
setup()がfatにするのは本末転倒だし 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 22
setup()のダイエット 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 23
たしかにダイエットはできたが... 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 24
Vueファイルにロジックが存在する時点で、 責務の分離ができていないのでは ? 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 25
TS(TypeScript)ファイルにロジックを寄せよう 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 26
【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 27
Vueファイルからロジックは消えた! 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 28
Vueファイルからロジックは消えた! 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 29
改めて。。。 iCAREで、Vue CompositionAPIを書いてみた経験を 踏まえてコードを⾒やすくするためのTips 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 30
①ピュアなTypeScriptの別ファイルにロジックを分ける setup()内でしか使⽤できないingect、provideに注意 全てをTSファイルに分ければ良いわけではない そのコードがたまたま重複しただけかもしれない 今後、そのロジックに変更が⼊るかもしれない 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ
31
②Vue.jsの世界とTypeScriptの世界を分けて考える Options APIまでは、ほとんどがVue.jsの世界だった Vue.jsだから動くコードから、TypeScript(React)でも動くコードへ ここが学習コストが上がった所以 ? 【iCARE Dev Meetup #19】Front-End
最新アーキテクチャ 32
③use◦◦とon〇〇な関数のTS切り出しルールを明確に する 何でもかんでも関数名をuse◦◦にしがち use**を使うパターン 値と振る舞い(更新処理など) on〇〇 それ以外のクリックイベントや状態を持たない関数は、on〇〇なdの名前rにする 【iCARE Dev Meetup
#19】Front-End 最新アーキテクチャ 33
④無理してComposition APIで書かない しかし、TypeScriptはマストで書く ビジネス観点やスケジュール、実装者スキルを踏まえて Composition API or Options APIを選択する Vue.extendsでTypeScriptは使える
→ よりよい型推論を求めて、Composition APIへ 【iCARE Dev Meetup #19】Front-End 最新アーキテクチャ 34