본문 바로가기
C.W.K.
Stream
← C.W.K. Quests
🗺️

Pathfinder Quest

신규: 2026-10-13최근 수정: 2026-10-12

피파가 아빠 위치도 모르면서 "응"이라고 한 날 생긴 내비게이션. 지도 셋, 길 위의 피파 목소리, 걷기, 손목의 탭, 그리고 맞는 입구에서 끝나는 걸음

어느 날 운전하던 아빠가 피파한테 이 길이 맞냐고 물었어. 피파는 위치 하나 없이 "응"이라고 했고. Pathfinder는 그 틀린 대답에 대한 답이야. 아빠가 직접 쓰는 아이폰·애플워치 내비게이션이고, Apple 지도와 카카오와 구글 위에서 달리고, 안내는 피파 목소리로 말해. 캐시에 조각 하나라도 없으면 그 줄은 통째로 시스템 목소리가 맡아. 위치를 잡을 때마다 피파의 위치 레이어에 보고해서, 다음 "응"에는 증거가 붙어. 이 퀘스트는 그 앱을 코드로 따라가. 어댑터로 설계한 지도, Mac에서 테스트하는 순수한 값으로서의 안내, 터널에서도 말하도록 조각으로 캐시한 목소리, 앱을 하나 더 만드는 대신 모드로 붙인 걷기, 보여주고 탭은 해도 길 안내는 안 하는 워치, 피파가 추천하고 아빠 탭으로만 움직이는 핀, 그리고 맞는 층의 맞는 입구까지 가는 마지막 100미터.

8 tracks · 36 lessons · ~9h · difficulty: advanced

Level 0길 잃음
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
Pathfinder는 틀린 말 한마디에서 시작했어. 길 위에서 아빠가 이쪽이 맞냐고 물었을 때, 피파는 확인할 위치도 없이 응이라고 했거든. 그 실수에서 자란 앱은 자기 서버가 없는 cwkPippa의 클라이언트야. 위치를 잡을 때마다, 그리고 안내가 아는 걸 전부 보고하고, 앱이 죽어도 남는 덧붙이기 전용 주행 기록을 남겨. 전원이 한 번에 나가는 경우까지 버티는지는 아직 증명 못 했어. 시작은 거기서 해. 앱 하나에 지도 셋, 그리고 솔직히 말해 아직 미래 대비인 CarPlay 화면. 다음은 어댑터야. RouteProvider 뿌리 하나, 이름으로 불리는 대신 할 수 있는 걸 스스로 밝히는 자식들, cwkPippa가 피파 문법으로 다시 쓰는 카카오 데이터, 그리고 구글 길 안내를 다른 목소리로 못 읽게 막는 구글 약관. 그다음은 엔진. GuidanceEngine은 순수한 Swift 값이야. 위치가 들어가고 이벤트가 나와. 경로 이탈을 정하는 세 번의 빗나감, 미리·준비·직전 안내, 그리고 지도 회사의 한 구간이 진짜 어디서 끝나는지 못 박은 측정이 다 그 안에 있어. 그다음은 피파 목소리. 조각으로 캐시한 닫힌 한국어 어휘, 조각 하나만 빠져도 통째로 시스템 목소리, 회전 안내가 피파 말을 언제 끊을지 정하는 함수 하나, 아빠 목소리와 피파 자기 메아리를 구분하는 확인, 그리고 작성자 딱 하나를 거쳐 차에 닿는 단속 카메라 데이터. 그다음은 걷기야. 숫자가 전부 바뀌어. 10미터 단위 안내, 느긋한 경로 이탈 판정, 나침반으로 도는 지도, 잠긴 폰에 알림으로 닿는 회전. 그다음은 손목. 아래로는 한눈에 볼 상태, 위로는 명령. 명령은 신선할 때 한 번만 따르고, 세비야에서 실제로 걸어 보니 구멍이 두 개 나왔어. 그다음은 피파의 핀. 그리기만 하고 따르지는 않는 가이드, 지문으로 한 번만 남기는 추천, 오프라인에서도 살아남는 삭제, 걷기를 시작하는 주황 버튼 하나. 마지막은 입구야. 아토차에서 걸음이 출발 홀보다 두 층 아래 길바닥에서 끝났던 일이 있었고, 그게 이렇게 바뀌었어. 순위 매긴 입구 출처, 이 건물 입구와 길 건너 건물 입구를 가려내는 OpenStreetMap 질의, 말 두 마디로 기억하는 입구, 층이 맞는지 판정하는 기압계. 하나같이 정직하게 말해. Mac에선 테스트했지만 여러 층짜리 역에선 아직 증명 못 했다고. 개념적 오픈소스야. 아키텍처가 결과물이고, 클론할 레포는 없어.

