성빈랜드의 과거와 미래 (2)

성빈랜드에 대한 두 번째 이야기

Ji Sungbin
성빈랜드
10 min readOct 11, 2022

--

Photo by Lanju Fotografie on Unsplash / 요새 날씨가 사진처럼 많이 춥네요,, 다들 따듯하게 입고 다니세요

지난번 1편에 이어 작성되는 2번째 시리즈 입니다. 1편이 작성된 7월 9일엔 팔로워가 103명이였는데 약 3달만에 97명의 추가 팔로워를 얻을 수 있었습니다.

성빈랜드에 첫 글이 작성된 날짜인 2021년 9월 16일을 기준으로 생각해 보면 103명의 팔로워를 얻기 위해 거의 10달이 걸린 반면, 100명을 달성한 이후론 훨씬 줄어든 3달만에 200명을 달성했다는 점에서 너무 감사하게 생각하고 있습니다. 지금 이 글을 봐주시고 계실 분들을 포함해서 제 미디엄을 구독해 주시는 모든 분들께 감사 말씀 드립니다. 약 50분 정도는 외국 분들 같은데, 가끔씩 BetterProgramming 에 영어로 글을 작성했던게 팔로워 형성에 도움이 많이 됐던거 같습니다. 영어가 많이 미숙해서 대부분 번역기에 의존하여 쓰고 있는데 BttrProgramming 에디터분께서 최종 publish 전에 검토를 다 해주셔서 덕분에 약간 걱정을 덜고 작성할 수 있었습니다. Anupam Chugh thanks 🙏.

요즘은 여러 프로젝트들과 스터디가 생기면서 성빈랜드와 BttrProgramming 에 모두 글을 못 올리고 있습니다. 정확히 말하면 BttrProgramming 에는 글을 올리기 위해 번역하는 과정을 거쳐야 해서 시간이 2배로 걸리는데 이 시간이 없고, 성빈랜드에는 앞으로 올릴 주제들이 어려운 주제들이라 추가 공부가 필요해서 못 올리고 있었습니다.

현재 성빈랜드에 올릴려고 준비중인 주제들은..

  • 덕키팀에서 CI/CD 를 활용하는 방법
  • 안드로이드 Context 심층 분석
  • 안드로이드 Lifecycle 호출 타이밍 분석
  • 안드로이드 Fragment 가 관리되는 원리
  • 안드로이드 TextView 에서 실제로 텍스트가 그려지는 원리
  • Jetpack Compose 의 Text 컴포저블에서 실제로 텍스트가 그려지는 원리
  • Jetpack Compose 의 스냅샷 시스템 200% 활용하기
  • 코루틴 Dispatcher 의 작동 원리 및 Worker 파해치기

정도가 있습니다. CI/CD 글을 제외한 대부분 애매하게 이해가 된 상태라 올해 안에 작성은 힘들거 같고 아마 내년에 차례대로 작성될 거 같습니다. CI/CD 는 제가 덕키 프로젝트에서 가장 큰 관심사였기도 하고 개인적으로 가장 만족하며 사용하고 있는 부분이기도 해서 조금 더 워크플로우를 보안안 후에 11월 안으로 작성해 보려고 합니다. 덕키에 대해 잠깐 언급해 보자면 트위터와 당근마켓을 합친 자유로운 덕질과 편리한 굿즈 거래를 위한 서비스 입니다. 메인 피쳐만 담은 MVP 는 10월 말 출시 목표이며, 전체 피쳐를 담은 full 앱은 내년은 되야 출시될 것으로 보고 있습니다. 덕키팀의 린트 개발을 담당해 주신 임세현님께서 어제 “덕키팀에서 Custom Lint를 만드는 여정” 이라는 새로운 기술 글을 작성해 주셨습니다. 세현님의 첫 미디엄 글인데 처음부터 200+ clap 을 받은 글이니 관심이 가신다면 읽어보시길 추천드립니다.

다시 원래 얘기로 돌아오자면 성빈랜드가 팔로워 200명을 찍기까지 개인적으로 큰 이벤트가 2가지 있었던거 같습니다.

