적당한 선에서 끊기가 어렵다

2 min read

올해 내내 일에만 파묻혀 살다가 오랜만에 개인 프로젝트를 했다. 맥에서 쓸 GUI 만들려니 역시 Swing만큼 익숙한 게 없어서 오억 년 만에 자바를 쓰는데, J2SE에 있는 클래스나 메서드는 다 기억나서 편했지만 Java라는 언어 자체를 도저히 못 참겠어서 Kotlin으로 작업했다. 레이아웃 매니저는 MigLayout을 썼고, 맥 앱 패키징은 JDK 15에 번들된 jpackage를 썼는데 훌륭했다.

UI 디자인을 직접 할 일이 가끔 있어서 학습을 위해 잘 정리된 앱 UI를 틈날 때마다 봐서 감각을 올리곤 한다. 그러기 위해 ui8.net 같은 곳에서 제공하는 UI Kit들을 레퍼런스로 쓰는데, PSD로 열면 메모리 19G 먹으며 별나라로 가버리기 때문에 파이썬 psd-tools를 써서 그룹 레이어별로 정리하는 스크립트를 만들었다. psd-tools는 성능이 느린 것을 빼고 생각보다 아주 잘 동작했다. 하지만 Text 요소들의 폰트 정보들을 제대로 가져오지 못하는 문제가 있었다.

Sketch 소스는 zip을 풀고 나면 다 JSON으로 보관되어 있어 편해 보였지만, 정말 모든 게 다 JSON으로 있어서 렌더러를 만들 엄두가 안 나서 제외했다.

Adobe XD는 스케치처럼 zip에 JSON 형식인데 폴더나 JSON 구조가 훨씬 더 깔끔했다. 하지만 역시 렌더러 만들기는 엄두가 안 나서 좋은 방법이 없을까.. 고민하다 Adobe XD 플러그인을 살펴봤다. SDK가 JavaScript고 생각보다 API 설계가 잘 되어 있어서 XD 플러그인 만들기로 방향을 바꿨다. XD 플러그인 SDK의 핵심은 require('scenegraph')인데 문서가 있긴 했지만 코딩 중에 문서 왔다 갔다 하는 건 못 참아서.. 원본 코드를 찾아보려고 Adobe XD 바이너리를 뒤져봤는데 결론은 JS 인터페이스로 노출했을 뿐이고 139MB짜리 바이너리 속에 꼭꼭 숨어있었다. 깔끔히 포기하고 문서 보고 플러그인 만들기로 했다.

개인 프로젝트를 할 때마다 마주하는 문제다. 적당한 선에서 끊을 수가 없다. 인위적으로 자원을 제한하지 않으면 결국 이 프로젝트도 영영 끝나지 않을 것이다.

Continue Reading

Discover more thoughts and insights