https://blog.jim-nielsen.com/2022/inspecting-web-views-in-macos/
백업용: https://archivebox.esukmean.com/archive/1647058230.121798/index.html
웹 기술이 발전함에 따라 대부분의 영역에서 웹을 이용한 UI 구성이 사용되는것 같다. 임베디드등 특정 영역을 제외한 모든곳에서 어렵지 않게 웹기술을 이용한 UI를 볼 수 있다. 이미 몇년전 부터 Electron을 이용한 어플리케이션은 심심치 않게 보였다. 기존에는 윈도우 프로그램으로 제어하던 서비스도 이제는 웹페이지에서 관리하는 형태가 많아졌다. 윈도우도 webview2라는것을 내면서 웹을 이용한 UI 구성에 발자국을 남겼다.
electron 같은 경우는 webkit 바이너리를 같이 탑제해야(shipping) 해서 악평이 많았다. 메모리 사용률도 높고, 별 것 아닌 프로그램인데 용량도 엄청 컸기 때문이다. 과거 윈도우는 IE엔진으로 webview를 제공했었는데, 부족한 호환성과 기능 때문에 UI 구성을 하기엔 어려움이 있었다. 연장선에서 HTA(HTml Application)을 웹UI의 시초로 볼 수도 있겠지만, 이걸로 의미있는 프로그램을 만들기에는 무리였다.(관련한 작업을 해봤다면 mshtml을 들어봤을 거다.) 최근에는 webview2를 만들어서 배포하긴 하는데, .net framework와 비슷한 길을 걷는것 같다.
맨 위의 블로그 글은 MacOS에서 시스템 설정창 (Preference)을 Webkit에 React를 조합해서 만들었다는 글이다. 짜피 MacOS는 웹킷이 OS에 따라 가니까 활용하기 좋았을것 같다. 충분히 시스템에 무리없이 적용했을 거다는 생각이 든다. 별도로 소스를 작성하는 것 보다 이미 만들어진 webkit을 활용하면서 생산성 또한 높아졌을것 같다. react를 활용하여 더 상위 차원에서 개발이 가능했을 것이다.
이미 많은 웹 렌더링 프로그램이 있다. 가장 많이 쓰이는 Webkit부터 gecko, khtml등 여러 엔진이 존재한다. 각각의 엔진 모두 강력하다. 거기에 React나 Svelte등을 얹으면 기존 GUI 프로그래밍과 차원이 다르게 접근할 수 있다. 렌더링 시스템이 과거의 GUI 프로그래밍과 달리 귀찮은 영역을 직접 해준다. 이미 맨 아랫단은 추상화 되어있다. HTML과 CSS, JS로 렌더링 시스템에 접근하기만 하면 된다. 많은 사람들이 HTML, CSS, JS를 쓰고 있다. 배우는데 어려움도 크지 않다. 그러다 보니 접근성 또한 좋다. 해당 기술들을 직접 끌고 올 수 있다는 점이 큰 장점이다.
또한, 웹으로 UI를 만드는것은 상당히 직관적이다. 여러 GUI 툴을 써봤지만 웹이 가장 난이도가 낮다고 생각한다. 웹 다음이 Visual Studio에서 제공하는 Winform이다. 쉽다 쉽다 하는 Winform을 제칠 정도로 접근하기가 쉽다. 작성한 HTML은 실시간으로 반영된다. 오류가 있을때도 보면서 직접 수정할 수 있다. 기나긴 빌드 시간이 필요하지 않다. 구조상 디자인 영역과 비즈니스 영역이 분리된다. 그래서 코드의 수정이 편리하다. 분업을 할 때도 수월하다.
해당 블로그 글에서 벗어나지만, 멀티 플랫폼을 운영할 때도 좋다. 웹 렌더링 소프트웨어를 일종의 추상화 레이어로 볼 수 있다. OS와 연관된 부분은 알아서 다 해준다. 개발자는 그 위에서 HTML, CSS, JS만 작성하면 된다. 그렇기에 귀찮은 부분은 집어던지고 중요한 부분에 온전히 힘을 쏟을 수 있다. OS별로 모습이 다른것은 랜더링 시스템의 문제이고 책임이다. 그런 문제가 발생하지 않게 해당 개발자들이 열심히 테스트하고 출시한다.
과거에는 QT를 이용해서 비슷한 시도를 했었다. 그러나 QT는 HTML+JS+CSS 조합보다 난이도가 어려웠다. 접근성이 꽤 떨어졌다. QT를 이용하면 사실상 네이티브 어플리케이션을 만들어 낼 수는 있다. (메모리 사용률이나 용량면에서) 그러나 요즈음은 충분히 하드웨어가 좋아져서 그런것 까지 신경쓰지 않는 분위기가 된 것 같다. 하드웨어 비용보다 개발자 비용이 높아지면서 QT로 개발할 시간에 웹으로 개발하는 방향이 된 듯 하다. (여전히 성능이 제한된 장치라면 QT가 잘 쓰인다)
사실 나는 electron등을 이용해 패키징 한 후 배포하는것을 좋아하지 않는다. 어플리케이션의 메모리 사용이 기본 수백메가를 사용하기 때문이다. 그럼에도 웹 기술을 이용한 앱 개발이 늘어갈 추세라고 생각한다. 더 나아가서 대세가 될 것으로 생각한다. GUI를 구성하는데 저것 만한 도구가 없기 때문이다. 조금 더 발전하면 필요없는 기능을 뺀 가벼운 엔진이 나오지 않을까 생각할 뿐이다.
답글 남기기