우선 첫 번째로 성빈랜드의 첫 스터디가 진행됐습니다. 생각보다 많은 분들이 관심보여 주셔서 감사하게 저 혼자서 진행되는 일은 발생하지 않았습니다. 대부분 경력자 분들이 함께 해주셔서 제가 배운 점이 굉장히 많은 스터디였습니다. 현재 안드로이드 스터디는 Fragment 로 마지막 주차를 남긴 상태이고, 코루틴 스터디는 마무리된 상태입니다. 안드로이드 스터디를 진행하면서 함께 해주신 Quokkaman님의 미디엄에 많은 내용들이 정리됐으니 이번 스터디에서 어떤 내용들이 오갔는지 궁금하신 분들은 참고해 보실 수 있습니다.

코루틴 스터디에서는 코루틴 의외에 정말 많은 동시성 관련 CS 지식을 배울 수 있었습니다. 덕분에 다시 한 번 CS 지식의 중요성을 느꼈고, 그동안 atomic 관련을 분석하다가 종종 보였던 while(true) { return [something] } 의 목적을 깨우칠 수 있었습니다. 이번 스터디에 함께해 주신 분들 모두 감사합니다.

두 번째 이벤트로는 제 글 작성 방식에 대해 몇몇 조언을 들을 수 있었습니다. 저는 제가 작성하고 싶은 글의 주제를 다음과 같은 기준으로 선정합니다.

  • 한 번 봤을 때 호기심을 느꼈고
  • 많이 쉽지도 않으며, 많이 어렵지도 않은(많은 CS 지식을 요구하지 않는) 적당한 조화를 이루고 있는 난이도
  • 마지막으로 너무 없지도 않고, 너무 많지도 않은 약간의 레퍼런스가 존재하는 주제

2번 기준의 경우는 아직 다양한 CS 지식과 실무 경험이 없는 저에게 너무 쉽다면 다른 분들도 쉬울 확률이 높기 때문에 굳이 성빈랜드까지 찾아올 필요가 없겠다고 판단했고, 너무 어렵다면 제가 잘못된 정보로 이해할 확률이 높기 때문에 기준으로 삼았습니다. 3번 기준의 경우도 2번 기준과 동일하게 너무 자료가 없다면 제가 잘못된 정보로 이해할 확률이 높고, 너무 많다면 굳이 성빈랜드까지 찾아올 필요가 없겠다고 판단하여 기준으로 삼았습니다.

저는 위 기준에 적합한 주제가 생기면 해당 주제에 대해 보이는 몇몇 아티클들을 우선 읽어봅니다. 3번 기준에 의해서 찾을 수 있는 아티클들이 몇몇 없기 때문에 이해가 거의 되지 않고 대충 문맥만 파악한 상태로 추가 다이브를 진행합니다. 보통 해당 아티클들을 모두 번역해서 오랫동안 자주 복습해 보고, 저만의 방법으로 쉽게 이해가 됐을 때 이 이해된 내용들로 성빈랜드에 아티클 작성을 시작합니다. 아무래도 공부를 하는 과정에서 한 아티클들을 여러번 반복하여 읽고, 오랫동안 보게 되어 원본 아티클의 형식과 유사한 방향으로 성빈랜드에 글이 작성되는 경우가 몇몇 있는거 같습니다. 이 점을 눈치채신 분들께서 참고했던 글을 글 하단에 레퍼런스로 남겨주는게 좋을거 같다는 조언을 동일하게 해주셨습니다.

저에게 너무나도 필요했던 글쓰기 관련 조언이였고 저도 이게 당연하겠다고 느껴 앞으로 글 하단에 참고한 글들을 레퍼런스 해둘려고 합니다. 기존에 작성된 글들이 꽤 많아 기존 글들을 모두 바꾸진 못하였고, 제가 컴포즈 내부 분석 시리즈를 연재하면서 가장 큰 도움이 됐던 두 레퍼런스를 소개해 드릴려고 합니다.

전 컴포즈 내부에 대해서 작년 말부터 공부를 시작했습니다. 그때 당시에는 Jorge Castillo 님의 Jetpack Compose Internals 책이 유일한 레퍼런스였습니다.

내용은 정말 좋으니 컴포즈 내부에 대해 관심이 있으시다면 한 번쯤은 꼭 사서 보시길 강력히 추천드립니다. 전 이 책을 통으로 번역하여 거의 5개월 동안은 반복해서 봤던거 같습니다.

수많은 공부의 흔적들

다음으로 컴포즈 스냅샷 시스템에 대해선 Zach Klippenstein 님의 Introduction to the Compose Snapshot system 글이 정말 좋았습니다.

