예시를 들어 설명해보자면 우리가 화장을 할 때도 베이스 화장 즉, 파운데이션을 바르고 색조를 바르듯이
앱 디자인을 할 때 예쁜 디자인을 얹기 전에 미리 해 놓아야 하는 것이다.
파운데이션은 컬러, 타이포그래피, 스페이싱 등 이고
색조 화장은 컴포넌트와 인터랙션 등 이다.
밖에 나갈 때 급해서 색조 화장은 못하지만 베이스는 바르고 나가는 사람처럼
해커톤을 위해 1R에서 급하지만 기본적인 뼈대, 파운데이션은 갖추고자 하는 것이다..
최소한의 파운데이션을 설정해두면 추후 디자인을 입힐 때도 번거로운 일이 적을 것 같아서
아직 기획이 확실히 잡히지 않아서 미리 해둘 수 있는 걸 하기 위해서
기준(폰트 사이즈, 8배수 등)이 있으면 오히려 초기에 와이어 프레임 제작할 때 값에 대한 고민이 줄어서 더 빠르게 할 수 있을듯
막 며칠 전에 디자인 시스템 과정을 마친 김에 활용해볼 겸, 그리고 수업 과정에선 클로닝만 해봤으니까 제작도 경험해볼 겸
따라서 현재 만드는 건 협업을 위한 가이드라인을 포함한 디자인 시스템 보다는 당장의 와프를 통일성 있게 만들기 위한 파운데이션 정도가 된다.
그래서 배리어블을 구성해야 되는데 레퍼런스를 차용하여
익숙하게 봐온 당근 seed와 구름 vapor에서 지금 현 상황과 서비스에 맞는 부분만 쏙쏙 빼오려고 했다.
빼오기 위한 혼자만의 규칙을 좀 정했는데
너무 다양한 상황을 고려한 구성은 아예 제외하기 (sementic 컬러, 다크모드, 폰트static, 웹 해상도 등)
아직 어떻게 될 지 모르니 너무 한정 짓지는 말기 (폰트 사이즈, radius, spacing 등 일단 최소, 최대 안에서 다양하게..)
와이어프레임 단계에선 컬러 지정도 제외하기 (나중에 oklch 활용해서 할 것!)
따라서 당장 할 구성은 와이어프레임 구성할 때 필요할
Typography, Radius, Scaling
당근의 SEED(직접 클론한거라 실제와 다를 수 있음) 그리고 구름의 Vapor 그리고 빵빵의 Dough
원티드의 디자인시스템은 Montage, 토스는 TDS
대기업들은 디자인 시스템에 이름을 붙이길래 나도 기분 낼라고.. 빵의 기본이 되는 반죽인 도우, Dough로 지어봤다........
Vapor는 컴포넌트마다 배리어블을 지정한 게 인상적이다.
Dough는 전체적으로 SEED와 비슷하게 하는데 네이밍만 조금 바꿨다
SEED : Spacing 컬렉션 안에 dimension 이라는 그룹으로 모든 간격과 크기들을 같은 배리어블로 통일
Vapor : Scaling 컬렉션 안에 fontSize, lineHeight, dimension, space 로 나눔
의견 및 결론
사용 방식은 당근처럼 디멘션과 스페이싱 배리어블을 통일하는 게 개인적으로 DS 클로닝하면서 사용하기에 편하다고 느꼈고
컬렉션 네이밍은 x1, x2 이러한 배리어블로 간격과 크기들을 통일하는 것이기 때문에 Spacing보단 구름이 사용하는 Scaling이 좀 더 와 닿는다고 생각했다.
따라서 구성 방식은 당근처럼, 네이밍은 구름처럼 하기로 결정
*Scaling이라는 컬렉션 안에 x0_5, x1, …,x16 로 지정해서 간격 및 크기에 활용
SEED : Typography 컬렉션 아래에 fontFamily, fontSize, lineHeight, fontWeight 지정
Vapor : Scaling 컬렉션 아래에 fontSize, lineHeight 지정 / Typography 컬렉션 아래에 fontFamily, fontWeight, letterSpacing 지정
*의문점 : 컬렉션에도 Typography가 있고 Scaling이라는 컬렉션 안에도 따로 typography가 있는데 왜 이렇게 나눈 건지 약간 궁금하다
의견 및 결론
개인적으로는 타이포라는 큰 컬렉션 아래에서 배리어블을 찾는 게 더 편하다고 느껴서 당근의 방식으로 하되, 구름처럼 letterSpacing도 추가하기로 결정
SEED : fontSize와 lineHeight 모두 t1, t2, … , t10 으로 통일 / 추후 스타일 적용 시 t1regular면 fontSize, lineHeight 둘다 t1으로 적용하면 됨
Vapor : fontSize, lineHeight, fontWeight 등 모두 각각 앞에 이름 붙이고 뒤에 -025, -100 등 값 붙임
의견 및 결론
SEED의 장점1 : t1, t2 라는 간소한 네이밍이 Vapor의 fontSize-100 보다 상대적으로 덜 복잡해 보이고 직관적임
SEED의 장점2 : 추후 스타일 적용 시 t1regular는 fontSize : t1, lineHeight : t1, fontWeight : regular 로 짝지어서 적용하는 게 직접 만들면서도 직관적이라 편하다고 느꼈음
SEED의 단점 : fontSize와 lineHeight의 배리어블 네이밍이 t1, t2 로 똑같아서 스타일에 적용할 시 그룹을 확인해야 하는 헷갈림이 있음
Vapor의 장점 : 배리어블 네임 앞에 각각 fontSize, lineHeight 등이 붙어서 각각 어떤 것의 값인지 명확하게 알기 쉬움
Vapor의 단점 : 배리어블 네임 뒤에 -025 부터 -1000까지의 값이 좀 커서 상대적으로 무겁게 느껴짐, 당근의 t1, t2, t3 과 다르게 어떤 숫자인지 한번 더 생각하게 되는 느낌
따라서 SEED처럼 t1, t2 를 활용하고, Vapor처럼 앞에 그룹 네임을 적어주기로 결정
*variables : fontSize_t1, fontSize_t2 …
*style : t1regular, t1medium …
SEED : 비교적 Primitive하게 활용 ex) t1regular, t1medium, t2regular
Vapor : 비교적 Sementic하게 활용 ex) display1, display2, body1
의견 및 결론
이건 뭐가 더 낫다기 보다 환경의 차이가 있을 것 같다고 생각했다.
구름은 서비스 특징 상 코드는 다른 폰트를 사용하기에 Sementic하게 스타일을 설정해야 편할 것 같다. (내 생각)
그에 비해서 당근은 굳이 폰트를 다르게 쓸 일이 많지 않을 것 같아서 Primitive하게 사용했지 않을까
그리고 실제로 당근을 클로닝하며 t1regular와 같은 방식이 오히려 사용할 때 직관적이고 편하다고 느껴졌다. (예 : t1이면 이정도 크기겠군)
또한 확장성 면에서
마지막으로 지금 상황에서 어떤 곳에 어떤 용도로 쓰일지는 알 수 없는 일이기에 당근의 방식으로 하기로 결정했다.
무조건 sementic할수록 좋은 게 아니라 상황에 따라 활용하기 좋은 방식을 택해야 하는구나 생각하게 되었다.
원래는 제미나이를 활용하여 모바일 기준으로 값을 지정해달라고 요청했으나 부분 부분 극단적인 값을 주는 게 있어서
그냥 대기업분들의 값을 따르기로 결정했다. 어차피 당근도 모바일 기반이라서 호환이 괜찮을 것 이다.
배리어블 네임은 다 스네이크 케이스로 통일하기로 했다. (그룹과 추후 컴포넌트들은 카멜 케이스로 통일)
중요한 건 아니지만 이유는 height-t3 보다 height_t3이 하이픈이 중간에 있으면 뭔가 읽을 때 문자로 읽혀서 비교적 방해되는 느낌(?)
언더스코어는 height와 t3이 쪼끔 더 분리되어 보이고 스페이스 효과가 나는 느낌…?
SEED와 Vapor 둘 다 배리어블 네임은 fontFamily로 해 놓고 밸류에만 폰트 이름을 적었는데
그냥 개인적으로 다른 배포된 DS들을 볼 때 어떤 폰트 쓴 거지 하고 누르면 fontFamily 라고만 보여서 (아래 사진 참고)
조금 답답했던 게 있어서 그냥 배리어블 네임도 폰트 이름으로 해버렸다.
아무래도 확장성 면에서 나중에 폰트를 바꿀 때 배리어블 네임도 바꿔야 하니까 이렇게 한 것 일텐데
그냥 .. 내가 내 DS 사용자로서 이게 더 편안하고 직관적이어서 이렇게 결정했다 ..
만약 폰트 바꿀 일이 있으면 손가락 몇 번 더 움직이기로..