기술 블로그 내용 공유 스터디 첫주차 리뷰
소개
매주 꾸준히 글을 작성하기 위한 동기부여 겸, 다양한 분야의 소식들을 다른 개발자분들과 공유하는 시간을 가질 겸, 다른 사람들 앞에서 발표해보는 연습도 할 겸 F-Lab dev club에서 활동중인 개발자분들을 모아 스터디를 만들었다. '제대로 진행이 될까?' 우려했던 것과는 달리 다들 열정도 있고 실력도 좋으셔서 잘 따라가기만 하면 될 것 같다.
이 글은 이번 첫 스터디 모임에서 공유한 주제들을 정리한 내용이다.
오픈소스 패키지 배포 시 고려해야할 것들
첫 순서는 내가 준비한 내용으로 시작했다. 최근 회사 디자이너, 기획자 분들과 소통하는데 있어 어떻게하면 좀 더 빠르고 명확하게 피드백을 주고 받을까 고민하며 다양한 시도를 하고 있다. 이 내용은 그 중 하나인 디자이너분들과 애니메이션 효과 피드백을 위한 오픈소스 프로젝트 제작을 위해 준비해야할 단계에 대해 정리한 내용이다.
Flutter 커뮤니티는 다른 패키지 관리 시스템들보다 쉽게 접근할 수 있도록 다양한 기능을 제공해주기 때문에 보다 쉽게 패키지를 배포할 수 있다. 따라서 이번에는 패키지 버전 관리와 관련하여 어떻게 하면 다른 개발자들이 버전 충돌 문제 없이 잘 사용할 수 있을지에 집중하여 내용을 정리하였다.
발표 내용은 이번 프로젝트를 진행하게된 계기, Flutter에서 패키지를 사용하는 방법, Flutter 패키지 개발, 패키지 버전 관리의 역사(npm, yarn과 비교) 순서로 진행했다.
프로젝트를 진행하게된 계기
회사에서 디자이너분들과 화면 Interaction과 관련하여 소통할 때, 정확하게 의견을 전달하기는 생각보다 매우 힘들다. 가장 명확한 방법은 직접 화면을 보여주는 것이며 이를 모를 사람들은 없을 거라 생각한다. 하지만 스타트업에서 실제로 업무를 진행하다보면 이렇게 진행하기가 어렵다는 것을 알 수 있는데, 크게는 다음의 이유 때문이었다.
먼저 디자이너가 매번 애니메이션 효과까지 적용하기 어렵다. 빠르게 결과물을 찍어내야하는 스타트업의 특성상 디자이너분들이 사소한 디테일 하나하나에 신경쓸 시간이 부족하다. 따라서 UI/UX의 큰 틀을 찍어내고 개발자들은 디자인이 나오는 동시에 개발에 들어가서 디테일한 부분을 볼 시간이 부족했다.
다음으로는 애니메이션 효과를 똑같이 구현하기는 어렵다. 화면 UI/UX를 디자인할 때에는 생각보다 더 많이 주관적인 평가가 들어간다. 따라서 다양한 상호작용 효과들과 이에 들어가는 애니메이션 효과를 만능 EaseInOut으로는 해결할 수 없는 경우도 많다. 하지만 위 첫번째 이유와 마찬가지로 우리에게는 항상 시간이 부족하므로 적당히 비슷한 수준으로 넘어가는 경우가 많다. 예술에 조금이라도 관심이 있는 사람이라면 이 적당이 비슷한 수준의 차이가 얼마나 치명적인지는 알고있을 것이다. 따라서 미리 가능한 효과 목록을 제공해주고 이를 활용하여 디자인 할 수 있도록 하는 것이 하나의 목표였다.
따라서 이 문제들을 해결하기 위해 이미 Apple이라는 대기업에서 제공하는 방식인 SF-Symbols를 참고하여 조금 더 다양한 효과를 넣어볼 수 있는 오픈소스 프로젝트 개발을 시작하였다.
Flutter에서 패키지를 활용하는 방법
Flutter 에서 패키지를 활용하기 위한 pub.dev 소개와 pubspec.yaml
작성 방법에대해 간단히 이야기 했다. 다른 분들도 이미 npm
이나 pnpm
, yarn
을 활용해본 경험이 있어 이와 다른 점에 대해서만 간단히 설명하고 넘어갔다.
JavaScript의 대표적인 패키지 매니저 npm
과 비교해본다면 npm
의 경우 유연한 버전 관리를 지향하고 pub.dev
의 경우 엄격한 버전 관리를 지향하고 있다. 따라서 공유 종속성 문제를 해결하기 위해 pub.dev
에서는 더 큰 범위의 버전을 설정가능하게 해줘야한다. 그 결과 pub.dev
는 의미론적 버전관리를 할 때 최소단위가 메이저 버전이 되었다.
이 외에도 Android 종속성 관리, CocoaPods의 경우 종속성 관리가 불가능한 점을 공유하였다.
Flutter 패키지 개발하기
플러터에서 패키지를 개발하는 방법과 publish_to:
옵션을 통해 배포하는 방법, 비공개 배포나 로컬 배포 방법에 대해 공유하였다. 또 종속성 버전을 관리하는 방법에 대해 얘기하며 다음 내용인 패키지 버전 관리로 넘어간다.
패키지 버전 관리의 역사(npm, yarn과 비교)
패키지 버전 관리를 시작하게된 계기와 공유 종속성을 어떻게 해결하는지, 그럼에도 아직 해결하기 어려운 경우는 어떤 것들이 있는지에 대해 정리하였다.
공유 종속성 해결 문제와 관련하여 npm
, yarn
과 비교하여 pub.dev
가 다른 점을 설명하였다. 세부 내용은 해당 포스트에서 확인하자.