이하의 글은 2010년에 쓴 것입니다. 오래된 글인 만큼, 현재의 생각과 전혀 다른 내용도 많이 포함되어 있고, 당시와는 상황이 많이 달라진 점도 있습니다. 또한, 그 당시에 잘못 알려졌던 정보도 포함되어 있을 수 있습니다. 어찌됐든 저는 제 오래된 글이 회자되는 것을 저어합니다. 읽기에 앞서 양해를 부탁드립니다.
모바일 앱 개발에 대한 얘기가 들리지 않는 날이 없다. 대개 iPhone의 성공을 단일 플랫폼과 적절한 통제에 기인한다고들 말하는데, 맞는 말이긴 하다. 해상도나 장비에 포함된 기능 집합까지 똑같거나 거의 같기 때문에 배포할 때 곯머리도 안 썩고 만들 때도 편한 것이다.
하지만 그것과 별개로 나는 여러 환경에 대한 고려가 좀더 나은 디자인을 만든다고 믿는 사람이다. 여러 환경을 고려하다보면 결국 적절한 추상화를 하게 되는데, 객체 지향 프로그래밍이라면 다형성을 적절히 쓸 것이고, 함수형 프로그래밍이라면 특수화를 잘 쓸 것이다.
단위 테스트가 있는 코드가 대개 없는 코드보다 디자인이 나은 경우가 많다. 왜 그렇냐면 단위 테스트 자체가 클라이언트 코드를 두 개 이상으로 만드는 효과를 주기 때문이다. 클라이언트 코드가 두 개 있는 것과 세 개 있는 것은 별 차이가 없지만, 하나 있는 것과 여럿 있는 것은 꽤 크게 차이가 난다. 클라이언트 코드라면 호출하는 쪽, 사용하는 쪽을 얘기하는데 결국 클라이언트 코드 자체가 환경이라는 말이다.
하지만 모바일 앱을 만드는데는 이런건 부질 없는 이야기다. 모바일 앱은 대체로
- 적은 비용으로
- 짧은 기간에
- 적당한 완성도로
마무리 짓는게 관건1인데, 여러 환경 고려하며 품질 높고 좋은 디자인의 코드를 만들어 내다간 반쯤 농담으로 대작 MMORPG 만드는 비용이 들어가게 된다. 후 하고 불면 불꽃이 흔들리는 앱 하나 만들겠다고 그런 비용을 지불하려는 사람은 별로 없을 것이다.
결론: Apple은 사악하고 Android는 갈 길이 멀다.
사실 그렇다기 보다는 트렌드.↩