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
290
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
440
OSS の変遷を振り返る
watsuyo_2
1
160
Notion RSS Readerを OSSとして公開した話
watsuyo_2
2
1.7k
Notion RSS Reader
watsuyo_2
0
750
iCAREにおけるデザイナーとフロントエンドエンジニアのコラボレーション
watsuyo_2
1
6.3k
iCARE と Vue.js と コンポーネント設計 と デザインシステムの話
watsuyo_2
1
560
Vue3 Breaking Changes
watsuyo_2
1
190
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
The Cult of Friendly URLs
andyhume
78
6.2k
Faster Mobile Websites
deanohume
306
31k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Bash Introduction
62gerente
610
210k
Into the Great Unknown - MozCon
thekraken
35
1.6k
It's Worth the Effort
3n
184
28k
Thoughts on Productivity
jonyablonski
69
4.5k
Site-Speed That Sticks
csswizardry
3
370
Automating Front-end Workflow
addyosmani
1367
200k
Facilitating Awesome Meetings
lara
51
6.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
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