๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป dev

[๐Ÿ’ป ์ปดํ“จํ„ฐ ์šฉ์–ด ] "Opinionated"๋ž€?

์„ค์ •์„ ํ•˜๋˜๊ฐ€ ์ŠคํŽ™์„ ์ฒดํฌํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๊ณ  ๊ณต์‹ ๋ฌธ์„œ์— ๋“ค์–ด๊ฐ€์„œ ์ฝ๋‹ค ๋ณด๋ฉด "opinionated"๋ผ๋Š” ๋ง์„ ์ข…์ข… ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์‚ฌ์ „์ ์ธ ์˜๋ฏธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์˜์–ด ์„ค๋ช…์œผ๋กœ๋Š” ์›๋ฆฌ๋ฅผ ๊ฐ•ํ•˜๊ฒŒ ์ฃผ์žฅ/๊ณ ์ˆ˜ํ•˜๋Š” ์„ฑ๊ฒฉ์œผ๋กœ ๋ฌ˜์‚ฌ๊ฐ€ ๋˜๊ณ ,
ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ์€ '์˜๊ฒฌ์„ ๊ณ ์ง‘ํ•˜๋Š”, ๋…๋‹จ์ ์ธ, ์ž๋ถ€์‹ฌ์ด ๊ฐ•ํ•œ..' ๋“ฑ์œผ๋กœ ์„ค๋ช…๋œ๋‹ค.
ํ•˜์ง€๋งŒ ์†Œํ”„ํŠธ์›จ์–ด์ ์ธ ์ฝ˜ํ…์ŠคํŠธ์—์„œ ์ด ๋ง์ด ์™€๋‹ฟ์ง€ ์•Š๊ณ  ํ•œ๊ธ€ ๋ฒˆ์—ญ๋„ ๋ญ”๊ฐ€ ๋ฐ˜์˜ํ•˜๊ธฐ ์–ด์ƒ‰ํ•˜๋‹ค.
opinionated ์˜ ์‚ฌ์ „์  ์˜๋ฏธ

๐Ÿ€ ์˜ค๋Š˜์€ ์ด ์–ด์ƒ‰ํ•จ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด "opinionated"๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด ์ฝ˜ํ…์ŠคํŠธ์—์„œ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ •์˜์™€ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด์ž.

Opinionated ํ‘œํ˜„ ์‚ฌ์šฉ ์˜ˆ์‹œ๋“ค

prettier

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ํ•œ ๋ฒˆ์ฏค์€ prettier ์„ค์ •์„ ํ•ด๋ดค์„ ๊ฒƒ์ด๋‹ค. 

๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ์•„๋ž˜์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ prettier๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์™œ ์จ์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์ด ๋‚˜์˜จ๋‹ค.

์ด ์„ค๋ช… ์ฒซ ์ค„์—๋Š” prettier๊ฐ€ "opinionated" ์ฝ”๋“œ ํฌ๋ฉงํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค. 

https://prettier.io/

ํ•œ๊ธ€๋กœ "prettier๋ž€"์— ๋Œ€ํ•ด ์ž‘์„ฑํ•œ ๋ธ”๋กœ๊ทธ๋“ค์„ ๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„ ์ฝ”๋“œ ์Šคํƒ€์ผ ํฌ๋ฉ”ํ„ฐ๋ผ๋Š” ์ ์€ ์„ค๋ช…ํ•˜์ง€๋งŒ "opinionated"์˜ ์†์„ฑ์€ ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค. ํ•˜์ง€๋งŒ ์˜์–ด๋กœ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ๋Š” ์ด ์†์„ฑ์„ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋“œ๋ฌผ๋‹ค.

 prettier ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์ •์˜๋ฅผ ๋‚ด๋ฆด ๋•Œ ์“ฐ์ผ ๋งŒํผ ์ค‘์š”ํ•œ ํŠน์ง•์ด์ง€๋งŒ ์™œ์ธ์ง€ ์ƒ๋žต์ด ๋˜์–ด ์žˆ๋‹ค๋Š” ์ ์ด ์˜์•„ํ•˜๋‹ค.

prettier๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ : ํ•œ๊ธ€(์ขŒ), ์˜์–ด(์šฐ)

