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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
84
Figma デザインを自動マークアップさせた記録と肌感 / 20260425-nagaoka-tech-junction-1
girigiribauer
0
98
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
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
110
Browser Spec: Testing Hotwire with Ruby
takahashim
1
120
1つのリクエストを追って理解する - llm-dのP/D分離
akhino
1
160
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
330
AI時代のPRレビューにどう向き合うか?
kairim0
1
240
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
340
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
150
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
430
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
150
フロントエンドカンファレンス関西2026 - 速すぎるUIに、待ち時間を
teamlab
PRO
0
130
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Art, The Web, and Tiny UX
lynnandtonic
304
22k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Are puppies a ranking factor?
jonoalderson
2
4.1k
How to make the Groovebox
asonas
2
2.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
520
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.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/