안드로이드, 코틀린 그리고 TSBOARD
2025-01-177 분 소요0
TSBOARD는 v1.0.3을 기점으로 우선은 좀 시간을 두면서 코드 개선이 필요한 부분들이 어디인지 살펴보고 있습니다. 그러는 동안, 저는 다소 뜬금 없지만 안드로이드 앱을 만들어보려고 합니다. 그것도 TSBOARD로 제작된 커뮤니티를 위해서요. (아직은 여기 뿐이지만…?) 저는 갑자기 왜 안드로이드를, 그것도 플러터나 React Native 같은 방식으로가 아닌 코틀린으로 네이티브 개발을 하려는 걸까요?
내 손안의 컴퓨터 세상, 모바일 웹 만으로는 부족해
TSBOARD를 개발할 때 모바일 버전과 PC/태블릿 버전을 함께 고려해서 개발 하기는 했습니다만, 그럼에도 약간 아쉬운 부분들은 존재합니다. 물론, 대부분의 기능들이 무리없이 모바일 브라우저에서 동작하기 때문에 앱 푸시 알림 같은 기능들을 제외한다면 이론적으로 안되는 건 그리 많지 않습니다. 그러나, 브라우저가 아닌 앱이 줄 수 있는 더 다양한 기능들과 더 부드러운 UI, 그리고 앱 아이콘을 찾아서 터치만 하면 바로 접근 가능한 점 등은 앱 개발에 대한 나름의 동기부여를 해줍니다.
유명한 커뮤니티 사이트들을 살펴보면, ① 해당 사이트의 내용을 크롤링해서 더 보기 편하게 해주는 앱이 있거나 ② 아예 자체적으로 앱을 개발해서 배포하는 경우가 종종 있습니다. ①의 경우 해당 사이트가 API를 제공하면 모르겠지만, 대부분은 제공하지 않기 때문에 크롤링이 언제나 가능하지는 않을 수 있고, 또 API가 공개 되어 있더라도 내부 사정에 의해 언젠가 바뀌게 되면 무용지물이 되는 경우도 있습니다. ②의 경우는 당연히 더 나은 상황이지만, 이렇게 자체적으로 지원하려면 커뮤니티 사이트 운영진이 추가로 앱까지 개발하고 유지/보수해야 하는 문제가 있죠.
여하간 이렇게 커뮤니티 사이트들을 살펴보면, 웹 만으로는 부족하다고 느끼는 분들이 많은 건 확실해 보입니다. 저 역시도 브라우저 영역이 예전 대비해서 훨씬 확장되고 더 강력하다는 것은 인정합니다만, 그럼에도 여전히 브라우저의 영역 밖에서 더 강력한 컴퓨팅 파워를 쓰고 싶은 갈망은 계속 있어왔습니다. 그러던 것이 결국 TSBOARD v1.0.0 공개를 기점으로 조금씩 분출되어 앱 개발까지 이어지게 되었습니다.
왜 크로스 플랫폼이 아닌가?
이왕 웹 개발과 조금 떨어져서 개발할거면, 웹 기반의 크로스 플랫폼은 아니길 희망했습니다. (아닐 수도 있지만) 너무 뻔하고, 제가 목표로 하는 더 부드러운 UI에도 그렇게 부합하지 않는다고 생각했기 때문입니다. 물론 구글이 밀고 있는 플러터(Flutter)의 경우 언젠가 데스크탑 애플리케이션을 개발할 날이 오게되면 그 때는 주저없이 선택하겠지만, 모바일에서는 아직까지 네이티브 개발이 퍼포먼스를 끌어내는데 유리하다고 판단했습니다.
이성적으로는 크로스 플랫폼으로 개발을 해야, 한 번에 안드로이드와 아이폰을 공략할 수 있으니 그렇게 하는 게 맞지 않나? 라고 생각했습니다. 그러나 TSBOARD 앱이 나온다면 그건 웹과는 확실히 달라야 한다는 생각이 들었고, 퍼포먼스 측면에서 보다 모바일 기기의 자원을 더 쉽게 끌어다 쓸 수 있기를 희망했기에 그러지 않았습니다. 감성적으로는, 이번 기회에 써보고 싶었던 코틀린(Kotlin)을 제대로 체험해보고 싶다는 생각이 들었습니다. 마침 업무적으로도 이제 써볼 기회가 생겨서 궁금하던 차였기에, 이왕 배우게 될 거 TSBOARD의 안드로이드 앱 개발에도 활용해보자는 생각이 들었습니다.
코틀린은 TSBOARD의 백엔드 언어로 한 때 유력하게 고민했던 언어입니다. 자바와 100% 호환되는 언어이고, 문법 설탕도 어느 정도 달달하게 들어가 있고, 여러 모로 개발자의 생산성에 집중한 언어에 Null Pointer Exception (NPE)을 막기 위한 안전장치까지 마련되어 있는 “요즘 언어” 라고 할 수 있습니다. 백엔드에서는 최종적으로 더 심플하고 제 기준에 딱 부합하는 Go 언어를 선택하면서 코틀린을 써볼 기회가 사라졌지만, 이제 TSBOARD 앱을 개발하게 되면서 다시 코틀린을 만나게 되는 셈입니다.
안드로이드 앱을 먼저 만드는 이유?
쓰는 장비들이 사과 농장에 버금가는 수준이라, 사실 처음에는 iOS용 앱을 개발할까 고민 했었습니다. 겸사 겸사 Swift 언어도 배우면서요. 그러나 업무적으로도 코틀린을 써야 하는 상황에서, 동시에 2개의 언어를 배워가며 이것 저것 하는 건 비효율적이라 생각 했습니다. 더군다나 저의 경우 업무용 스마트폰으로 이미 안드로이드 기기(Galaxy S23 Ultra)를 가지고 다니는데, 여지껏 한 번도 안드로이드 앱을 만들어 본 적이 없다는 사실이 뭔가 부끄럽기도 했습니다.
또한 앞서 언급한대로, 코틀린이라는 언어에 대한 갈증이라고나 할까요? 그런 점들이 분명히 있었기 때문에 고심 끝에 안드로이드용 앱을 먼저 만들어보기로 결정했습니다. 사실 이것 말고도 애플 개발자 등록 비용이랄까 그런 부분도 없잖아 고민을 했었습니다…😊
TSBOARD APP : 2025년의 목표
우선 올해는 TSBOARD를 안정적으로 개발하는 게 제일 큰 목표입니다. v1.0.z 버전대에서는 Go 언어로 작성된 백엔드의 퍼포먼스를 좀 더 높이는 목표를 설정하였고, 이어서 v1.1.0 에서 더 다양한 기능들을 담아낸 다음, v1.2.0 에서 쇼핑몰 기능도 추가해 보려고 합니다. 그러는 한 편, TSBOARD 안드로이드 앱을 개발하면서 TSBOARD의 다양한 기능들을 안드로이드 기기에서 보다 편리하게 사용하고, 푸시 알림 같은 걸 누릴 수 있도록 할 생각입니다.
이렇게 개발한다면 아마도 아래와 같은 게 가능해 질 것입니다.
TSBOARD로 제작된 커뮤니티 사이트는 따로 앱 개발이 필요 없어집니다. TSBOARD APP을 설치해서 해당 사이트를 등록하기만 하면 되니까요. 운영자분도 별도 앱 개발 없이 커뮤니티 회원분들에게 앱 설치 가이드만 제공하시면 됩니다.
TSBOARD로 운영되는 커뮤니티 사이트는 보다 컨텐츠에만 집중하실 수 있습니다. 사이트 유지/보수를 위한 여러 골치아픈 작업들부터 앱까지 개발에 관여하실 필요가 없습니다. 그 시간에 더 알찬 컨텐츠 생산과 관리에 시간을 쏟으실 수 있습니다.
TSBOARD 기반 커뮤니티를 이용하시는 회원 분들은 기존 사이트 이용 및 앱을 통한 푸시 알림도 원할하게 받으실 수 있습니다. 또한 앱 기반에서 동작 가능한 여러 부가 기능들 (키워드 푸시 알림 등)이 가능해 질 것입니다.
아직은 이렇게 할 수 있지 않을까…? 막연히 생각만 해보면서 이제서야 안드로이드 스튜디오를 설치하고 코틀린을 배워나가는 상황입니다만, 목표만 흔들리지 않는다면 더 많은 분들에게 실질적으로 유용한 플랫폼이자 앱이 될 것이라 믿습니다. 그렇게 되도록 작년 한 해 열심히 달려온 TSBOARD를 더 좋은 성능과 더 다양한 기능들로 무장시키고, 또 앱도 천천히 하지만 즐겁게 만들어 가보려고 합니다.
TSBOARD 안드로이드 앱은 아래 링크에서 코드를 보실 수 있습니다. 아직은 미약하지만, 올해가 가기 전에는 어느 정도 성과가 나와 주기를 기대해 봅니다…!