이 글도 제가 스냅샷 시스템을 공부할 당시에는 유일한 레퍼런스였습니다. 컴포즈 스냅샷 시스템에 관심이 있으시다면 한 번씩 봐보시는걸 추천드립니다.

저는 이렇게 2개의 레퍼런스를 위주로 컴포즈 내부 공부를 진행해 왔습니다. 하지만 역시 레퍼런스가 매우 부족하여 내부 공부가 쉽지만은 않았습니다. 그래서 내부 공부를 진행하면서 StackOverflow, Kotlinlang 에 많은 질문을 했었습니다.

이 과정에서 나온 한 질문이 4K 가 넘는 viewed 가 됐길래 좋은 질문일 수 있겠다 싶어서 공유해 봅니다. 또한 한 가지 더 공유드리고 싶은 질문-답변이 있습니다.

컴포즈 UI 에서는 레이아웃 노드를 방출시키기 위한 방법으로 ReusableComposeNodeComposeNode 가 있습니다. 저는 Compose UI 를 이해하기 위해선 이 두 가지의 차이점을 확실하게 이해해야 되겠다고 생각했고, Kotlinlang 에 질문을 통해 만족하는 답변을 얻을 수 있었습니다. Compose UI 에 관심이 있으신 분이라면 역시 한 번쯤은 답변은 봐보는 것을 추천드립니다.

이 밖에도 위에서 잠깐 소개드렸던 Jetpack Compose Internals 책의 저자분인 Jorge 님과 1대1 슬랙 메시지를 통해 질의응답을 주고 받으며 책에 명확하게 나와있지 않던 헷갈리던 부분들에 대해 많이 해결할 수 있었고,

이 밖에도 8번의 질문이 더 있었습니다. 매번 받아주셔서 감사합니다 Jorge 님

메일 기록이 너무 많이 쌓여 질의응답을 주고 받았던 메일을 찾진 못했지만, 구글 컴포즈팀에서 일하시는 분들께 이메일을 통해 질문을 하여 여러가지 정보들을 얻을 수 있었습니다. (구글러 분들의 이메일은 구글 커밋 기록에서 찾을 수 있습니다, 물론 질문하기 전에 질문해도 괜찮냐는 식으로 먼저 동의를 구했습니다.)

이렇게해서 거의 8개월간에 컴포즈 내부 공부 끝에 Jetpack Compose 내부 분석하기 시리즈가 완성됩니다.

성빈랜드의 Top View 를 가진 글들을 잠깐 보여드리자면 Jetpack Compose 분석하기 글이 11위에 위치해 있습니다.

앞으로 쓸 글들이 많이 남았는데 개인적으로 컴포즈 관련 글들이 Top View 를 차지했으면 하는 마음입니다.

내년에는 성빈랜드 안드로이드 컨퍼런스를 열어보고 싶어서 설레발이 가득찬 상태입니다. 그래서 연사로 부탁드리고 싶은 분들께 미리 긍정 여부를 여쭤보기도 했고, 성빈랜드 2023 컨퍼런스 앱 제작을 준비하고 있습니다. 컨퍼런스 앱은 저처럼 아이폰을 쓰는 안드로이드 개발자 분들을 위해 KMM 으로 제작할 예정이며, 실제로 컨퍼런스가 열려서 쓰이게 된다면 너무 좋고 그렇지 않아도 KMM 을 경험해 볼 좋은 프로젝트로 생각하고 있습니다. (혹시 성빈랜드 컨퍼런스에 관심이 있으시다면 연락 부탁드립니다..ㅎㅎ)

마지막으로 성빈랜드 오픈채팅방이 몇 주째 100명 풀방을 유지하고 있습니다. 개인적으로 인원이 너무 많아지면 번잡해 지는것과 질문이나 좋은 자료들도 금방 묻히게 되는게 아쉬웠어서 성빈랜드 오픈채팅방은 100명 제한을 쭉 유지할 생각입니다.

성빈랜드에 많은 관심 보여주셔서 감사하고, 점점 더 성장하는 성빈이 되겠습니다. 이상 성빈랜드에 대한 두 번째 이야기를 마치도록 하겠습니다. 끝까지 읽어주서서 감사합니다!

--

--

Ji Sungbin
성빈랜드

Experience Engineers for us. I love development that creates references.