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
コードフォーマッタを導入して プロジェクト内に平穏をもたらす話 / 20191025-v-ok...
Search
girigiribauer
October 25, 2019
Technology
200
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
68
Figma デザインを自動マークアップさせた記録と肌感 / 20260425-nagaoka-tech-junction-1
girigiribauer
0
87
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
310
移動は善 / 20260124-NGK2026S
girigiribauer
1
200
Google Antigravity を使ってみた肌感 / 20251130-ai-craft-hacks-niigata
girigiribauer
0
98
なんとなく使っていたクリップボードの不思議 / 20250926-niigata-5min-tech
girigiribauer
1
90
タスクにもストック型・フロー型があるということに Todoist を使い始めて気づいた話 / 20250725-niigata-5min-tech
girigiribauer
0
100
Bluesky のフィードを作ろう / 20250620-niigata-5min-tech
girigiribauer
0
78
『Bluesky 公式アカウント移行まとめ』のアップデートをした話 / 20241018-niigata-5min-tech
girigiribauer
0
140
Other Decks in Technology
See All in Technology
A Bag-of-Documents Model for Query Specificity
dtunkelang
0
210
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
200
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
実践が先生だった— 新卒サーバーエンジニア1年目のリアル
mixi_engineers
PRO
0
250
検索技術知識0のエンジニアが広告検索システムを内製化して運用するまで
lycorptech_jp
PRO
0
210
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
360
SnowflakeCoCoでデータエンジニアリング!
foursue
0
160
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
160
ブラウザ研修 2026
recruitengineers
PRO
2
100
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
120
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Become a Pro
speakerdeck
PRO
31
6.1k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
230
How STYLIGHT went responsive
nonsquared
100
6.2k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
820
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
430
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
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/