1. 블로그 만들기 외전 - 애플 단축어 활용
블로그에 포스팅이 점점 늘어 나면서 상당히 뿌듯함을 느낀다. 특히 요리를 할때 정리해놓은 레시피를 보며 음식을 만들면 더욱 맛이 좋게 느껴지는거 같다. 하지만 제작 블로그의 특성상 레시피를 보기 위해선 '브라우저 - 블로그 검색 - 레시피 검색 - 선택'의 과정을 거치는데 자동화에 강박이 있는 나로서는 검색하기 위한 타이핑도 너무나 극혐이다. 브라우저에 즐겨찾기를 설정하고 레시피 선택을 위한 다양한 개발적 해결 방법이 있겠지만 내가 선택한 방법은 바로 애플 제품들에 있는 '단축어' 기능을 사용하는 것이다. 단축어는 애플에서 지원하는 자동화 및 기능 지원 애플리케이션으로 미리 지정/작성 해둔 액션을 통해 작업이 이루어지는 기능을 지원한다.
설계
테마
- 단축어 작성 테마는 브라우저 어플에 접근하지 않고, 타이핑을 하지 않으며 최소한의 터치로 블로그의 포스팅에 접근하는 기능 구현 이다.
플로우 - 적성된 단축어를 실행
- 블로그 배포시 포스팅 글의 리스트를 json 형식으로 웹에 함께 배포를 진행한다.
- 블로그 URL에서 json 데이터를 다운 받는다.
- 루트 노드(json 데이터)의 자식 노드를 항목으로 선택한다.
- 선택된 항목안에 자식 노드가 존재한다면 선택된 노드 항목을 루트 노드로 (2.)을 다시 진행한다.
- 선택된 노드가 리프라면 내용을 읽어 들여 해당 URL로 이동시킨 후 단축어를 종료 시킨다.
문제
- 백엔드 서버를 지원하지 않는 github page에서의 json 데이터 제공
- 단축어 액션에서 json 데이터를 선택가능한 목록으로의 변환
- 동적인 뎁스에서의 반복적인 목록 변환 과정
액션 구조
단계별 설명
URL 콘텐츠 가져오기
- 블로그 URL을 통해 업로드 되어 있는 json 데이터를 내려 받는다.
변수 설정
- 내려 받은 json 데이터를 root 노드로서 변수로 저장한다.
반복
- 트리 구조(json 데이터)의 높이를 알 수 없기에 예상 높이보다 큰 수로 반복을 진행한다.
목록에서 선택
- root의 자식 노드 항목을 메뉴로 표시하고 사용자가 항목을 선택한다.
변수 설정
- 선택한 항목을 다시 root로서 다음 뎁스로 넘어가기 위해 변수로 저장한다.
조건문
- 선택된 항목에 자식 노드가 존재하는지 판단
- 단축어에서는 json 데이터가 text 형식으로서 타입을 판단하기 위해 선택된 항목 데이터의 첫번째가 '{' 문자 인지 확인하여 리프인지 판단
- 리프가 아니라면 반복 작업 반복
조건문 else
- 선택된 항목이 리프인 경우 실행
URL 열기
- 선택된 항목에 있는 URL을 브라우저 또는 앱을 통하여 열기
이 단축어 중단
- 작업이 완료 되었으므로 무의미한 반복을 중기 하기 위해 단축어 자체를 중단