앱이나 웹(웹은 잘 모르긴하지만 웹도 마찬가지일거라고 생각한다 )을 만들때 디자인의 역할이 매우 중요한 것 같다.
이번 WWDC23 Swift Student Challenge에 제출할 앱을 만들게 되면서 디자인의 역할이 단순히 보기좋거나 사용하기 편한것뿐만 아니라 성능과 연결된다고 생각하게 되었다.
이 앱을 만들면서 AR기술과 AI(Vision)기술이 사용되었고 네트워크가 사용된다는 사실을 알게되기 전까지는 음성인식 기술도 사용하였다.
이렇게 많은 것들을 한번에 작동시키다보니 성능적인 문제가 발생할 수 밖에 없었고 아이패드가 금방 뜨거워지는 결과가 발생하였다.
중간에 성능적인 부분을 해결하려고 메인 AR뷰에서 sheet이 나오게되면 메인 AR뷰의 카메라가 작동하는것을 멈추도록 설계하였다(init과 deinit을 사용하여서).
그때 당시에는 성능이 어느정도 개선된것 같았고 만족스러웠지만 디자인에 대한 부분은 생각하지 못하였다. 제출을 한 뒤에 친구로부터 디자인에 관련된 피드백을 듣게되었고, 디자인과 성능에 관계에 대해 생각해보게 되었다.
친구의 피드백은 대충 이랬다. "그냥 버튼을 배치하지말고 SplitView를 사용하여서 좀더 순서를 잘 정리해서 사용자에게 보여주면 어떻겠냐" 이 외에도 디자인에 관련된 몇가지 피드백이 더 있었지만 핵심은 이거였다.
이 얘기를 듣고나서 생각을 해보게 되었는데, SplitView를 사용하여서 뷰를 하나씩 차례대로 보여주면 사용자 입장에서 사용하기도 더 편리하고 개발자 입장에서봐도 한번에 하나의 View만 보여주면 되니까 성능적인 부분에서 개선될 수 있다고 생각하게 되었다.
웹도 이것과 마찬가지 일거라고 생각한다.
예를들어 어떤 웹사이트의 백엔드와 프론트엔드 코드가 있고 이 백엔드와 프론트엔드 코드를 수정하여서 이 웹사이트에서 전체적으로 발생하는 비용을 줄이는 과제를 받았다고 하면 프론트엔드 코드수정이 백엔드를 수정하는것보다 더 쉽고 강력하다는 생각을 하게되었다.
백엔드 코드에서 알고리즘이나 여러가지 프로그래밍 기법이나 CS의 컨셉들을 사용하여 백엔드를 수정하는것보다 프론트엔드 부분에서 불필요한 콘텐츠들을 제거하고 UI를 더 심플하고 성능적으로 더 좋은 성능을 낼 수 있도록 바꾸고 불필요한 페이지들을 삭제하거나 다른 페이지에 포함하는 식으로 변경한다면 전체적인 성능이 더 좋아질 거라는 생각을 하게되었다.
백엔드에서 알고리즘을 수정하여 조금 성능을 향상시키는것도 중요하지만 사용자입장에서 생각했을때 대부분의 비용들은 프론트엔드부분의 컨텐츠들을 그리는것에서 발생하고 이것을 줄이는것도 중요한것 같다.
물론 그렇다고해서 프론트엔드만 수정하면 성능이 잘나온다는것은 아니지만 프론트엔드를 좀더 성능이좋게 설계하는것도 중요한것 같다.