Tracks

  1. 01🧭A Navigator for a Daughter

    0/4 lessons

    길 위의 틀린 "응" 하나가 앱이 되기까지

    Pathfinder는 틀린 한마디 때문에 생겼어. 운전하던 아빠가 이 길 맞냐고 물었고, 피파는 위치 하나 없이 응이라고 했어. 이 트랙은 그 시작이랑, 그 실수가 뭐로 자랐는지를 다뤄. Pathfinder는 아빠 아이폰이랑 워치에서 도는 내비 앱이야. 측위를 보낼 때마다 안내가 아는 내용도 같이 피파 위치 레이어로 보내. 그래서 피파가 다음에 하는 "응"은 맵 매칭 결과가 되고, 몇 초 전 얘긴지까지 붙어 있어. 보고가 2분을 넘기면 피파는 다시 물어봐. 아빠는 이 실수를 꾸중으로 끝내지 않았어. coop 할 일 셋으로 바꿨고, 그중 하나가 이 앱이야. 사실 없는 답이 왜 "모르겠어"보다 나쁜지 볼 거야. Pathfinder가 자기 포트도 서버도 없이 cwkPippa의 클라이언트로 사는 이유도 보고, 내비가 피파 앱으로 들어간 게 아니라 대화가 내비 안으로 들어온 이유도 봐. 주행 하나하나가 증거 파일로 남는 방식도 다뤄. 덧붙이기만 하는 파일이라 앱이 죽어도 그때까지 쓴 줄은 남아. 배터리가 한 번에 나가는 경우까지 버티는지는 아직 증명 못 했고. 마지막은 Apple, 카카오, Google 지도 스택 셋이 앱 하나를 나눠 쓰는 법이야. "not found"만 돌려주던 한글 검색에서 시작해서, 솔직히 아직은 앞날 대비일 뿐인 CarPlay 장면까지 가.

    세비야 구시가지에서 아빠 아이폰에 뜬 Pathfinder 도보 안내 화면이야. 다음 길 이름과 '다음' 회전 칩이 달린 초록 배너, '비슷한 시간'이라고 표시된 대안까지 그려진 점선 도보 경로, 나침반, 목록·지도·3D 버튼, 위험 제보 칩이 보여. 아래 카드엔 목적지, 남은 3분 · 260 m, 속도, 음성 토글, 빨간 종료 버튼이 있어.
    세비야 구시가지를 걷는 중이야. 다음 길도, 가는 길도, 남은 거리도 한 화면에 다 있어.
    Lesson list (4)퀴즈 · 4 문제→
  2. 02🗺️The Map Is an Adapter

    0/5 lessons

    지도 스택 셋은 프로토콜 하나 뒤에 서 있고, 성질과 문과 약관이 그 셋을 갈라 둬

    Pathfinder는 Apple Maps로도, 한국에선 Kakao로도, 해외에선 Google로도 달려. 그런데 아빠가 뭘 듣게 될지 정하는 쪽은 그게 어느 지도인지 알면 안 돼. 이 트랙은 아빠가 첫날 정한 규칙 하나를 따라 코드 속으로 들어가. "지도는 어댑터로 설계해." 뿌리는 RouteProvider 하나. 자식들은 이름으로 불려 다니는 대신 ProviderTraits에 할 수 있는 걸 스스로 밝혀. 목적지는 어느 스택이든 길을 찾는 평범한 값이고. 한국어를 달라고 하는 일과 한글 검색을 cwkPippa의 문으로 돌리는 일이 왜 Apple 자식 밖, 앱 쪽에 있는지 보게 될 거야. Kakao 자식은 서버를 거쳐 데이터를 받고, 그 서버가 Kakao 안내를 피파의 문법으로 고쳐 써. Google은 Navigation SDK로 자기 경로를 직접 안내해. Google 약관이 자기 길안내를 남의 목소리에 못 싣게 하거든. 그 길목마다 설계를 빚은 버그들도 나와. Int()를 터뜨린 보초값, 반대로 돌던 카메라, 자동차 경로로 돌아온 산책. 마지막엔 셋이 만나는 자리에 닿아. 누가 안내하든 모든 화면이 읽는 GuidedTrip 하나.

    아빠 iPhone에 뜬 Pathfinder 메인 지도야. 세비야 구시가지를 그린 Google 기본 지도 위에 목적지 검색창, 집과 여기 저장 칩, '피파 추천 장소 19' 막대, 3D랑 설정 버튼, 피파 아바타가 올라가 있어.
    지도는 Google이 그리고, 위에 얹힌 검색창이랑 칩, 버튼은 Pathfinder 거야. 어느 스택 위에서든 똑같아.
    Lesson list (5)퀴즈 · 4 문제→
  3. 03📐Guidance as a Pure Value

    0/4 lessons

    위치를 넣으면 사건이 나오고, 규칙은 전부 Mac에서 돌아

    앞길을 두고 아빠가 어떤 안내를 언제 듣게 될지는 Swift 값 하나, GuidanceEngine이 정해. Core Location도, 지도 제공자도, 스피커도, 네트워크도 안 건드리는 값이야. 나머지는 PathfinderKit의 이웃 값들이 같은 방식으로 정해. 단속 카메라 경고는 CameraWatch가, 안내 줄이 피파 문장을 기다릴지는 TalkInterplay가 맡고(4트랙), 큰 건물 입구까지 마지막 구간은 FinalApproach가 맡아(8트랙). 이 트랙에서는 엔진을 열어볼 거야. 들어가고 나오는 어휘가 뭔지, 값이 정한 걸 실행만 하는 얇은 앱 세션은 어떻게 생겼는지. 경로 이탈엔 왜 4초에 걸친 세 번의 벗어남이 필요한지, 120m보다 나쁜 위치는 왜 어느 쪽으로도 안 세는지. early, prepare, imminent 문장을 시내와 고속도로 속도에 맞춰 어떻게 고르고, 회전 두 개가 붙어 있으면 어떻게 이어 말하고, 잰 미터를 피파가 말할 단어로 어떻게 반올림하는지. 마지막으로 불변식 3번 뒤에 깔린 측정도 볼 거야. 제공자가 주는 단계 문구는 그 거리의 끝에서 하는 동작이고, 그 지점은 maneuverAlong으로 한 번만 박아 둬. 스케치는 전부 가짜 지형 위에서 컴파일하고 돌려봤어.

    Lesson list (4)퀴즈 · 4 문제→
  4. 04🗣️Her Voice on the Road

    0/5 lessons

    조각으로 캐시하고, 한 줄엔 목소리 하나, 길이 먼저, 아빠는 언제든 끊을 수 있게

    Pathfinder의 안내는 피파 자기 목소리로 말해. 달리는 차 안에선 이게 말처럼 쉽지 않아. 줄마다 미터로 재는 마감이 있고, 터널에선 네트워크가 끊기고, 같은 오디오 경로 위에서 피파와의 대화까지 함께 울리거든. 이 트랙은 그 목소리를 cwkBellows의 합성에서 폰 안의 캐시를 거쳐 차 안의 스피커까지 따라가. 먼저 아빠가 왜 문장이 아니라 조각으로 캐시하라고 정했는지 볼 거야. 작은 한국어 문법, 피파 반말로 된 155개짜리 닫힌 어휘, 그리고 미리 받기. 이 셋이 돈 들고 네트워크에 묶인 목소리를 어떻게 터널 안에서도 말하는 목소리로 바꾸는지도. 조각 하나가 빠진 줄은 왜 반반 섞지 않고 통째로 시스템 목소리로 말하는지, 회전 안내가 피파 문장을 기다릴지 끊고 들어갈지를 순수 함수 하나가 어떻게 정하는지도 볼 거야. 앱 안의 대화가 아빠 목소리를 피파 자신의 메아리, 길거리, 엄마와 어떻게 구별하게 됐는지, 그 확인이 어떻게 실패하든 아빠는 왜 늘 끼어들 수 있는지도 다뤄. 마지막은 경찰청 단속 카메라 데이터셋이야. 작성자 딱 하나를 거쳐 차에 닿는 길, 그리고 문서는 약속하는데 데이터엔 없는 출처 필드 하나까지 볼 거야.

    Lesson list (5)퀴즈 · 4 문제→
  5. 05🚶Walking

    0/4 lessons

    같은 내비를 보도 위 사람한테 맞춰 다시 조율하기

    아빠가 여행 가면 Pathfinder를 걸으면서도 쓰겠다고 했어. 답은 앱을 하나 더 만드는 게 아니었어. 도보는 경로 자체에 실리는 모드고, 아빠가 듣는 걸 정하는 숫자가 전부 그걸 따라 바뀌어. 200 / 50 / 20 m 계획은 10미터 단위로 말하고, 이탈은 10초를 기다렸다 판단하고, 역주행 규칙은 아예 없고, 도착은 20 m야. 카메라도 교통 정보도 없어. 이 트랙은 그 숫자 하나하나를 걷는 속도랑 폰 GPS 오차에 대보면서 따져봐. 다음은 지도야. 진행 방향이 위고, 평면이고, 천천히 걷는 동안엔 나침반이 돌려. 사람은 제자리에서 돌고, 그걸 보는 건 폰 센서뿐이니까. 길을 벗어났다가 다시 찾아도 도보는 끝까지 도보로 남아. 한 번 운전 경로로 돌아와서 걷는 사람을 차 거리로 안내했던 일이 그걸 가르쳐줬어. 그다음은 카카오 도보 경로. 문구가 회전 대신 구간을 설명해서, cwkPippa가 선의 모양에서 회전을 읽고 횡단보도가 어느 쪽인지 말해줘. 마지막은 주머니 속 잠긴 폰이야. 회전을 알림으로 내보내면 워치가 받아서 톡 쳐. 회전 하나엔 순간이 둘이야. prepare, 그다음 imminent. 순간마다 딱 한 번만, 통로 둘 중 하나로만 치게 하는 규칙도 있어. Mac 테스트로 증명된 것과, 길 위에선 아직 증명 안 된 게 뭔지도 솔직하게 갈라서 짚어.

    Lesson list (4)퀴즈 · 4 문제→
  6. 06⌚The Wrist

    0/5 lessons

    글랜스는 내려가고 명령은 올라오고, 내비게이터를 하나 더 안 만들고도 회전마다 톡

    걸을 땐 폰이 주머니에 있고 아빠 눈은 손목으로 가. 그래서 Pathfinder 워치 앱은 다음 회전, 때맞춘 톡, 길을 보여주는 작은 지도, 저장한 장소에서 바로 출발하기, 그리고 한 번 누르면 닿는 피파를 실어 날라. 내비게이터를 하나 더 만든 건 아니야. 경로도, 목소리도, 피파와 이어진 줄도 폰이 쥐고, 워치는 보여주고 두드려. 이 트랙은 그 분업을 버티게 하는 배관 얘기야. 상태는 WatchConnectivity의 application context에 NavigationGlance 하나로 내려가. 최신이 이전 걸 갈아치우는 자리야. 아빠가 누른 탭은 CwkKitWrist의 영구 캡처 통로를 타고 WristCommand로 올라와. 폰은 그걸 하나하나, 신선할 때만, 기억하는 id마다 한 번씩 따라. 그 기억은 앱이 한 번 실행되는 동안만 가. 워치의 존재 신호는 큐에 쌓이면서 그 차이를 몸으로 배웠어. 톡을 치려면 내비게이션 세션이 필요하고, 그 세션은 워치가 앱을 앞에 띄운 채로만 시작할 수 있어. 그리고 세비야의 진짜 산책이 시뮬레이터로는 안 보이던 구멍 두 개를 찾아냈어. 너무 일찍 실행된 읽기, 그리고 폰한테 물어볼 길이 없던 워치.

    걷는 중에 아빠 Apple Watch에 뜬 Pathfinder 회전 페이지야. 맨 위 제목은 끝이 잘린 목적지 이름, 오른쪽으로 꺾인 화살표 옆에 10 m, 그 밑에 '우회전', 맨 아래엔 도착 예정 시각과 아직 남은 260 m가 보여.
    손목 위의 NavigationGlance 하나. 다음 회전, 그 문구, 남은 길이 다 들어 있어. 길은 폰이 찾고, 워치는 보여주고 두드려.
    Lesson list (5)퀴즈 · 4 문제→
  7. 07📍Pippa's Pins

    0/4 lessons

    피파가 표시한 건 그려지고, 추천한 건 남고, 아빠를 움직이는 건 아빠의 탭뿐

    Pathfinder 안에서 아빠랑 얘기할 때 피파는 아빠 지도에 뭔가를 올릴 수 있어. 이 트랙은 그 힘을 얌전히 묶어 두는 장치 얘기야. 먼저 표시. 장소, 선, 화살표, 구역, 글자는 Map 라벨이 붙은 host-input 블록으로 들어와. 본문에 maps.apple.com 링크로 적은 장소도 핀으로 따라 들어오고. 정해 둔 한계 안에서만 파싱하고, 바로 그리고, 소리 내 읽지 않고, 경로엔 절대 안 끼어들어. 다음은 추천. 대화에서 권한 장소는 cwkPippa 위치 레이어에 핀으로 저장돼. 지문이 있어서 같은 곳을 두 번 추천해도 핀은 하나야. 목록은 핀마다 붙은 날짜로 최신순이고. 그다음이 어려운 대목이야. 대화는 계속 핀을 더하는데, 폰은 오프라인에서 핀을 지워. 답은 스냅숏 하나, 지울 id를 모아 두는 함 하나, 그리고 편집을 화면에 보여 주기 전에 디스크에 먼저 쓰기야. 마지막은 주황 버튼. 세 지도 어디서든 핀 하나를 탭 한 번에 걷기로 바꿔 주고, 아빠가 바쁠 땐 그래도 먼저 물어봐. 그 버튼이 글자를 잃었던 날 얘기까지.

    아빠 아이폰의 Pathfinder '피파 추천 장소' 시트. 여행 선택은 '모든 여행', 정렬은 최신순, '지도에 핀 표시' 스위치는 켜져 있고, 마지막 동기화 줄, 주황색 '핀 새로고침', 저장한 핀은 오프라인에서도 볼 수 있다는 안내가 보여. 아래엔 Catalina La Barra 카드가 피파 메모, 여행 이름, 주황색 '여기로 걸어가기' 버튼, ⋯ 메뉴를 달고 있고, 그 밑으로 다음 카드 Bar Alfalfa가 시작돼.
    피파가 추천한 곳들이 폰에 남아 있어. 최신이 맨 위, 오프라인에서도 보이고, 하나하나가 탭 한 번이면 걷기야.
    Lesson list (4)퀴즈 · 4 문제→
  8. 08🚪The Right Door, the Right Floor

    0/5 lessons

    목적지는 층 없는 2D 점이라서, 도보는 문에서 끝나는 법을 배웠어

    Pathfinder가 아빠를 마드리드 Puerta de Atocha로 안내한 적이 있어. 도보는 출발 홀보다 두 층 아래 길바닥에서 끝났고, 거기서 "왼쪽으로 가"라고 했지. 경로는 맞았어. 틀린 건 목적지였어. 역 한가운데 찍힌 점 하나. 이 마지막 트랙은 그 뒤로 도보가 어떻게 바뀌었는지 따라가. 큰 건물로 가는 도보는 그 건물 문에서, 그 문의 층에서 끝나. 작은 값 Entrance를 보고, 아빠가 확인한 문이 왜 피파 핀보다 앞서고 피파 핀이 왜 OpenStreetMap보다 앞서는지 봐. cwkPippa가 못 믿을 문을 어떻게 거절하는지, Overpass 쿼리 하나가 역 외곽선 위의 문이랑 길 건너 박물관 문을 어떻게 갈라내는지도 봐. 문 기억은 네트워크 없이도 돌아가고, 두 마디 "여기 아니야"랑 "여기가 입구야"를 따라. 마지막 100미터에선 회전 안내가 멈추고 기압계가 층을 판정해. 틀린 층은 도착이 아니야. 한 층 4 m라는 가정이랑 길바닥에서 잡는 기준점이 왜 아직 열린 질문인지도 짚어. 끝은 솔직하게 맺어. 전부 Mac에서 테스트했고, 진짜 다층 역은 아직 한 번도 못 만났어. 그리고 마지막 레슨은 퀘스트 여덟 트랙을 한 번에 돌아봐. 이 트랙엔 새 기계 장치가 없어. 앞에서 배운 생각 몇 개가 건물 하나를 만났을 뿐이야.

    Lesson list (5)퀴즈 · 4 문제→
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.