Vite + Jest

vite์— jest์„ค์ •์„ ํ•˜๊ณ ์žํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ opinionated๋ผ๋Š” ํŠน์„ฑ์ด ์–ธ๊ธ‰๋œ๋‹ค. 

prettier์—์„œ ์“ฐ์˜€์„ ๋•Œ์ฒ˜๋Ÿผ ์ •์˜์— ์“ฐ์ผ ๋งŒํผ์€ ์•„๋‹ˆ์ง€๋งŒ,

vite๊ฐ€ opinionated๋ผ๋Š” ํŠน์„ฑ๋•Œ๋ฌธ์— ์–ด๋–ค ์ œ์•ฝ์ด ์žˆ๊ณ , ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ผ๋ฐ˜์ ์ธ ํ๋ฆ„ ๋ฐ–์—์„œ ์ œ๊ณต๋˜๋Š” ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ์„ค๋ช…์ด ๋˜์–ด ์žˆ๋‹ค. opinionated ๋„๊ตฌ๋ผ๋Š” ํŠน์„ฑ์ด ๋ญ”์ง€ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ด ๋ฌธ์„œ๋ฅผ ์ฝ๋Š” ๊ฒŒ ํ•œ๊ฒฐ ์‰ฌ์šธ ๊ฒƒ์ด๋‹ค.

https://jestjs.io/docs/getting-started

Opinionated๋ž€?

prettier๋Š” opinionated ์ฝ”๋“œ ํฌ๋ฉงํŒ… ๋„๊ตฌ, vite๋„ opinionated ๋„๊ตฌ๋ผ๊ณ  ํ‘œํ˜„๋˜ ๋œ๋‹ค๋Š” ๊ฑธ ์‚ดํŽด๋ดค๋‹ค.

๊ทธ๋Ÿผ opinionated๊ฐ€ ๋ฌด์—‡์„ ๋œปํ•˜๋Š” ๊ฑธ๊นŒ?

 

์ผ๋‹จ opinionated๋ฅผ ์ •ํ™•ํžˆ ํ•˜๋‚˜๋กœ ์ •์˜ํ•œ ๊ณณ์€ ์—†์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๋ฌธ์„œ์—์„œ ๊ณตํ†ต์œผ๋กœ opinionated๋ฅผ ์ •์˜ํ•  ๋•Œ, 

opinionated๋ž€ ํŠน์„ฑ์„ ์ง€๋‹ˆ๋ฉด ํŠน์ˆ˜ํ•œ ์ผ€์ด์Šค๋ฅผ ์œ„ํ•œ ์†”๋ฃจ์…˜์ด ์ด๋ฏธ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ ๋ฌธ์ œ์ƒํ™ฉ์ด ํ•ด๋‹น ์„ค๋ฃจ์…˜์— ๋ถ€ํ•ฉํ•˜๋ฉด ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด non-opinionated ํ˜น์€ ๋‹ค๋ฅธ opinionated (์šฐ๋ฆฌ์˜ ๋ชฉ์ ์— ์ ํ•ฉํ•œ ๋งŒ๋“ค์–ด์ง„) ์„ค๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

[์ถœ์ฒ˜] https://www.figma.com/blog/the-linear-method-opinionated-software/#what-is-opinionated-software

 

๊ทธ๋Ÿผ prettier๋Š” "opinionated" ์ฝ”๋“œ ํฌ๋ฉงํ„ฐ๋ผ๊ณ  ํ•˜๋Š” ๊ฑด, prettier ์ž์ฒด์ ์œผ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  ์ •๋ฆฝํ•œ ์ฝ”๋“œ ํฌ๋ฉ”ํŒ… ์„ค๋ฃจ์…˜์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.  ๊ฐœ๋ฐœ์ž๋“ค์€ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ๋œ ํฌ๋ฉง์œผ๋กœ ์ฝ”๋“œ ํฌ๋งท์„ ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชฉ์ ์ด prettier๊ฐ€ ๋งŒ๋“  ์†”๋ฃจ์…˜์ด ์ ํ•ฉํ•˜๋ฉด ๊ทธ๋Œ€๋กœ ๊ฐ–๋‹ค ์“ฐ๋ฉด ๋˜๊ณ , prettier๊ฐ€ ์˜๋„ํ•œ ๋””ํดํŠธ ํ”„๋กœ์„ธ์Šค๋Œ€๋กœ  ํฌ๋งทํŒ…์ด ๋œ๋‹ค. prettier ์†Œ๊ฐœ์—์„œ๋„ ์ด ํŠน์„ฑ์„ ๊ทธ๋Œ€๋กœ ์„ค๋ช…ํ•œ๋‹ค. 

 

