React Sketch.app

μŠ€μΌ€μΉ˜μ™€ λ¦¬μ•‘νŠΈλ₯Ό μ—°κ²°ν•΄μ£ΌλŠ” 도ꡬ React Sketch.app (by airbnb)

μ†Œκ°œ

μ½”λ“œμ™€ ν•¨κ»˜ λ””μžμΈν•˜κΈ°

이 νˆ΄μ€ 큰 규λͺ¨μ˜ λ””μžμΈ μ‹œμŠ€ν…œμ—μ„œ λ””μžμ΄λ„ˆμ™€ κ°œλ°œμžκ°„μ˜ 갭을 쀄이기 μœ„ν•΄μ„œ λ§Œλ“€μ–΄μ‘Œλ‹€. λ¦¬μ•‘νŠΈ μŠ€μΌ€μΉ˜μ•±μ€ λ¦¬μ•‘νŠΈ μ»΄ν¬λ„ŒνŠΈλ₯Ό μŠ€μΌ€μΉ˜μ— λ Œλ”λ§ ν•˜κΈ° μœ„ν•΄ λ§Œλ“  μ˜€ν”ˆμ†ŒμŠ€ λ¦¬μ•‘νŠΈ λΌμ΄λΈŒλŸ¬λ¦¬λ‹€.

이 ν”ŒλŸ¬κ·ΈμΈμœΌλ‘œ ν•  수 μžˆλŠ” 것듀

λ§€λ„λŸ¬μš΄ μ‹€μ‹œκ°„ 데이터 톡합

였λ₯Έμͺ½ 화면은 react-sketchapp을 μ‹€ν–‰ν•œ 화면인데 μ‹€μ œλ‘œ ꡬ글맡 APIλ₯Ό μ‚¬μš©ν•œ μ½”λ“œλ₯Ό μŠ€μΌ€μΉ˜μ— λ Œλ”λ§ν•œκ²ƒμ΄λ‹€. μ»΄ν¬λ„ŒνŠΈμ˜ Propsλ₯Ό λ³€κ²½ν•΄κ°€λ©΄μ„œ μŠ€μΌ€μΉ˜μ•±μ— μ–΄λ–»κ²Œ λ Œλ”λ§λ˜λŠ”μ§€λ₯Ό ν™•μΈν•΄κ°€λ©΄μ„œ λ””μžμΈ ν•  수 μžˆλ‹€.

flexbox λ ˆμ΄μ•„μ›ƒ

React Sketch.app은 flexboxλ₯Ό μ‚¬μš©ν•˜μ—¬ λ ˆμ΄μ•„μ›ƒμ„ μž‘λŠ”λ‹€. μ—¬κΈ°μ„œ μ œκ³΅ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ“€μ„ μ‚¬μš©ν•΄μ„œ λ‹€μ–‘ν•œ λ ˆμ΄μ•„μ›ƒμ„ μž‘μ„ 수 μžˆλ‹€. λ˜ν•œ λ””λ°”μ΄μŠ€ μ‚¬μ΄μ¦ˆμ— 맞게 각 μ»΄ν¬λ„ŒνŠΈλ₯Ό λ Œλ”λ§ν•΄ λ³Ό μˆ˜λ„ μžˆλ‹€.

μžλ™ κ΅­μ œν™”

ꡬ글 λ²ˆμ—­ APIλ₯Ό μ‚¬μš©ν•΄μ„œ μ‹€μ‹œκ°„μœΌλ‘œ μ»΄ν¬λ„ŒνŠΈ 내뢀에 λ“€μ–΄κ°€λŠ” ν…μŠ€νŠΈλ₯Ό λ²ˆμ—­ν•΄λ³Ό 수 μžˆλ‹€. κ·Έλž¬μ„λ•Œ λ””μžμΈμ΄ μ–΄μƒ‰ν•˜μ§€ μ•Šμ€μ§€ λ””μžμΈ λ‹¨κ³„μ—μ„œ 확인이 미리 κ°€λŠ₯ν•˜λ‹€λŠ” 말이닀. μˆ˜λ™μœΌλ‘œ 일어, 쀑ꡭ어, μ˜μ–΄λ“±μ„ λ„£μ–΄μ„œ ν…ŒμŠ€νŠΈ ν•  ν•„μš”κ°€ μ—†λ‹€λŠ” 것이닀.

