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
girigiribauer
October 25, 2019
Technology
210
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
続・BlueskyとXにクロスポストするツールを作った / 20260619-niigata-5min-tech
girigiribauer
0
85
Figma デザインを自動マークアップさせた記録と肌感 / 20260425-nagaoka-tech-junction-1
girigiribauer
0
99
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
330
移動は善 / 20260124-NGK2026S
girigiribauer
1
230
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
87
『Bluesky 公式アカウント移行まとめ』のアップデートをした話 / 20241018-niigata-5min-tech
girigiribauer
0
150
Other Decks in Technology
See All in Technology
Turning Repos into the Product Second Brain with an LLM Wiki
linedevth
0
140
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
130
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
190
dbt Semantic Layerで進めるenechainのデータ民主化
akizhou
1
220
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
140
Kiro Crewで「みのるん式」仕事術やってみた
minorun365
PRO
3
1k
Codex を使った障害対応机上演習の実際
orgachem
PRO
0
280
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
1.1k
How to Design Configuration for Rails Applications
willnet
1
1.1k
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
220
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
500
Browser Spec: Testing Hotwire with Ruby
takahashim
1
160
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
330
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
My Coaching Mixtape
mlcsv
0
360
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
640
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
Making the Leap to Tech Lead
cromwellryan
135
10k
Designing Experiences People Love
moore
143
24k
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/