![[마이 프로젝트] 네이버 클립 자동 스와이프: 내가 공개할 기능·설정·중단 기준 [마이 프로젝트] 네이버 클립 자동 스와이프: 내가 공개할 기능·설정·중단 기준 thumbnail](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj51wSnxfuIc_RE6tVs8xoOfC8wfkMbV7AJYC5HpBK6TtarM90xIKlcN5I0RvJ8j4qZtgpq-SwbmcKbgWpbpLdfOzyfufGoIGtUpg3TOqqKiwfLOZ7LFVxLgkxWMYoYGfl11IIfcCfMChreZ1hz5Y9YfeEZb0_xJK1aC968N2stSh0TQ8MfF5bzdG3gLpk/s1600-rw/naver-clip-auto-swipe-project-thumbnail.png)
한 줄 요약: 화면을 위로 한 번 넘기는 일만 대신하는 도구를 만들면서, 하지 않을 동작과 사용자가 직접 멈추는 방법을 먼저 정했습니다. 자동으로 넘기는 것보다 언제 멈추는지가 더 중요했습니다.
기록 성격: 직접 제작한 프로젝트입니다. 원본 문서, 계정, 내부 경로는 공개하지 않고 기능 범위와 중단 기준만 적습니다.
이 도구가 하는 일은 딱 하나입니다
이 프로젝트는 같은 조작을 반복하는 수고를 줄이려고 시작했습니다. 화면을 넘기는 같은 동작을 되풀이해야 하는 상황에서, 그 한 동작만 대신해 주는 도구를 만들었습니다.
그렇다고 자동으로 넘기는 것이 목표의 전부는 아니었습니다. 자동화 도구는 만드는 것보다 멈추는 기준을 정하는 쪽이 어렵습니다. 그래서 기준을 세 가지로 정했습니다. 시작하기 전에 현재 화면과 동작 범위를 확인한다, 예외 상황에서는 다음 동작보다 중단을 우선한다, 다시 시작할 때는 이전 기록이 아니라 지금 화면을 다시 확인한 뒤에만 한다는 것입니다.
![[마이 프로젝트] 네이버 클립 자동 스와이프: 내가 공개할 기능·설정·중단 기준 [마이 프로젝트] 네이버 클립 자동 스와이프: 내가 공개할 기능·설정·중단 기준 source](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCC61OaQBjVJEJnDI2M1alrCxOcrn8woSErJqJpfHw3SV5aWe9-ZEqVvPQni2BYNNYNhFknNWI2tUeUQmBoo1sPaEKA2sVkBfUlfs-pFNtFZoM1573jDckTETbc4oPzAWAe1hP3MxalYAsdk2D0GwPOqBd6__qaheJEWSIlbJYC-xmvJsaniVr-JTmSH4/s1600-rw/naver-clip-auto-swipe-project-source.png)
이 글에서는 공개해도 되는 범위, 즉 기능과 설정, 중단 기준만 다룹니다. 내부 설정값, 계정 정보, 실제 이용 기록은 이 글에 넣지 않았습니다.
이 글을 읽고 가져가실 것은 자동화 도구를 쓰거나 만들기 전에 던져 볼 질문 세 가지입니다.
- 이 도구가 하지 않는 일은 무엇인가요?
- 시작은 누가 하고, 멈추는 것은 누가 하나요?
- 검증은 어디까지 끝났고 어디부터 남았나요?
세 질문에 바로 답할 수 없는 도구라면 아무리 편해 보여도 켜지 않는 편이 낫습니다. 이 글은 제가 만든 도구를 예로 들어 그 질문에 어떻게 답했는지 보여 드립니다.
하지 않기로 정한 여섯 가지
자동화 도구의 성격은 할 수 있는 일보다 하지 않기로 정한 일이 결정합니다. 이 도구에서 처음부터 뺀 동작은 아래 여섯 가지입니다.
- 좋아요를 누르지 않습니다.
- 댓글을 쓰지 않습니다.
- 팔로우하지 않습니다.
- 링크를 클릭하지 않습니다.
- 화면에 보이는 내용을 판독하지 않습니다.
- 영상이 끝났는지 감지하지 않습니다.
남은 기능은 화면을 위로 한 번 넘기는 것 하나뿐입니다. 다른 사람과의 관계나 반응에 영향을 주는 동작을 넣지 않으면 도구의 역할이 분명해지고, 오작동했을 때 생기는 피해도 작아집니다. 화면 내용을 읽지 않으니 어떤 영상인지 판단하는 기능도 없습니다. 기능을 줄인 것이 곧 안전장치가 된 셈입니다.
비슷한 도구를 평가할 때는 제외한 동작을 성격별로 나누어 보면 편합니다. 아래 표는 위 여섯 가지를 그렇게 묶어 본 것입니다.
| 제외한 동작 | 성격 | 이 도구에 없을 때 얻는 점 |
|---|---|---|
| 좋아요, 댓글, 팔로우 | 반응이나 관계에 영향을 주는 동작 | 다른 사람이나 내 계정 기록에 남는 일이 없습니다. |
| 링크 클릭 | 다른 화면으로 이동하는 동작 | 의도하지 않은 화면에서 움직일 가능성이 줄어듭니다. |
| 화면 판독, 영상 종료 감지 | 화면 내용을 읽어야 하는 동작 | 화면에 무엇이 있는지 도구가 알 필요가 없습니다. |
표의 세 번째 열은 독자가 비슷한 도구를 볼 때 확인할 만한 기준으로 정리한 것입니다. 기능 목록이 길수록 편해 보이지만, 확인해야 할 위험도 같이 늘어납니다.
![[마이 프로젝트] 네이버 클립 자동 스와이프: 내가 공개할 기능·설정·중단 기준 [마이 프로젝트] 네이버 클립 자동 스와이프: 내가 공개할 기능·설정·중단 기준 infographic](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-eTOXVDWYBDope8UOxWH2yJbsgam4dESSHg071tFvgfbnDytl4kToTDQfMYOolKp1_cy7wbyZ13TFroshUl23EITFcETTqw91YEmOHhMjBK-zw2EsrU2HDnIU_siFIqN0dKvIspa-kxRmNHqRBJ3lDjRQ66t-or57bOToWpYx86UR73GXzdgaSdSlrGM/s1600-rw/naver-clip-auto-swipe-project-infographic.png)
실행 순서와 사람이 맡는 부분
도구가 알아서 화면을 찾아가지 않습니다. 어디에 있는지 모르는 상태에서 동작을 시작하면 의도하지 않은 화면에서 움직일 수 있기 때문입니다. 그래서 시작과 끝은 항상 사람이 맡고, 도구는 그 사이의 한 동작만 맡도록 나눴습니다.
| 순서 | 맡는 쪽 | 하는 일 |
|---|---|---|
| 1 | 사용자 | 접근성 서비스를 직접 켭니다. |
| 2 | 사용자 | 보고 싶은 화면까지 직접 이동합니다. |
| 3 | 사용자 | 화면 위에 떠 있는 버튼을 눌러 시작합니다. |
| 4 | 도구 | 15~30초 사이에서 매번 새로 뽑은 시간이 지나면 위로 한 번 넘깁니다. |
| 5 | 사용자 | 같은 버튼을 다시 눌러 즉시 멈춥니다. |
이 표에서 도구가 맡는 칸은 4번 하나입니다. 나머지 네 칸은 모두 사람이 합니다. 도구가 혼자 시작하거나 혼자 계속 돌 수 있는 구조가 아니라는 점이 이 설계의 핵심입니다.
중간에 멈춘 뒤 다시 시작하는 경우에도 같은 원칙이 적용됩니다. 예외 상황이 생기면 다음 동작으로 넘어가기보다 먼저 멈춥니다. 다시 시작할 때는 이전에 쓰던 기록을 믿지 않고, 지금 화면이 어디인지 사람이 다시 확인한 뒤에 시작 버튼을 누릅니다.
이 방식은 번거롭게 느껴질 수 있습니다. 하지만 마지막으로 멈춘 위치와 지금 화면이 같다는 보장은 없습니다. 그 사이에 사람이 다른 앱을 열었을 수도 있습니다. 그래서 재개를 자동으로 이어 주는 기능은 만들지 않았습니다.
넘기는 간격을 고정하지 않은 이유
같은 간격으로 반복하는 방식은 구현이 쉽습니다. 하지만 두 가지 문제가 생깁니다. 첫째, 사람이 실제로 화면을 보는 속도와 맞지 않습니다. 둘째, 기계적으로 똑같은 패턴이 됩니다.
그래서 15~30초라는 범위를 정해 두고, 한 번 넘길 때마다 그 범위 안에서 시간을 다시 뽑습니다. 이렇게 하면 실제로 영상을 보는 감각에 가까워집니다. 화면이 늦게 뜨는 경우에도 여유가 생기는 장점이 있습니다. 간격이 일정하면 늦게 뜬 화면을 제대로 보기도 전에 다음 동작이 들어갈 수 있는데, 범위를 두면 그 위험이 줄어듭니다.
정리하면 간격은 도구의 속도가 아니라 사용자의 시청 속도에 맞춘 값입니다.
| 비교 항목 | 간격을 고정할 때 | 범위 안에서 매번 새로 뽑을 때 |
|---|---|---|
| 구현 | 쉽습니다. | 고정보다는 한 단계 더 필요합니다. |
| 사람이 보는 속도와의 일치 | 맞지 않습니다. | 사용 감각에 가깝습니다. |
| 동작 패턴 | 기계적으로 같은 패턴이 됩니다. | 매번 달라집니다. |
| 화면이 늦게 뜬 경우 | 여유가 없습니다. | 여유가 생깁니다. |
표를 보면 범위를 두는 방식은 구현이 조금 번거로운 대신 나머지 항목에서 앞섭니다. 만드는 쪽의 편의보다 쓰는 쪽의 시청 감각을 우선한 선택입니다. 이 도구는 15초 아래로 내려가지도, 30초를 넘기지도 않습니다.
접근성 서비스는 어떤 권한인가
화면을 대신 넘기려면 안드로이드의 접근성 서비스를 써야 합니다. 안드로이드 개발자 문서는 접근성 서비스를 장애가 있거나 일시적으로 기기를 온전히 쓰기 어려운 사용자를 돕는 앱으로 설명합니다. 이 서비스는 백그라운드에서 돌면서 화면 내용을 살펴보고 사용자를 대신해 앱과 상호작용할 수 있다고 적혀 있습니다. 화면을 읽고 조작할 수 있는 만큼 가볍게 켤 권한이 아니라는 뜻입니다.
같은 문서는 포커스 상태를 존중해야 하고, 사용자의 명시적인 동작 없이 포커스를 가져가지 말라는 주의도 적어 두었습니다. 또 모든 접근성 이벤트를 받는 설정은 자원을 많이 쓸 수 있다고 경고합니다. 이 도구는 접근성 서비스를 사용자가 직접 켜게 하고 화면 내용을 판독하지 않는 범위로 좁혀서, 문서가 경고하는 부분이 닿는 영역을 줄인 구조입니다.
독자가 비슷한 도구를 쓸 때 기억할 점은 하나입니다. 접근성 서비스를 켜기 전에 그 앱이 화면에서 무엇을 읽고 무엇을 누르는지 설명이 있는지 먼저 보세요. 설명이 없다면 켜지 않는 편이 안전합니다.
같은 문서에는 접근성 서비스를 일반 목적의 보조 도구를 만들 때만 만들라는 안내도 있습니다. 앱을 접근성 좋게 만드는 일반적인 방법이 아니라 전문화된 도구라는 설명입니다. 권한이 강한 만큼 쓰임새가 분명한 도구에만 허락해야 한다는 뜻으로 읽힙니다.
비슷한 앱을 배포할 때 알아둘 정책
이 도구를 앱으로 올리는 이야기는 아닙니다. 다만 비슷한 자동화 앱을 만들어 구글 플레이에 올리려는 분이라면 접근성 서비스 정책을 미리 읽어 두는 것이 좋습니다. 구글 플레이 개발자 정책 문서에서 확인할 수 있는 핵심 내용은 다음과 같습니다.
| 항목 | 정책 문서의 내용 |
|---|---|
| 접근성 도구 자격 | 자동화 도구, 어시스턴트, 모니터링 앱 등은 접근성 도구로 인정되지 않습니다. |
| 자동 실행 | 스스로 계획하고 실행하는 방식은 접근성 도구가 아닌 앱에서 금지됩니다. 사람이 정한 고정된 규칙을 따르는 자동화는 금지 대상이 아닙니다. |
| 사전 고지 | 앱 안에서 별도 화면으로 이유와 데이터 사용을 설명하고, 사용자가 동의 동작을 해야 합니다. 개인정보처리방침에만 적는 것은 인정되지 않습니다. |
| 선언 제출 | 접근성 서비스를 쓰는 앱은 Play Console에서 선언 양식과 영상을 제출해야 합니다. |
이 도구가 매번 사람이 시작하고 사람이 멈추는 고정된 규칙 하나만 수행하도록 만든 구조는 이 구분과 맞닿아 있습니다. 정책은 바뀔 수 있으므로 배포 전에는 문서의 현재 내용을 다시 읽어야 합니다.
정책 문서에는 시기에 관한 내용도 있습니다. API 수준 31을 대상으로 하는 앱에 접근성 서비스가 들어 있으면 Play Console 선언을 완료해야 하고, 이 요건은 2021년 11월 3일부터 적용되었다고 적혀 있습니다. 사용 방식이 달라지면 선언을 다시 제출해야 한다는 조항도 있습니다. 앱을 만들 때는 기능을 추가할 때마다 이 선언 내용과 어긋나지 않는지 같이 보아야 합니다.
검증 상태를 나눠 적는 이유
이 프로젝트의 검증은 세 단계로 나뉩니다. 코드와 설정 수준에서 검사하는 정적 검증은 통과했습니다. 화면 구성 요소가 정상인지 보는 리소스 검증도 통과했습니다. 실제 기기에서 돌려 보는 실기기 테스트는 아직 남아 있습니다.
| 검증 단계 | 상태 | 이 단계가 알려 주는 것 |
|---|---|---|
| 정적 검증 | 통과 | 코드와 설정에 눈에 띄는 문제가 없다는 것 |
| 리소스 검증 | 통과 | 화면 리소스가 정상이라는 것 |
| 실기기 테스트 | 남음 | 아직 알 수 없음 |
앞의 두 단계가 끝났다고 실기기에서 쓸 수 있다는 뜻은 아닙니다. 그래서 완료 하나로 묶지 않고 단계별로 따로 적습니다.
이 글의 내용은 게시 시점의 공개 범위를 기준으로 한 것입니다. 제품과 서비스의 실제 이용 가능 여부는 공식 안내와 현재 화면에서 다시 확인하세요.
자동화 도구를 쓰기 전 독자가 점검할 목록을 정리하면 다음과 같습니다.
- 켜기 전에 도구가 화면에서 무엇을 읽고 누르는지 설명이 있는지 봅니다.
- 시작과 정지를 내가 직접 할 수 있는지 봅니다.
- 검증 단계가 구분되어 있고, 실기기에서의 결과가 따로 적혀 있는지 봅니다.
- 반응이나 관계에 영향을 주는 동작이 들어 있지 않은지 봅니다.
이 목록은 이 글의 도구를 설명하려고 만든 것이 아니라 어떤 자동화 도구든 적용할 수 있는 기준입니다.