μŠ€μΌ€μΉ˜μ— λ¦¬μ•‘νŠΈλ₯Ό ν†΅ν•©ν•˜λ €κ³  ν•œ 이유

Sources of Truth

μ§„μ‹€μ˜ μ›μ²œμ΄λΌλŠ” 뜻인데, ν•œλ§ˆλ””λ‘œ ν•œκ³³μ—μ„œ μ΅œμ‹ λ³Έμ˜ μ†ŒμŠ€λ₯Ό κ΄€λ¦¬ν•΄μ•Όν•œλ‹€λŠ” 말이닀.

airbnbμ—μ„œλŠ” 쑰직이 컀짐에 따라 λ””μžμΈ μ‹œμŠ€ν…œ 관리에 큰 어렀움을 κ²ͺμ—ˆλ‹€κ³  ν•œλ‹€. λ””μžμΈ μ‹œμŠ€ν…œμ— μ–΄λ–€ μ‚¬μ†Œν•œ λ³€ν™”κ°€ μΆ”κ°€λ˜λ©΄ 그에 λ”°λ₯Έ μˆ˜λ§Žμ€ μΆ”κ°€ μž‘μ—…λ“€μ΄ λ™λ°˜λ˜μ—ˆλ‹€.

예λ₯Όλ“€μ–΄, μ‹œμŠ€ν…œμ— λ„€λͺ¨λ‚œ λ²„νŠΌμ„ λ™κ·Έλž€ λ²„νŠΌμœΌλ‘œ μˆ˜μ •ν–ˆλŠ”λ° 이걸 λ°˜μ˜ν•˜κΈ° μœ„ν•΄

  1. λ¬Έμ„œλ₯Ό μ—…λ°μ΄νŠΈ ν•΄μ•Ό ν–ˆκ³ ,

  2. 각 κ°œλ°œμ— 반영(ios, android, web)ν•΄μ•Ό ν–ˆκ³ ,

  3. μŠ€μΌ€μΉ˜μ˜ ν…œν”Œλ¦Ώμ— λ°˜μ˜ν•΄μ•Ό ν–ˆλ‹€. (병λͺ© ν˜„μƒ λ°œμƒ)

이런 일이 생긴 원인은 μ†ŒμŠ€κ°€ ν•œκ³³μ— μ§‘μ€‘λ˜μ–΄ μžˆμ§€ μ•Šκ³  μ—¬λŸ¬ 사본이 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— λ°œμƒν•˜λŠ” μΌμ΄μ—ˆλ‹€. μ„œλ‘œ λ‹€λ₯Έ μ†ŒμŠ€μ˜ 싱크λ₯Ό λ§žμΆ°μ•Ό ν–ˆλ‹€.

λ””μžμΈ μ‹œμŠ€ν…œμ˜ 변경사항을 μ½”λ“œμ— λ°˜μ˜ν•˜λŠ”κ²ƒμ€ 생각보닀 μ–΄λ ΅μ§€ μ•Šμ•˜λŠ”λ°, μŠ€μΌ€μΉ˜ ν…œν”Œλ¦Ώμ— λ°˜μ˜ν•˜λŠ”κ²ƒμ€ κ½€ λ²ˆκ±°λ‘œμ› λ‹€. μŠ€μΌ€μΉ˜μ˜ ν…œν”Œλ¦Ώμ€ μ„œλ‘œ μ—°κ²°λ˜μ§€ μ•Šκ³  μ‚¬λžŒμ΄ μˆ˜λ™μœΌλ‘œ κ΄€λ¦¬ν•΄μ•Όν•˜λŠ” ν¬μΈνŠΈκ°€ λ§Žμ•˜κΈ° λ•Œλ¬Έμ΄λ‹€. μš°λ¦¬λŠ” μŠ€μΌ€μΉ˜ ν…œν”Œλ¦Ώμ—μ„œ 병λͺ©ν˜„상을 κ²ͺμ—ˆλ‹€.

