웹확장 개발소감 그리고 근10년만에 맥앱제출 소회
페이지 정보
본문
이번에 소소하지만 확장개발을 하면서 겪은일이나 소소한 감상을 공유할 까 합니다.
시작은 크롬 웹확장이였습니다. 첫진입이라서 막연하긴 했네요.
크롬 웹확장은 기본적으로 웹개발 패키지이기 때문에 이해가 어렵진 않았습니다.
웹브라우저 확장개발을 위한 프레임워크에대한 이해가 없는 것이 문제일뿐
설정과 확장 메타정보를 작성하는 매니페스트 파일과 나머진 HTML/CSS/JS 파일이죠.
모르는 부분은 챗쥐에게 물어가면서 하다보니 문제해결이 쉬웠습니다. 예전같으면 문서읽고 검색하고 난리였겠는데요.
js 싫은게 파일별로 코드분리하면 귀찮아진다는 건데요. 태생이 one file 개발언어이고 그것때문에 오늘날에는 웹개발 커뮤니티에선 빌더가 발달했기도 했죠.
크롬 확장은 어쨌든 이런 웹개발이기때문에 vite나 tailwindCSS등 사용할수도 있다고하는데 저는 쓰지 않고 그냥 쌩으로 pure js와 css로 작성했습니다.
기능을 붙이고 코드가 커져갈수록 챗쥐한테 물어가기도 난해해지더라고요.
그래도 챗쥐가 잘 아니까 큰 문제는 없었습니다. js를 잘몰라 프론트 개발능력이 안되다보니 드래그드랍은 결국 원하는 모습으로 구현하지 못했네요. 결국 대충넘어가자하고 타협하고 넘어갔습니다.
크롬스토어에 올릴려면 개발자등록 5천원 1회 내야하더군요. 그리고 신규 등록개발자라고 제가 만드는 확장에 "신뢰할수없음" 경고 박아놓습니다(야!)
그리고 본래 제 주사용 브라우저가 맥 사파리인지라 맥 사파리 확장으로도도 개발을 하게됩니다.
마지막 맥앱제출이 2017년?으로 되어있네요. 당시 swift 3 네이티브 개발을 했는데요.
사파리 확장이 예전엔 swift로만 가능했습니다. 그런데 제가 업계를 떠난사이에 크롬확장을 쉽게 포팅하기 쉽게 웹확장개발이 추가되었더군요.
App Extension만 있던게 Web Extension 개발이 추가된거죠. 전자는 iOS 사파리로도 되지만 후자는 iOS에는 안된다고해요.
어쨌든 이 웹확장개발 프로젝트로 시작하면 크롬개발패키지 그대로 파일만 폴더에 넣으면 동작하게 되어있습니다.
하.지.만! 그것은 헬로월드 수준이나 그랬고요.
일단 로컬스토리지 사용 API부터가 chrome 클래스를 썼기때문에 다 바꿔줘야했습니다. 파일이 여럿 나눠졌는데 이제와서 귀찮게 되었길래 그냥 크롬코드쪽에서 공용객체를 쓸수있게 리팩토링을 해서 다시 작성했습니다.
그리고 애플특유의 제약으로 같은 기능의 API는 있어도 그대로 동작은 안되는 것들이 있었습니다.
크롬개발 할 땐 귀찮아서 메시지방식을 안쓰고 여기저기 코드에서 바로 로컬스토리지 접근을 했는데요. 사파리에서는 웹페이지에 인젝션되는 js와 팝업/백그라운드 js사이에 확장의 로컬스토리지 공유가 안되더라고요. 그때문에 또 데이터흐름을 전부 메시지방식으로 다 바꿔야했습니다.
이게 굉장히 비효율적이 되는게 단축키확장이라서 단축키를 누를때마다 메시지요청을 하는 방식으로 만들어야했네요.
그외 브라우저 기본 얼럿창를 못쓰는 문제, 백업파일 다운로드링크 만들어서 다운로드를 못하는 문제등이 있었습니다.
이런 것들을 저도 모르는게 문제긴하지만 확장개발 정보가 크롬위주로 되어있다보니 이런저런 다른점에서 사파리에서의 워크어라운드가 공유되지 않았다보니 챗쥐도 아무말 대잔치였다는 겁니다. 더구나 사파리확장은 app확장개발과 web확장개발로 나누어져있는데 개발정보공유가 차라리 전자가 더 많이 되어있으니 더 그렇습니다.
개발내용 공유가 활성화 되어야하는데 하면서도 저 자신조차 그런거 하나하나 풀어내기엔 현생사느라 시간부족하고 블로그/유튜브올린다고 생활이 나아지는 것도 아니고 그렇네요.
프레임워크 이해가 부족한 상태에서는 AI도 효율이 참 떨어집니다. AI때문에 공부를 적게해도 되는 세상이 되긴했지만 한편으로 개발자의 바보상자 아닐까 합니다. 급할땐 어떻게든 돌아가면 됐지 마인드가 있잖아요. AI가 그걸 가속화 시킵니다. 이 코드가 왜 돌아가는지는 나도 몰라같은 코드들이 쌓여갑니다. 한편으로 API가 다 그런거긴하지만 말이죠.
지금까지도 응용프로그래밍분야는 몰라도 사용만할줄 알면되는 그런 개발이긴 했지만 AI발전이 계속되면 앞으로는 애초에 응용프로그래밍 분야 자체가 사라질 것 같습니다. 프레임워크 규칙이해와 설계가 중요할뿐이죠. 미래의 개발은 프로그래밍이 아니라 '오크스트레이션'으로 향할 것으로 보입니다. 지금도 반쯤 이미 그렇고요.
사파리 확장으로 만들면서 난관은 Xcode 빌드세팅이며 사이닝이며 제일 하기 싫은단계가 오니 진도가 안나가더군요. 망할 애플 사이닝은 손댈 때마다 당췌 모르겠습니다.
사파리 확장개발에서 가장 불만인 건 확인안된 개발자 취급이었습니다.
맥앱은 자체배포가 가능한데 앱스토어가 안받아주면 자체배포하면 그만이거든요. 코드사인을 하면 '확인된 개발자'되서 실행에도 문제없습니다.
그런데 웹확장은 그게 아니더군요. 인증서며 프로비저닝이며 분명 검증된 배포용 코드사이닝을 해서 배포파일(.app)을 만들었는데도 사파리에서 '확인되지않은 개발자 확장보이기' 옵션을 켜줘야 나왔습니다
이거때문에 코드사인이 뭘 잘못한건가 한참 헤멨네요. 결국 요지는 제 개발자명의의 인증된 코드사인이더라도 앱스토어에 배포한 것만 그 옵션없이도 확장이 설치가능한 것이었나 봅니다.
그냥 나혼자 써도 그만인거 만든거다보니 이 단계에서 정말 때려치고 싶었습니다 망할 Xcode! ㅎㅎㅎ 코딩만 하면되는 행복한 개발을 하고 싶습니다. 그래서 사람들이 웹개발을 좋아하는지도요.
애플 리뷰어 장벽도 걱정이었네요. 과거 애플디바이스 개발을 떠난 이유가 그런거였던거 같아요. 납득안되는 리젝사유에 막혀 짧게는 수개월 길게는 일년 노력이 통채로 부정당하는 일이 연속되니 지친거죠.
앱스토어 커넥트에서 소개스크린샷, 개인정보방침 페이지 이런거 만들어올리는게 왜그리 귀찮던지요. ㅎ
그런데 요새 애플이 달라졌나? 7시간만에 승인 완료되더라고요.