Android에 대한 小考(소고) – Open Access

※ Daum 소규모 지인 위주의 카페에 안드로이드 초기 느낀 점을 지인들과 공유하기 위해서 적은 글인데 어딘가 따로 정리가 필요해서 블로그로 복사합니다.

Open Access가 획기적이라고 극찬하였지만 실제로는 “Open Application”에 대한 내용입니다.
구글 CEO가 FCC에 보낸 서한에 Open Access라는 내용이 있고 그 중의 한가지로 안드로이드에 적용된 기술입니다.

Open Application의 핵심은 어떠한 Application도 플랫폼에서 독점적으로 동작할 수 없다는 것입니다.
(심지어 Google이나 제조사에서 출시 때 기본적으로 탑재하여 제공하는 application 조차도…)
플랫폼에서 구조적으로 불가능하도록 설계가 되어 있고 모든 Application은 안드로이드 플랫폼에서 평등합니다.

Open Access
Open Access

위 그림 중에서 오른쪽 Emulator Capture화면을 보면 “Home”과 “Home Sample” application 중에서 선택하라는 의미의 POP-UP이 보입니다.

이 그림만으로 보면 큰 반향이 있을만한 사항이 아닙니다만
Home이 일반적으로 대기화면 application으로 시스템이 기본적으로 제공하는 기능이라고 볼 때 사용자가 대기화면 application을 선택적으로 변경할 수 있다는 의미입니다.
여기서 중요한 것은 일반적으로 FEATURE폰 또는 기존 OS에서는 대기화면을 변경한다는 의미는 Look & Feel이 변경 가능하다는 의미이지 Application 자체가 변경된다는 의미가 아니라는 것입니다.

Microsoft가 Windows의 독점적인 지위를 이용해서 Netscape 브라우저를 밀어내고 별도 좋지도 않은 Internet Explorer의 시장 점유율을 획기적으로 끌어 올렸던 이유는 다 아시다시피 Windows에 IE는 기본적으로 탑재되어 있고 기본으로 설정된 IE 브라우저외에 별도로 Netscape 브라우저를 사용하기에는 사용자들이 많이 불편했기 때문입니다.
최근에는 반독점 판결에 의해서 브라우저와 검색 공급자를 사용자 선택으로 변경하게 하였지만 이는 또 다른 의미에서 선택된 application에게 독점적 지위가 부여되는 악순환일 뿐입니다.

안드로이드에서는 application들이 어떻게 평등한 권리를 가지는지 기술적으로 접근해 보겠습니다.

① System application의 Category 분류
구조적으로 평등한 권리가 가능한 기본 기술은 Application을 제작하는 시점에 category를 설정할 수 있습니다.
위 화면의 경우 기본적으로 안드로이드에 ‘HOME’이라는 속성을 가지는 application이 탑재된 상태에서 사용자가 “Home Sample”이라는 ‘HOME’ 속성을 가지는 application을 추가로 설치하고 부팅을 하게 되면 ‘HOME’이라는 동작을 수행하는 application이 2가지 이상이므로 플랫폼에서 사용자에게 어떤 application을 사용할 것인지 기본으로 설정할 것인지 묻는 것입니다.
즉, 제조사 조차도 대기화면을 사용자가 원하지 않으면 점유할 수 없다는 의미입니다.

② Intent라는 message 전달 시스템을 이용한 ACTION 정의
Category외에 “ACTION”이라는 것이 있는데 예를 들면 전화를 걸기 위해서 Dialer를 호출하는 “ACTION_DIAL”과 전화번호를 전달해서 바로 전화를 거는 “ACTION_CALL”입니다.
바꿔 말하면 기존 FEATURE phone에서는 해당 기능을 수행하는 Application을 직접 호출하는 방식인데 반해 안드로이드는 application을 직접 호출하는 것이 아니고 플랫폼에게 어떠한 동작을 하고 싶다고 요청하게 되면 플랫폼에 등록된 application 중에서 해당 ACTION을 수행하는 application에게 message를 전달하는 방식으로 HOME과 마찬가지로 동일한 ACTION을 수행하는 application이 2개 이상인 경우에는 사용자게에 어떠한 application으로 동작을 수행할지 묻게 됩니다.

물론, 특정 application을 직접 호출할 수 있는 방법을 제공하지 않는 것은 아니지만 안드로이드 플랫폼 진화 방향을 거스르는 동작 구조이므로 사용자의 선택을 받아야 하는 application 입장에서 독자적으로 동작하게 만들 이유가 없는 것이죠.

이러한 구조하에서 구글이 원했던 또는 원하지 않았던 아주 재미있는 자발적인 Site가 생겨났습니다.
OpenIntents라는 것입니다.

안드로이드에서는 “ACTION_DIAL(android.intent.action.CALL)”과 같이 시스템에서 정의하는 ACTION이 있지만 사용자가 임의로 ACTION을 생성해서 사용할 수 있도록 허용하고 있습니다.

이렇다보니 기존 안드로이드에서 제공하지 않는 신규 기능을 수행하는 application을 개발하고 해당 기능을 수행할 수 있는 action을 정의하였는데 다른 application에서 사용하지 않으면 무용지물이 될 뿐 아니라 동일한 동작에 대해서 action 정의가 달라질 수 있는 문제점을 자발적으로 해결하기 위해 생겨난 Site입니다.

내가 필요한 기능이 이미 OPEN되어 있다면 해당 Site에서 소스레벨 또는 application을 다운받아서 설치한 이후에 해당 기능을 호출해서 사용할 수도 있고 반대의 경우도 가능합니다.

어느 누가 통제하지 않고 관리하지 않아도 필요에 의해서 자발적으로 문제점을 해결해 가는 모습은 OPEN platform이기 때문에 가능한 문화가 아닌가 생각합니다.