λ””μžμΈ μ‹œμŠ€ν…œ λ‚΄μ—μ„œμ˜ λ³€ν™”λŠ” 좔적이 λ˜μ–΄μ•Ό ν•œλ‹€. (예λ₯Όλ“€μ–΄, 컬러 ν•˜λ‚˜λ₯Ό λ³€κ²½ν•˜λ©΄ 이 컬러λ₯Ό μ‚¬μš©ν•˜λŠ” λ§Žμ€ μ»΄ν¬λ„ŒνŠΈμ—μ„œμ˜ λ³€ν™”λ₯Ό μΌμœΌν‚¨λ‹€.) λ§Œμ•½ line-heightλ‚˜ spacing이 λ³€κ²½λ˜λ©΄ 이걸 μ‚¬μš©ν•˜λŠ” μˆ˜λ§Žμ€ μ»΄ν¬λ„ŒνŠΈλŠ” λ‹€μ‹œ λ””μžμΈλ˜μ–΄μ•Ό ν–ˆλ‹€. ν•˜λ‚˜ν•˜λ‚˜μ˜ λ””μžμΈ 변경사항이 잠재적인 μ—λŸ¬λ‚˜ 뢈일치λ₯Ό μ•ΌκΈ°ν•  수 μžˆμ—ˆλ‹€. μŠ€μΌ€μΉ˜μ™€ 같은 κ·Έλž˜ν”½ 기반 νˆ΄μ€ 버전 관리가 νž˜λ“€κΈ°λ‘œ μ•…λͺ…이 λ†’λ‹€. μš°λ¦¬λŠ” 이런 병λͺ©ν˜„상을 μ œκ±°ν•΄μ•Όλ§Œ ν–ˆλ‹€.

μ‹€μ‘΄ν•˜λŠ”κ²ƒμ„ μ‚¬μš©ν•˜μž

μŠ€μΌ€μΉ˜μ—μ„œ λ””μžμ΄λ„ˆμ˜ μ›Œν¬ν”Œλ‘œμš°λŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό κ°€μ Έμ™€μ„œ κ·Έ λ‚΄λΆ€λ₯Ό μ±„μš΄λ‹€λŠ” κ΄€μ μ—μ„œ λ¦¬μ•‘νŠΈ μ»΄ν¬λ„ŒνŠΈλ₯Ό μž‘μ„±ν•˜λŠ” μ›Œν¬ν”Œλ‘œμš°μ™€ μƒλ‹Ήνžˆ μœ μ‚¬ν•˜λ‹€.

  1. μŠ€μΌ€μΉ˜μ—μ„œλŠ” symbolκ³Ό overrideλ₯Ό μ‚¬μš©ν•œλ‹€.

  2. λ¦¬μ•‘νŠΈμ—μ„œλŠ” components와 propsλ₯Ό μ‚¬μš©ν•œλ‹€.

λ‘κ°€μ§€μ˜ 컨셉이 맀우 μœ μ‚¬ν•΄μ„œ κ·Έ λ‘˜μ„ ν†΅ν•©ν•˜κΈ° 쉬웠닀. μš°λ¦¬λŠ” μ§„μ‹€μ˜ μ›μ²œμ„ μ΅œμ†Œν™” ν•˜κΈ°λ₯Ό μ›ν–ˆλ‹€. 이미 λ§Œλ“€μ–΄μ Έ μˆ˜λ§Žμ€ μ‚¬λžŒλ“€μ—κ²Œ μ‚¬μš©λ˜κ³  μžˆλŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό ꡳ이 μŠ€μΌ€μΉ˜μ—μ„œ μˆ˜λ™μœΌλ‘œ κ΄€λ¦¬ν•˜λŠ” μ΄μœ κ°€ 뭘까?

