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
コードフォーマッタを導入して プロジェクト内に平穏をもたらす話 / 20191025-v-ok...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
girigiribauer
October 25, 2019
Technology
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コードフォーマッタを導入して プロジェクト内に平穏をもたらす話 / 20191025-v-okinawa
エモい話はもうしません!
girigiribauer
October 25, 2019
More Decks by girigiribauer
See All by girigiribauer
SVG だけで Web サイトを作ってみた話 / 20261030-niigata-5min-tech
girigiribauer
0
61
続・BlueskyとXにクロスポストするツールを作った / 20260619-niigata-5min-tech
girigiribauer
0
97
Figma デザインを自動マークアップさせた記録と肌感 / 20260425-nagaoka-tech-junction-1
girigiribauer
0
110
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
340
移動は善 / 20260124-NGK2026S
girigiribauer
1
240
Google Antigravity を使ってみた肌感 / 20251130-ai-craft-hacks-niigata
girigiribauer
0
120
なんとなく使っていたクリップボードの不思議 / 20250926-niigata-5min-tech
girigiribauer
1
110
タスクにもストック型・フロー型があるということに Todoist を使い始めて気づいた話 / 20250725-niigata-5min-tech
girigiribauer
0
110
Bluesky のフィードを作ろう / 20250620-niigata-5min-tech
girigiribauer
0
94
Other Decks in Technology
See All in Technology
思考過程から秘密が漏れる:Amazon Bedrock上のKimi K3を5つの方法で攻めたら、25回中22回漏洩した話
yama3133
1
110
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.1k
PostgreSQL オプティマイザ統計の秘密
nori_shinoda
1
460
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
120
evcc & Home Assistant
naltatis
0
500
公共分野での生成AI活用
toru_kubota
1
320
SSFの現在地 ― CAEP/RISCからAI Identityへ
oidfj
0
380
分析作業をどこまで任せるか自分で決められる AIネイティブBI『Golden Analytics』が 良さげな話 /golden-analytics-is-ai-native-bi
shinyaa31
0
140
Agent Harnessはどう作る?事例から学ぶAI Agentの設計思想
sergicalsix
0
240
Gifu WordPress Meetup #200 に向けて、私たちには何ができるだろうか?/ 2026-11-07 Gifu WordPress Meetup
torounit
0
250
AWS Quick 入門 | 目指せ Quick マスター 01
inariku
PRO
2
290
81天的 AI Agent 軟體開發團隊治理實務分享
regionbbs
0
150
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.7k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
460
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Prompt Engineering for Job Search
mfonobong
0
580
SEO for Brand Visibility & Recognition
aleyda
0
4.9k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
680
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
600
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
560
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
300
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.4k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Transcript
コードフォーマッタを導入して プロジェクト内に平穏をもたらす話 2019/10/25 v-okinawa Vue.js/Nuxt.js meetup #2 @girigiribauer
None
初心者向けと 書いてあったので・・・ • Βͳ͍ਓ͕ಋೖͨ͠Β ײಈ͢ΔΛ͍ͨ͠ • ίʔυϑΥʔϚολͷಋೖɺ ಋೖίετʹൺͯϝϦοτ͕ ѹతʹେ͖͍ͷͰॳ৺ऀ΄Ͳ͓͢͢Ίʂ ʢखಈઃఆΊΜͲ͍͚Ͳɾɾɾʣ
今日しない話 • ΤϞ͍ • ઌ݄ v-sendai ͰΤϞ͍ͯ͠͠·ͬͯ ল͍ͯ͠Δɾɾɾ
コードフォーマッタの ある世界線、ない世界線 • ίʔυϑΥʔϚολɺͬͯ·͔͢ʁ ྫ: gofmt (from https://play.golang.org/ʣ
(ない世界線・・・) • ͬͪ͜͜͜Ͱվߦͯ͠ΔΜ͔ͩΒɺ ͬͪ͜͜͜ͰվߦͰ͠ΐʂͳΜͰ ೖͬͯͳ͍ͷʁ • ɺΠϯσϯτ͍ͭ4Ͱॻ͍ͯͨ ͔Βɺ͍͍ͭͭͬͪ͜Ͱ4Ͱίϛο τͪ͠ΌͬͨʢͯΖ •
ෳߦͷ࠷ޙͷཁૉɺίϯϚೖΕͨΒ ԼʹཁૉՃͨ͠ͱ͖͕ࠩग़ͳ͍ɺ ͚ͲΈΜͳ͕ΈΜͳೖΕͯ͘Εͳͯ͘ ਏ͍ɾɾɾ const a = [ 1, 2, // <= here ] const a = [ 1, 2, // <= no diff 3, ]
(ある世界線・・・) • ѹతฏԺʂ
ESLint と Prettier • ESLint ιʔείʔυͷ੩తղੳΛߦ͍ɺ ͓͔͠ͳͱ͜ΖΛνΣοΫͯ͘͠ΕΔϦϯλʔ • JavaScript ͷ
lint ͜Εʂ࠷ۙ TypeScript ͜Εʂ • `eslint --fix` Ͱ͍ͭͰʹͯ͘͠ΕΔ • Prettier ιʔείʔυΛܗͯ͠ɺ͓͔͠ͳͱ͜ΖΛ ͯ͘͠ΕΔίʔυϑΥʔϚολ • JavaScript ʹݶΒͣɺ৭ΜͳݴޠͰϑΥʔϚοτΛͭ͢
JavaScript での コードフォーマッタ • ྆ํ͏ͷ͕2019ݱࡏͷఆੴ͕ͩɾɾɾ • 2ͭͷߟ͑ํ͕͋Δ 1. Prettier ͔ͯ͠Β
ESLint ͢Δํ๏ 2. ESLint Ͱ Prettier ΛϓϥάΠϯͱͯ͠͏ํ๏
Prettier してから ESLint する方法 • `prettier-eslint` Λ͏ • Prettier ͕ओ
• ίʔυϑΥʔϚοτ͔ͯ͠Β lint ͢Δ
ESLint 内で Prettier を プラグインとして使う方法 • `eslint-plugin-prettier` Λ͏ • ESLint
͕ओ • ESLint Ͱ Prettier ΛϓϥάΠϯͱͯ͠ ͍ɺίʔυϑΥʔϚοςΟϯά͢Δ • Vue ͬͪ͜ʂ
実は Vue cli にはもう コードフォーマッタが用意されている! • ͨͿΜ Vue cli v3
͋ͨΓ͔Β • ѹతฏԺ͕͙ͦ͢͜ʹɾɾɾʂ
ざっくり手順1 (Vue cli v3) • ʢ͋ͱͰը໘͝ͱʹઆ໌͠·͢ʣ • `npx vue create
my-project` Ͱ৽نϓϩδΣΫτ࡞Δ • preset Ͱ `Manually select features` ΛબͿʢखಈʣ • `Linter / Formatter` ʹνΣοΫ͕ೖ͍ͬͯΔͷΛͦͷ··ʹɺ͋ͱࣗ͝༝ʹ • `ESLint + Prettier` ΛબͿ • `Lint on Save` ʹνΣοΫ͕ೖ͍ͬͯΔ͕ɺ ՃͰ `Lint and fix on commit` ʹνΣοΫೖΕΔͱίϛοτ࣌ʹಈ͘ • `In dedicated config files` ΛબͿͱಠࣗʹϑΝΠϧ͕࡞ΒΕΔɺ ͬͪ͜ͷ͕ઃఆ͍͔͢͠ • ࣍ճҎ߱ͷઃఆΛࠓճͷͰ͏͔ฉ͔ΕΔͷͰ `N` ͰऴྃɺҰ௨Γ࡞ΒΕΔ
ざっくり手順2 (Vue cli v3) • ʢ͋ͱͰը໘͝ͱʹઆ໌͠·͢ʣ • ΤσΟλͷઃఆͰ ESLint Λอଘ࣌ʹಈ͔͢ʢΤσΟλ͝ͱʹҟͳΔʣ
• VSCode ͳΒ vetur ͱηοτͰ eslint ͷϓϥάΠϯΛೖΕ͓ͯ͘ • vetur ೖΕͳ͍ͱ `.vue` ͕ vue ͱͯ͠ೝࣝ͞Εͳ͍ͷͰҙ • Command Palette Λ্ཱͪ͛ͯ `settings json` ͱͰଧͬͯ settings.json ։͘ • ઃఆ͢Δͷ `eslint.autoFixOnSave` ͱ `eslint.validate` • ޙऀ `language` Λ `vue`, `javascript`, `javascriptreact` ͋ͨΓೖΕ͓ͯ͘ͱྑ͞ ͛ • ࠶ىಈͯ͠ઃఆΛ༗ޮԽ͢Δ • ΤσΟλͷઃఆ͕ऴΘͬͨΒɺྫ͑ແବͳηϛίϩϯͱ͔͚ͯ ࠩ࡞͔ͬͯΒอଘ => ѹతฏԺʂ
None
None
None
None
None
None
None
None
None
None
ここからは VS Code の設定 (初期状態からやります)
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
保存すると ESLint が走って 勝手にコードフォーマッティング してくれる世界! 圧倒的平穏!
追加でちょっとだけ カスタマイズ • ESLint ͕ओͳͷͰɺ Prettier ʹઃఆՃͯ͠ ESLint ౖ͕Βͳ͚Εɺ Prettier
ʹͦͷ··Ճͪ͠Ό͑ OK • Prettier ʹઃఆͯ͠ ESLint ౖ͕Δͱ͜Ζɺ ESLint ʹઃఆΛՃ͢Δ
ざっくり手順3,4 • `.prettierrc` Λ࡞ͬͯɺ தΛ JSON ʹ͢Δ • ࠩ࡞ͬͯอଘʂ •
͠ઌʹ ESLint ͷํʹϧʔϧ͕ ͋ͬͨͱ͍͏ମͰɺ `quotes double` తͳϧʔϧΛ `.eslintrc.js` ʹՃͯ͠ΈΔ ͋͑ͯڝ߹ͤͯ͞ΈΔ QSFUUJFSSDʢ৽نʣ \ USBJMJOH$PNNBBMM TFNJGBMTF TJOHMF2VPUFUSVF ^ FTMJOUSDKTʢҰ෦ൈਮʣ SVMFT\ RVPUFT<FSSPS EPVCMF> Ճʂ OPDPOTPMFQSPDFTTFOW/0%&@&/7 QSPEVDUJPO FSSPSP⒎ OPEFCVHHFSQSPDFTTFOW/0%&@&/7 QSPEVDUJPO FSSPSP⒎ ^
None
None
None
None
圧倒的平穏!
None
None
圧倒的平穏!
ここからはわざと設定を バッティングさせる(クオート)
None
None
None
None
圧倒的マッチポンプ・・・
None
まとめ • ίʔυϑΥʔϚολ΄΅ඞਢͱ ݴ͍͍ͬͯ΄Ͳॏཁͳઃఆʹͳ͖ͬͯͯΔ • Vue.js Vue cli ͕༻ҙͯ͘͠ΕͯΔ͔Β
ੵۃతʹͬͨΒ͍͍Αʂ • ͯ͢ͷϓϩδΣΫτʹඪ४Ͱೖ͍ͬͯΔ ѹతฏԺͳੈքʹͳͬͨΒ͍͍ͳɾɾɾ
Refs • https://cli.vuejs.org/guide/creating-a- project.html • https://prettier.io/docs/en/options.html • https://eslint.org/docs/rules/