It removes all original styling* and ensures that all outputted code conforms to a consistent style. 
(์˜ค๋ฆฌ์ง€๋„ ์Šคํƒ€์ผ ์ „๋ถ€๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ชจ๋“  ์ƒ์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ์ผ๊ด€์„ฑ์„ ์ง€๋‹Œ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์ง€๋„๋ก ๋ณด์žฅํ•ด์ค€๋‹ค.)

 

โš ๏ธ ์ด๋ฒˆ ๊ธ€์€ opinionated๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ์ง‘์ค‘ํ•˜๋ฏ€๋กœ prettier์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์€ ๋”ฐ๋กœ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค!

์ด์ œ opinionated๋ผ๋Š” ์„ฑ๊ฒฉ์„ ์ง€๋‹ˆ๋ฉด ํŠน์ˆ˜ ๋ชฉ์ ์„ ์œ„ํ•œ ์„ค๋ฃจ์…˜์ด ์งœ์—ฌ์ ธ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿผ ์‹ค์ œ๋กœ ์ฃผ๋ณ€์—์„œ opinionated๊ณผ non-opinionated ํŠน์„ฑ์„ ์ง€๋‹Œ ์˜ˆ์‹œ๋“ค์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์ž.

Opinionated vs. Non-opinionated

 

Opinionated 

Non-opinionated 

ํ‚ค์›Œ๋“œ ๊ฐ€์ด๋“œ ์ œ๊ณต ์œ ์—ฐ์„ฑ
๊ฒฐ์ •/ํ†ต์ œ๊ถŒ ์ง€๋‹Œ ์ฃผ์ฒด ๋””์ž์ธ, ์„ค๊ณ„๋œ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์šฉ์ž
์†Œํ”„ํŠธ ์›จ์–ด ์˜ˆ์‹œ Wiki systems, Holacracy, Dropbox Paper ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ Excel, Eclipes IDE, google docs
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์˜ˆ์‹œ Ruby on Rails, Go C, PERL, PHP

opinionated(์ขŒ) ๊ณผ non-opinionated(์šฐ) ๋””์ž์ธ, [์ถœ์ฒ˜] https://www.baeldung.com/cs/opinionated-software-design

 

Google Docs vs. Dropbox Paper

์•„๋ž˜์˜ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž. ๊ตฌ๊ธ€ docs์™€ dropbox์˜ Paper ์ค‘ ์–ด๋Š ์ชฝ์ด opinionated์ด๊ณ  ์–ด๋Š ์ชฝ์ด non-opinionated์ผ๊นŒ?

 

Google Docs(์ขŒ) vs. Dropbox Paper(์šฐ)

 

opinionated์€ ํ•˜๋‚˜์˜ ์ •ํ•ด์ง„ ์„ค๋ฃจ์…˜ ๊ฐ€์ด๋“œ๋ผ์ธ์ด ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค. 

docs๋Š” ๋„ํ๋จผํŠธ์˜ ํฌ๊ธฐ์™€ ๋ ˆ์ด์•„์›ƒ, ํ…์ŠคํŠธ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด dropbox์˜ Paper๋Š” web์„ ์œ„ํ•œ work document ์ƒ์„ฑ์ด๋ผ๋Š” ๋ชฉ์ ์„ ์œ„ํ•œ ์„ค๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•œ๋‹ค. ํ…์ŠคํŠธ์˜ heading, ํฐํŠธ ๊ตต๊ธฐ์™€ ํ•˜์ด๋ผ์ดํŠธ ๋“ฑ์„ ์ง€์›ํ•˜์ง€๋งŒ work document ์ƒ์„ฑ์— ์ง‘์ค‘ํ•˜๊ณ , ๊ทธ ์™ธ์˜ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ ์—์„œ opinionated ์†Œํ”„ํŠธ์›จ์–ด๋‹ค.


 ๐Ÿ€ ๋งˆ์น˜๋ฉด์„œ

