그런데 잠깐, 널린게 RGB 제어 앱인데 뭐하러 또 만드는거야?
가장 큰 이유는 자기계발이었습니다. 예전엔 엄두도 못 냈던 ios 개발 환경이 있다면 그것을 활용해야 하지 않을까요? 또한 현재 아이폰을 사용하고 있기 때문에, 보다 편리한 제어를 원한다면 ios 앱을 사용해야만 합니다. 그런데, 기존에 엠비언트 라이트 블루투스 연동 앱들은 하나같이 뭔가 이상합니다. 앱에 'MADE IN CHINA'가 적혀있지 않음에도, 그런 종류의 앱들은 생김새 자체에서 'MADE IN CHINA'를 울부짖고 있었습니다. 그게 싫었습니다. 그보다는, 앱에서 'Made by WKLabs'를 원했습니다.
시작은 두려움보다는 설렘으로 채우세요.
새로운 것을 시작하는데 전혀 두려워하면 안됩니다. 학교를 졸업했다고 배움에 끝이 있다고 생각하면, 그 순간 인간은 10년은 늙습니다. 1년 정도 전, olleh tv를 시청하시면서 아직도 TV가 동축케이블을 통해 송출되는 줄 아시는 분을 만난 적이 있습니다. 모르는 것은 죄가 아니지만, 배우려 하지 않는 것은 죄가 됩니다. 변화가 빠른 지금은 더더욱 그렇습니다. 20대임에도 변화를 거부하는 친구들이 있습니다. 지금은 문제가 없겠지만, 배우려하지 않는 사고방식이 바뀌지 않는다면, 그 사고방식이 수 십년에 걸쳐 공고해지는 동안, 특이점이 다가오는 이 세상에 어떻게 적응할 수 있을지 안타까운 마음이 듭니다.
어쨌든, 이렇게 블루투스와 연동되는 시스템을 개발할때, 가장 먼저 해야 할 것은 기본 모델을 만들고, 그 다음 리모컨을 만드는 것이 정석일 것입니다. 그런데 이미 ESP32 활용에는 큰 어려움을 겪고 있지 않고, NeoPixel 제어도 크게 문제가 없으니, 제게는 iOS 앱 개발이 가장 큰 난관이었습니다. 큰 과제를 하나 마치면 부수적으로 따라오는 과제들은 상대적으로 쉽게 느껴지기 마련일 것입니다. 그런 의미에서, iOS 앱 개발을 먼저 해보도록 하겠습니다. 그런데, 저는 한 번도 iOS 앱을 만들어 본 적이 없습니다. 그럼에도 일단 Xcode를 설치했습니다. 시작이 막막하고 두려울 수는 있습니다. 그러나 프로그래밍 언어는 한국어 - 일본어, 혹은 중국어 - 영어와의 관계와 비슷합니다. 조금만, 아주 조금만 더 배우면 어느정도 의사소통이 가능합니다.
Re:Zero부터 시작하기는 어려운 iOS
사실 처음부터 시작하기는 너무 오랜 시간이 걸립니다. 저는 이 프로젝트에 너무 많은 시간을 쏟기를 원치 않기에, 시간절약 겸 ios 구조 이겸 어느정도 준비되어 있는 Reference를 토대로 개발을 시작했습니다. 여기에서 BLE를 사용할 수 있는 iOS 앱 예제를 확인하실 수 있습니다.
SwiftUI, Maintenance를 길게 가져가는 최고의 방법
iOS 개발을 시작할 때, 화면 레이아웃 구성 방법과 사용 언어를 지정할 수 있습니다. 애플은 레거시를 싫어하고, 가차없이 몰아내는 경향이 있으니, 적어도 현재 시점에서 가장 최신의 방법으로 개발을 시작하는 것이 수익 창출을 목적으로 만들어지지 않은 앱의 유지 보수 기간을 최대한 길게 가져갈 수 있는 방법이 될 것입니다. 따라서, 엠비언트 라이트를 제어할 BLE Ambient 앱에서는 SwiftUI, Swift를 활용하도록 하겠습니다.
View
SwiftUI 덕분에 간단하면서도 완성도 높고, 유저의 의견을 200%반영하는 앱을 제작할 수 있었습니다. BLE Ambient 앱을 열면 storyboard로 만들어낸 간단한 Launch Screen이 나타나고, 세부적인 설정을 지정할 수 있는 화면이 나타납니다. View를 Section별로 구성하였으며, Toggle, Slider, ColorPicker를 통해 원하는 제어 값을 설정할 수 있도록 했습니다. Information View에서는 관련 정보가 나타나도록 했습니다.
마치며
- 우려와 달리 저 정도 UI 구성과, ESP32와의 BT 통신까지 하루 안에 모든 것이 끝났습니다. Reference의 도움이 있었지만 그래도 시간 대비 높은 결과를 얻었습니다.
- Apple의 컬러에 대한 고집을 확인할 수 있었습니다. ColorPicker의 내부 메서드에서는 ColorPicker로 선택한 색의 색공간에 대한 정보까지 얻을 수 있었습니다. 대단하다는 생각밖에 들지 않습니다. 물론 NeoPixel에서는 Hue와 밝기가 가장 중요한 요소가 되니 큰 의미는 없습니다.
- 이 엠비언트 라이트 시스템과 BLE Ambient 앱은 전적으로 개발자를 위한 이기적인 시스템이기 때문에, 일단은 iOS로 먼저 개발하는 기행을 저지르고야 말았습니다. 추후 스마트폰을 안드로이드 계열로 변경한다면 그 때 쯤에는 안드로이드로도 개발을 진행하지 않을까 싶습니다.
긴 글 읽어주셔서 감사합니다. ❤️와 광고 클릭으로 고마움을 간단히 표현할 수 있습니다.
개발환경(Desktop) | Ryzen 5900X, RTX 3080
개발환경(Laptop) | M1 MacBook Air / Mac OS 15.0 Monterey, Python 3.9, ESP-IDF v4.3, EasyEDA 6.4.24
개발환경(Jetson Nano) | JetPack 4.6[L4T 32.6.1], Python 3.6.9, PyTorch 1.8.0, torchvision 0.9.0, OpenCV 4.5.4
제품 개발 및 기타 문의 | dokixote@wklabs.io 혹은 오른쪽 아래 채팅을 통해 문의