- pISSStream은 국제우주정거장(ISS)의 소변 탱크 용량을 실시간으로 보여주는 앱으로, macOS 메뉴 바와 iOS, watchOS, visionOS를 지원함
- 데이터는 NASA의 공식 공개 ISS 텔레메트리 스트림을 Lightstreamer로 받아오며, 지상국이 신호를 수신 중일 때 최신 탱크 채움 비율을 표시함
- macOS에서는 메뉴 바에 🧑🏽🚀🚽와 채움 비율을 보여주고, 연결 또는 텔레메트리 신호가 끊기면 🧑🏽🚀❗와 마지막 수신값, “Connecting” 또는 “No Signal” 상태를 표시함
- iOS와 watchOS는 단순 인터페이스로 실시간 탱크 수위를 보여주며, visionOS는 ImmersiveSpace API 기반 3D 시각화와 공간 오디오를 제공함
- 첫 Swift 및 Apple 플랫폼 앱이라 오래된 데이터 처리와 오류 처리에 적극적이지 않으며, 버그 수정용 Pull Request는 받지만 다른 ISS 통계 추가 계획은 없음
pISSStream이 하는 일
- pISSStream은 International Space Station의 소변 탱크 용량을 실시간으로 보여주는 앱임
- 지원 플랫폼은 macOS, watchOS, iOS, visionOS임
- 주요 기능은 다음과 같음
- ISS 소변 탱크 수위 실시간 모니터링
- macOS 메뉴 바 통합
- iOS 및 watchOS 앱의 실시간 업데이트
- visionOS의 몰입형 3D 시각화
- 몰입형 화면에서 deep-space soundscape 기반 공간 오디오
- Vision Pro용 향상된 UI와 커스텀 앱 아이콘
- NASA 공식 공개 ISS 텔레메트리 스트림을 Lightstreamer로 사용
설치와 빌드 조건
- macOS는 최신 릴리스 DMG를 Download 링크에서 받을 수 있음
- iOS, watchOS, visionOS는 Apple 보안 모델 때문에 소스에서 빌드하고 자체 개발자 계정으로 서명해야 함
- 빌드 전제 조건은 다음과 같음
- Xcode 15.2 이상
- Apple Developer account
- iOS 앱용 iOS 17.0 이상 기기
- Apple Vision Pro 또는 visionOS 시뮬레이터
- 기본 빌드 절차는 저장소를 클론한 뒤
pISSStream.xcodeproj를 Xcode에서 열고, Signing & Capabilities에서 개발팀을 선택한 뒤 대상 기기에서 빌드 및 실행하는 방식임 - Apple Developer account가 없어도 무료 프로비저닝 프로파일로 시뮬레이터나 기기에서 최대 7일 동안 실행할 수 있음
visionOS 개발과 배포
- visionOS 개발에는 Xcode에 visionOS SDK가 설치되어 있어야 함
- 앱은 3D 시각화 경험을 위해 ImmersiveSpace API를 사용하고, 몰입감을 높이기 위해 공간 오디오를 포함함
- 요구 사항은 다음과 같음
- Apple silicon Mac
- Xcode 15.2 이상
- Apple Developer Account
- 개발자 모드가 활성화된 Vision Pro
- 같은 Wi-Fi 네트워크에 연결된 Mac과 Vision Pro
- 무선 개발 절차는 Vision Pro에서 Developer Mode와 Remote Development를 허용한 뒤, Xcode의 Devices and Simulators에서 Vision Pro를 페어링하고 빌드 대상으로 선택해 실행하는 방식임
- 흔한 문제는 다음과 같음
- “Device not found”: Wi-Fi 연결 확인 필요
- “Unauthorized device”: Vision Pro 재페어링 필요
- “Build failed”: 프로비저닝 프로파일 업데이트 필요
- “No paired Vision Pro found”: Vision Pro 연결 및 페어링 확인 필요
- “Invalid signing”: 개발자 계정과 프로비저닝 프로파일 확인 필요
플랫폼별 사용 방식
- macOS에서는 Lightstreamer 연결과 ISS 텔레메트리 신호 수신이 모두 정상일 때 메뉴 바 항목에 🧑🏽🚀🚽 와 채움 비율이 표시됨
- 연결 또는 ISS 텔레메트리 신호가 끊기면 메뉴 바 항목은 🧑🏽🚀❗ 와 마지막 수신값을 표시하고, 메뉴에는 “Connecting” 또는 “No Signal”이 표시됨
- iOS에서는 앱을 실행하면 단순한 인터페이스로 현재 탱크 수위를 볼 수 있음
- visionOS에서는 ISS 폐기물 탱크를 몰입형 3D로 보고, 실시간 채움 수위를 시각화함
- watchOS에서는 손목에서 ISS 폐기물 탱크 채움 수위를 실시간으로 추적함
제작 동기와 한계
- 제작 동기는 우주정거장의 화장실에서 나오는 실제 실시간 텔레메트리 데이터를 읽는 농담 앱을 오후에 만들 수 있다는 점이 “우스꽝스럽지만 동시에 놀랍다”는 데 있음
- Swift를 배우기 위한 좋은 핑계이기도 했지만, 핵심 동기는 앱 자체의 터무니없음이었음
- 알려진 문제는 다음과 같음
- 첫 Swift 및 Apple 플랫폼 앱이라 좋은 코딩 관행의 정점은 아님
- 작은 계기로도 예상 밖 방식으로 깨질 수 있음
- 오래된 데이터에 적극적으로 대응하지 않음
- 오류 처리에 크게 신경 쓰지 않음
- 버그 수정용 Pull Request는 환영함
- 데이터 스트림은 ISS Mimic을 통해 알게 되었고, ISS Mimic에는 소변 탱크 수위보다 훨씬 많고 흥미로운 통계가 있지만 pISSStream에는 추가하지 않을 예정임