Search
🤼

Android는 이렇게 안되어 있는데요?

간혹 iOS와 Android 앱간의 ‘완전한 동일함’을 추구하시는 분들이 계십니다. 모바일이라는 플랫폼으로 묶을 수도 있고 비슷한 UI, UX를 가지고 있어 보는 시각에 따라 서로 다른 의견을 갖기 쉬운 부분인 것 같아요. 이 글에서는 iOS개발자의 편협한 시각으로 두 플랫폼이 유사하면서도 조금 다르다는 것과 그 다름을 대함에 있어 조금 더 유연한 생각을 갖는데 도움이 되었으면 좋겠습니다.

iOS와 Android는 다른 플랫폼입니다.

하드웨어 적으로 비슷한 스펙을 가졌죠. 디스플레이나 모바일 AP, 카메라 등 기본적으로 스마트폰이라고 불리는 범주 안에 들어가 있으니 비슷하게 보이는게 당연합니다. 그저 제조사만 다른거라고 보기 쉽죠.
하지만 OS가 다르다는건 생각보다 많은 걸 의미합니다.
OS가 디바이스안에서 구동되는 방식은 물론, 앱을 개발하는 프로그램, 언어, SDK가 모두 다릅니다.
서로 다른 회사에서 만드니까 당연한거죠.
‘같지 않다’는 개념은 생각하는 것보다 넓은 범위에 적용됩니다.

기능을 개발하는 속도가 다릅니다.

개발자의 역량과는 별개로 각 플랫폼에서 제공되는 SDK에 따라 차이가 발생합니다.
간단하게 예를 들어 앱에서 Toast 메시지를 보여주기로 했다고 가정한다면,
두 플랫폼의 개발기간은 얼마나 걸릴까요?
안드로이드는 코드 한줄이면 됩니다.
Toast.makeText(context, "Hello toast!", Toast.LENGTH_SHORT).show()
Kotlin
복사
1분이나 걸릴까요?
그럼 iOS는 얼마나 걸릴까요?
SDK에서 제공하지 않으니 직접 구현해야 합니다.
오픈소스를 활용할 수도 있겠죠.
처음 구현한다면 2~3일 정도는 써야 만들 수 있을껍니다.
여기에 QA까지 통과할 안정성을 가져야하는 과제도 있죠.
이렇게 구현하고자 하는 기능에 따라 개발에 쓰이는 시간이 다르니 완료되는 시간도 다를 수 밖에 없습니다.
개발자의 역량이 부족한게 아니에요.

꼭 같은 날 같은 시간에 같이 업데이트 해야 하나요?

위 같은 상황이 되면 무슨일이 생길까요?
안드로이드는 1분만에 개발을 완료합니다.
iOS는 2일이 걸렸습니다.
1분만에 만든 SDK에서 기본제공하는 기능은 반나절만에 QA가 종료되었습니다.
2일 걸려서 직접 만든 검증 안된 기능의 QA는 이슈가 여러개 나왔습니다.
그동안 안드로이드는 다음 버전에 들어갈 일을 합니다.
iOS가 하루걸려 QA 이슈를 모두 수정하고 2차 QA를 통과 했습니다.
이제 앱스토어에 심사 요청을 합니다. 하루 걸립니다.
옵션) 다음날 업데이트 문구에 문제가 있다며 메타데이터 리젝을 날려줍니다.
답변하고 재심사를 기다립니다.
다행히 그 다음날 심사에 무사히 통과했습니다.
이제 사용자들에게 출시하기 위해 출시 버튼을 누릅니다.
이때, 안드로이드도 출시버튼을 누릅니다.
안드로이드가 적어도 3일정도는 먼저 출시 준비가 되었는데, 왜 배포할 수 없는걸까요?
고작 메시지를 하나 띄우는 일인데 말이죠.
그때그때 유연한 판단이 필요한 문제지만,
기본적으로 각자의 타임라인에 맞춰 개발하고 배포한다. 는 원칙을 가지고 가면 더 유연한 관리가 가능해집니다.

물론 함께 배포해야 하는 상황도 분명 있습니다.

대규모 마케팅을 할 예정이라 날짜를 정확하게 맞춰야 하는 경우,
서버가 단계별로 대응하기 어려워 서비스 중단을 각오하고 일시에 배포하는 경우 등이 있죠.
하지만 대부분의 경우, 각 플랫폼 별로 준비되는대로 배포한다고 해서 어떤 문제가 생기지는 않습니다.

사용자 경험이 완전히 동일 할 수 없습니다.

가끔 “고객들의 사용자 경험이 동일해야 한다.” 며
아이폰과 안드로이드폰을 함께 쓰는 사람에 대한 이야기를 하는 경우도 있는데,
사용자 중 안드로이드와 iOS를 동시에 쓰는 사람의 비중은 얼마나 될까요?
오히려 PC와 함께 쓰는 사람이 더 많지 않을까요?
하지만 우리는 PC 환경은 큰 모니터와 키보드, 마우스 인터페이스에 맞게,
모바일 환경은 작은 화면과 터치 인터페이스에 맞춰 다른 UX를 가지도록 설계하고 있습니다.
이런 차이에 대해선 다들 너그럽죠 ㅎ
아이폰과 안드로이드폰은 상대적으로 많은 부분이 유사하지만
앞서 언급한 OS의 특성상 완전한 동일은 이뤄낼 수 없습니다.
억지스럽다 생각하실 수도 있지만,
안드로이드는 하단에 뒤로 가기 버튼이 있는데 왜 iOS는 없지? iOS는 Status bar 터치하면 최상단으로 스크롤 되는데 안드로이드는?
이 같은 차이점에 대해서 두 OS가 동일하게 맞춰야 한다고 생각하는 사람은 없을껍니다.
사람마다 기준선이 조금씩 다를 뿐 결국 OS가 달라서 생기는 일인건 마찬가지죠.
과연 사용자들이 두 OS에서 사용자 경험이 다르다고 해서 서비스에 불편함을 느낄 정도일까요?
* 정말로 완전히 같은 UI를 만들어야만 한다면, 웹앱이나 Flutter로 개발하는게 더 나을수도 있습니다.ㅎ

그래도 기준은 역시 사용자들입니다.

그럼 어디까지 동일해야 하고 어느정도까지 달라도 되는걸까요?
결국 서비스가 유저에게 전달하고자 하는 의도와 경험은 OS와 관계 없이 항상 동일해야겠죠.
그 의도만 충족한다면 다른 부분에선 유연함을 가져볼 수 있습니다.
유저의 경험을 해치지 않는 선에서라면 OS만의 스타일로 개발하는게
OS간의 차이점을 없애려다 적지 않은 개발력을 소모하게 되는 일보다
오히려 더 쉽고 빠르게, 그리고 적은 버그로 완성할 수 있는 효율적인 방법이 될 수 있습니다.
물론 개발 편의성만을 위해 기본UI를 고집하는건 피해야겠죠?
서비스가 추구하는 방향에 따라 적절한 협의점을 잡고 가는 것도 프로젝트를 진행하는데에 큰 도움이 될 수 있습니다.
긴글 읽어주셔서 감사해요 ㅎ