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
72
Figma デザインを自動マークアップさせた記録と肌感 / 20260425-nagaoka-tech-junction-1
girigiribauer
0
93
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
310
移動は善 / 20260124-NGK2026S
girigiribauer
1
210
Google Antigravity を使ってみた肌感 / 20251130-ai-craft-hacks-niigata
girigiribauer
0
100
なんとなく使っていたクリップボードの不思議 / 20250926-niigata-5min-tech
girigiribauer
1
92
タスクにもストック型・フロー型があるということに Todoist を使い始めて気づいた話 / 20250725-niigata-5min-tech
girigiribauer
0
110
Bluesky のフィードを作ろう / 20250620-niigata-5min-tech
girigiribauer
0
80
『Bluesky 公式アカウント移行まとめ』のアップデートをした話 / 20241018-niigata-5min-tech
girigiribauer
0
150
Other Decks in Technology
See All in Technology
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.4k
Kiro WebとCloud Sessions
nagisa53
2
190
RelayerというPHPのフレームワークを作った
polidog
PRO
0
140
Kiro Crew入門 - 常駐エージェントの仕組みと使いどころ / Intro to Kiro Crew
k_adachi_01
1
910
英語が話せなくてもKubeConスタッフに参加した話
yusuke427
2
1.1k
What's new in Go 1.27?
ciarana
0
430
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
1
920
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
20k
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
770
三人寄ればチューリング完全
puhitaku
6
3.1k
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
560
平文パスワードはログに“残り” ── 肝心の侵入は“痕跡すら残らない”
kuroneko13
0
130
Featured
See All Featured
Test your architecture with Archunit
thirion
2
2.4k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Chasing Engaging Ingredients in Design
codingconduct
0
280
How to Ace a Technical Interview
jacobian
281
24k
Mobile First: as difficult as doing things right
swwweet
225
10k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
310
How to make the Groovebox
asonas
2
2.3k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
620
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/