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
Vue Composition APIのコードを見やすくする
Search
watsuyo_2
March 17, 2021
340
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vue Composition APIのコードを見やすくする
watsuyo_2
March 17, 2021
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
650
OSS の変遷を振り返る
watsuyo_2
1
220
Notion RSS Readerを OSSとして公開した話
watsuyo_2
2
2k
Notion RSS Reader
watsuyo_2
0
920
iCAREにおけるデザイナーとフロントエンドエンジニアのコラボレーション
watsuyo_2
1
6.8k
iCARE と Vue.js と コンポーネント設計 と デザインシステムの話
watsuyo_2
1
670
Vue3 Breaking Changes
watsuyo_2
1
320
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Scaling GitHub
holman
464
140k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Tell your own story through comics
letsgokoyo
1
1.1k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
610
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
980
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
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