더 적은 수의 μ§„μ‹€μ˜ μ›μ²œ(sources of truth)λ₯Ό κ°€μ§ˆ 수둝, 더 νš¨μœ¨μ μ΄λ‹€.

β€œMany hard problems are best solved when they are addressed backward.” β€” Charlie Munger, Vice-Chairman of Berkshire Hathaway

(λ§Žμ€ μ–΄λ €μš΄ λ¬Έμ œλ“€μ€ μ—­λ°©ν–₯으둜 λ‹€λ€„μ§ˆλ•Œ κ°€μž₯ 잘 ν•΄κ²°λœλ‹€.) 이미 λ§Œλ“€μ–΄μ§„ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ””μžμΈμ— κ°€μ Έμ™€μ„œ μˆ˜μ •ν•˜λŠ”κ²ƒμ΄ νš¨μœ¨μ μž„μ„ μ„€λͺ…ν•˜κΈ° μœ„ν•΄ μΈμš©ν•œ 것 κ°™λ‹€.

λ””μžμΈ νˆ΄μ—μ„œ μ½”λ“œλ₯Ό λ½‘μ•„λ‚΄λ €λŠ” μ‹œλ„λŠ” μ˜€λž˜μ „λΆ€ν„° μ§„ν–‰λ˜μ–΄μ™”λ‹€. ν•˜μ§€λ§Œ μš°λ¦¬λŠ” 관점을 λ°˜λŒ€λ‘œ λ°”κΏ” μ½”λ“œμ—μ„œ μŠ€μΌ€μΉ˜νŒŒμΌμ„ 뽑아내기 μœ„ν•΄ λ…Έλ ₯ν–ˆλ‹€.

2016λ…„κΉŒμ§€ μŠ€μΌ€μΉ˜λ₯Ό 닀루기 μœ„ν•΄μ„œλŠ” CocoaScript라고 ν•˜λŠ” κ°€μž₯ κ°œλ°œμžμ—κ²Œ 인기 μ—†λŠ” μ–Έμ–΄λ₯Ό μ‚¬μš©ν–ˆμ—ˆλ‹€. μš°λ¦¬λŠ” μ΅œμ‹  μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό 톡해 μŠ€μΌ€μΉ˜λ₯Ό 닀루고 μ‹Άμ—ˆλ‹€.

2020λ…„ ν˜„μž¬ μŠ€μΌ€μΉ˜μ—μ„œλŠ” javascript APIλ₯Ό λ² νƒ€λ²„μ „μœΌλ‘œ 곡개λ₯Ό ν•œ 것 κ°™λ‹€. (링크)

μŠ€μΌ€μΉ˜νŒ€μ—μ„œλŠ” OBJ-C와 JSλ₯Ό 톡해 Sketch APIλ₯Ό κ΄€λ¦¬ν•˜κ³  κ°œλ°œμžλ“€μ€ ν”ŒλŸ¬κ·ΈμΈμ΄λ‚˜ μœ ν‹Έλ¦¬ν‹°λ₯Ό JS둜 μž‘μ„±ν•  수 μžˆλ‹€.

μš”μ•½

  1. 큰 규λͺ¨μ˜ κΈ°μ—…μ—μ„œ μ‚¬μš©ν•˜λŠ” μ‹œμŠ€ν…œμ—μ„œ μ€‘μš”ν•œκ²ƒμ€, Sources of Truthλ₯Ό μ΅œμ†Œν™” ν•˜λŠ”κ²ƒμ΄λ‹€.

  2. κ·Έ 방법 쀑 ν•˜λ‚˜λ‘œ λ¦¬μ•‘νŠΈ μ½”λ“œλ₯Ό μŠ€μΌ€μΉ˜μ—μ„œ λ Œλ”λ§ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 방법을 생각 ν•΄ λƒˆλ‹€.

  3. κ·Έλž˜μ„œ React Sketch.app을 λ§Œλ“€μ—ˆλ‹€.

Last updated

Was this helpful?