UI 라이브러리 개발기퍼포먼스팀 백진욱
View Slide
2UI 라이브러리자주 쓰이는 UI 컴포넌트를 한 데 모아 놓은 것
2018. 8.“UI 라이브러리를 만드려는데진욱님이 진행을 좀 맡아주시겠어요?”
상황 파악하기“아무 것도 모르겠어요ㅠ”
상황 1. 이번이 처음이 아니다이전에 만들어진 것들:RUI, RSG 1.0, RSG 1.5, RSG 2.0...
상황 2. 미완성 상태산재된 코드 (저장소에 코드가 없다!) 컴포넌트 간 일관성의 부족
기존 라이브러리 완성하기코드를 한 데 모으자!ஹನք ױਤ۽ ೞաঀ ৮ࢿदఃӝ!
잠깐!옮기는 작업과 개선 작업이 동시에 진행리뷰 과정에서 합의에 이르기 까지 오래걸림각 컴포넌트에 국한된 개선라이브러리 전체 일관성 우려어차피 다시 고치게될 것8
옮기기만 하자일단 산재된 코드를 모으는 것이 시급동작만 되는 수준으로 작업고민 X 속도 O전체적인 그림이 보이기 시작9
모아놓고 보니.. 그 때 그 때 요구사항에 따라 구현된 것이 많음미처 라이브러리에 흡수되지 못하거나요구사항 변경 → 돌연변이들이 나타나기 시작10
걱정또 만들어 놓고 또 안쓰게 되면 어떡하지?11
잘 쓰이려면쓰는 사람 → 사용자사용자 → 사용성쓰기 편해야한다!인터페이스인터페이스를 다듬자!12
인터페이스 다듬기인터페이스만 다듬기구현 X동작 코드 X문서로만 작성마크다운 코드블럭 이용구현 고민 없이 인터페이스에 집중13
인터페이스 다듬기인터페이스만 다듬기컴포넌트의 사용 예시 작성인터페이스 정의 X컴포넌트 사용 예 O컴포넌트를 어떤 식으로 사용하는 것이 편한가여러 시안을 한 문서에서 비교빠르게 여러 컴포넌트를 비교14
구현하기 각 컴포넌트 별 인터페이스 문서 존재구현에도 부담이 적음인터페이스 고민 X15
16
17아직 구현중입니다..조금만 기다려주세요^^;https://ridi.github.io/design-system/packages
어려웠던 점18
결정장애19결정해야할 것이 너무 많음인터페이스 패턴 선택셋팅 (Webpack, Rollup, CSSinJS...)제공형식 (React, Non-React...)답 없는 문제, 답이 너무 많은 문제혼자 인고의 세월을...
커뮤니케이션20제3자적 입장(ѐߊX, ٣ցX, ࢎਊX)중간에 껴들어 와서 의견을 강하게 어필하기 힘든 점모든 것을 질문하게되는 상황이 됨확신이 서지 않는 결정을 하면,나중에 같은 논의가 반복
돌이켜보니..결국 최종 결정의 몫은 나최선을 선택하더라도 바뀔 여지가 많음 (그때는 맞고지금은 틀리다)해보고 별로면 다시 바꾸면 된다 (는 자신감으로)백지장도 맞들면 낫다(회의, 리뷰를 진작에 할걸 ㅠ)21
깨달은 점 협업에는 의사 결정자 필요의사 결정자는 유연하지만 주관이 강해야한다22
디자인시스템23https://ridi.github.io/design-system
디자인시스템 디자인시스템 ⊃ UI 라이브러리이상적 순서: 디자인시스템 → 구현안타깝게도 현실은 ㅠ24
25UI 라이브러리 → 테마 → ← 스타일가이드 ← 디자인시스템
마치며“They dedicate just as much, if not more,effort to what I call the ‘second order’ APIdesign: how code using this API wouldevolve over time.”- Optimized for Change, Dan Abramov26
감사합니다27