์˜ค๋Š˜์€ 'opinionated'๋ผ๋Š” ๊ฒƒ์ด ๋ญ”์ง€, ์‚ฌ์šฉ ์˜ˆ์‹œ๋“ค์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค๋‹ค.
ruby on rails๋‚˜ perl ๋“ฑ์˜ ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด๋ฅผ ๊ฒฝํ—˜ํ•ด๋ณด์ง€ ๋ชปํ•ด์„œ ์ง์ ‘ opinionated์™€ non-opinionated ์Šคํƒ์˜ ์ฐจ์ด๋ฅผ ๋Š๋ผ์ง€ ๋ชปํ•ด์„œ ์•„์‰ฝ๊ธฐ๋Š” ํ–ˆ์ง€๋งŒ, prettier ๊ฐ€ ์™œ ์ •ํ•ด์ง„ ํฌ๋งคํŒ… ์ค€์ˆ˜ํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„๋„ ๋˜์—ˆ๋‹ค.

์ž์œ ๋ฅผ ๋ฌด์ œํ•œ ๋ณด์žฅํ•˜๋ ค๋‹ค ๋ณด๋ฉด ์ž˜๋ชปํ•˜๋ฉด ๋ฐฉ์ž„์ผ ๋•Œ๊ฐ€ ์žˆ๋‹ค. '์•„๋ฌด๋Ÿฐ ๊ฐ€์ด๋“œ ์—†์ด ์›ํ•˜๋Š” ๋Œ€๋กœ'๊ฐ€ ๋งž์„ ๋•Œ๊ฐ€ ์žˆ์ง€๋งŒ ์˜คํžˆ๋ ค '์ •ํ•ด์ง„ ํ‹€์˜ ๋ฐฉํ–ฅ๋Œ€๋กœ ๋ฌด์กฐ๊ฑด ์ง„ํ–‰'์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ค ํฌ๋งท์„ ๋”ฐ๋ฅด๊ณ , ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ํฌ๋งท์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ „์ž์˜ ๊ฒฝ์šฐ, prettier๋Š” prettier๊ฐ€ ์ •์˜ํ•œ ์Šคํƒ€์ผ ๊ทœ์น™์„ ์„ค์ •๋Œ€๋กœ ํฌ๋งท์„ ํ†ต์ผํ•œ๋‹ค. prettier์˜ opinionated ํŠน์„ฑ์ด ํฌ๋งท ๊ทœ์น™ ๋…ผ์Ÿ/๋…ผ์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ๊น”๋”ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ ์—์„œ ๊ทธ๋งŒํผ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ฒŒ ์•„๋‹Œ๊ฐ€ ์‹ถ๋‹ค.

์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์—์„œ๋„ opinionated์— ๊ด€ํ•œ ์“ฐ๋ ˆ๋“œ์—์„œ ์žฌ๋ฏธ์žˆ๋Š” ์„ค๋ช…์ด ๋‚˜์˜ค๋Š”๋ฐ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์€ ๊ฑฐ ๊ฐ™๋‹ค. 

์ €์žฅ์„ ํ•˜๋ฉด ๋ฐ”๋กœ ํฌ๋ฉง์„ ํ•ด์ฃผ๋Š” prettier

๐Ÿ“š References

https://stackoverflow.com/questions/802050/what-is-opinionated-software

 

What is opinionated software?

I often see people saying that certain software is "very opinionated" or that Microsoft tends to write "un-opinionated" frameworks. What does this actually mean?

stackoverflow.com

https://www.imkylelambert.com/articles/opinionated-software?source=post_page-----f63510eafeca--------------------------------

 

Opinionated software

Opinionated menus are like opinionated software. The menu may not serve something for everyone, but the people who love it will be the biggest fans.

www.imkylelambert.com

https://www.baeldung.com/cs/opinionated-software-design