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 / Vue 開発でやりがちな 「読みづらい」「わかりづらい」コード
Search
ショウノシオリ
July 24, 2019
Programming
0
240
Nuxt / Vue 開発でやりがちな 「読みづらい」「わかりづらい」コード
2019年7月24日 vkansai
ショウノシオリ
July 24, 2019
Tweet
Share
More Decks by ショウノシオリ
See All by ショウノシオリ
開発チームのリーダーとしてどうあるべきか?
sshono1210
3
1.2k
Nuxt.js のディレクトリ
sshono1210
0
2.9k
Nuxt.js で SSR 対応する
sshono1210
1
2.3k
array_merge と array_push の違いについて
sshono1210
0
550
全くデザインを勉強したことのないエンジニアが「なるほどデザイン」を読んで少しだけ勉強した話
sshono1210
0
250
Vue.js の methods と computed
sshono1210
0
120
すぐに使える ES2015 の基本構文3つ
sshono1210
0
89
肌で感じたディレクションとマネジメント
sshono1210
0
83
Vue.jsで遊んでみよう
sshono1210
0
98
Other Decks in Programming
See All in Programming
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
2
240
チームをチームにするEM
hitode909
0
440
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
Graviton と Nitro と私
maroon1st
0
160
Patterns of Patterns
denyspoltorak
0
420
愛される翻訳の秘訣
kishikawakatsumi
3
370
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
160
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
330
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
140
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
390
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.4k
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
440
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
40
Automating Front-end Workflow
addyosmani
1371
200k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
The Cult of Friendly URLs
andyhume
79
6.7k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.8k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
0
400
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
49k
GraphQLとの向き合い方2022年版
quramy
50
14k
My Coaching Mixtape
mlcsv
0
21
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
The Curse of the Amulet
leimatthew05
0
6.8k
Facilitating Awesome Meetings
lara
57
6.7k
Transcript
Nuxt / Vue 開発でやりがちな 「読みづらい」「わかりづらい」コード 株式会社chatbox エンジニア ショウノシオリ
v-if がめちゃくちゃ多い
props 渡しまくる
動くけど 「読みづらい」「分かりづらい」 コードになってしまっていることがある
「読みやすくする」「分かりやすくする」 にはどうすればいいか?
事例① v-if が多すぎる 問題点 ▷ DOM の見通しが悪くなる ▷ 書くのも面倒 ▷
ディレクティブに渡す値の変更に弱い
事例① の改善案 ロジック層を分離する ▷ 可読性アップ ▷ 「見た目」と「ロジック」に分けて考 えられる
事例② props を渡しすぎる 問題点 ▷ 子 → 親 に返す時が面倒になったりする (form
データとか) ▷ 子 の方にも props を書かないといけなのが面倒 ▷ 共通コンポーネントの props を増やしてしまうと、そ のコンポーネントを使っているページでの対応が必 要になったりする
事例② の改善案 意味のあるデータはまとめて渡す ▷ 子側で必要なプロパティが増えた時のことも考慮 ▷ プロパティは詳細に定義するほうがよい (渡し忘れたときにエラーとなって気付けるので) ▷ 場合によってはコンポーネント側でAPI発行もあり
事例③ 親子間での受け渡しフローがバラバラ イベントの発火、データを持つコンポーネントが親コンポーネントだったり、 子コンポーネントだったりする 問題点 ▷ 親でも子でも大抵動くようにコードを書くことはできるが、毎回探すのが 大変 ▷ 共通コンポーネントにしたときに困ることも
▷ 基本「子コンポーネントは親コンポーネントに使われる部品で、 描画に集中させる」と考える ▷ vuex も適切に利用すると良い ◦ ただし、vuex の管理コストとの兼ね合いを考慮 事例③
の改善案 基本は親にもたせる、実行させる
事例は色々あるけど そもそも...
Nuxt.js / Vue で 「読みづらい」「わかりづらい」 コードになってしまう原因は?
「役割」をよく考えずに なんとなく書いてしまっている からでは
Nuxt / Vue は自由度が高い 「なんとなく」でも それっぽく書けてしまう...
▷ 親コンポーネント と 子コンポーネント ▷ template / script / style
▷ ディレクトリ構成 ▷ ファイル名 ... それぞれに役割がある
構造的に責務が分割されていても コードを書く人が守れてないと勿体無い
「読みづらさ」「わかりづらさ」 を生み出すかどうかは開発者次第
その自由度に振り回されないよう 「どこに何をかくか」 「どうやって実装するか」 を考えることが大事
学習コストが低く、 手軽に導入しやすい Nuxt / Vue
コードの設計をよく考えて 最大限に活かそう
Thanks! Any questions? You can find me at: @username
[email protected]