작동 방식
인터넷 없이도 생리 기록이 될까요 — MiniCycle 오프라인 사용
비행기에서 와이파이를 끈 채로, 혹은 신호가 한 칸 뜨는 곳에서 생리가 시작됐다고 해 봅시다. 그래도 기록이 될까요? MiniCycle에서는 됩니다. 날짜를 기록하고, 달력을 그리고, 다음 생리와 가임기를 계산하고, 알림을 띄우는 일까지 모두 인터넷 없이 이뤄집니다. 로그인할 계정도, 접속할 MiniCycle 서버도 없으니까요. 네트워크를 쓰는 부분이 딱 하나 있는데, 숨기지 않고 분명히 짚어 두겠습니다.
짧게 답하면
MiniCycle에서 매일 하는 일은 전부 휴대폰 안에서 돌아갑니다. 생리 기록, 날짜 수정, 예측 확인, 메모, 위젯 보기, 알림 받기. 어느 것도 연결을 기다리지 않습니다. 비행기 모드를 켜도 앱은 똑같이 동작합니다.
흔히 생리 앱도 채팅이나 메일처럼 서버와 동기화해야 하니 신호가 끊기면 멈출 거라 여깁니다. MiniCycle은 반대로 만들어져 있습니다. 기록이 기기에 있고, 그 기록을 예측으로 바꾸는 계산도 기기에서 합니다. 네트워크는 이 흐름에 끼어 있지 않습니다.
연결 없이 되는 것들
앱의 핵심은 완전히 오프라인입니다. 생리 시작과 종료를 기록하고, 잘못 찍은 날짜를 고치고, 달력이 바뀌는 걸 볼 수 있습니다. 예측도 그 자리에서 다시 계산됩니다. 저장된 시작일에서 다음 생리를, 거기서 거꾸로 배란일을, 그 둘레로 가임기를요.
날짜별 메모, 통계 탭, 홈 화면 위젯도 같은 기기 안 데이터를 읽으니 신호가 없어도 그대로입니다. 알림도 마찬가지고요. 서버에서 보내는 푸시가 아니라 휴대폰에 예약해 둔 로컬 알림이라서요. 다음 주 화요일로 맞춘 알림은 그사이 한 번도 접속하지 않았어도 화요일에 옵니다.
서버 없이 돌아가는 이유
MiniCycle에는 로그인이 없고, 사용자의 기록을 MiniCycle 서버에 따로 보관하지도 않습니다. 오프라인 사용은 이 설계가 만든 결과이지 우연히 따라온 게 아닙니다. 답을 내기 전에 받아 올 것도, 올려야 할 것도 없으니 앱은 필요한 걸 이미 기기에 다 갖고 있습니다.
예측 엔진도 그 일부입니다. 최근 생리 시작일을 최대 12개까지 보고 주기 길이를 추정하는데, 평균이 아니라 중앙값을 씁니다(간격이 10개 이상이면 가장 짧은 값과 가장 긴 값을 하나씩 먼저 뺍니다). 기록이 적으면 29일을 기본값으로 둡니다. 배란일은 다음 예정일에서 9–14일 범위의 황체기를 거꾸로 빼서 잡고, 가임기는 추정 배란일 5일 전부터 다음 날까지입니다. 이 계산은 달력을 여는 순간 전부 기기 안에서 일어납니다.
네트워크를 쓰는 단 한 부분
정직하려면 예외를 짚어야 합니다. MiniCycle에는 Firebase Analytics가 들어 있습니다. Google의 사용 측정 SDK인데, 앱 열기나 화면 조회 같은 이벤트를 남겨 앱이 어떻게 쓰이는지 파악하는 데 씁니다. 이 이벤트를 보내는 데는 연결이 필요합니다.
다만 무언가를 막지는 않습니다. 오프라인일 때 사용 이벤트는 기기에서 기다렸다가, 다시 연결되면 그때 올라갑니다. 그동안 모든 기능은 멀쩡히 돌아갑니다. 지금 이 글을 보는 웹사이트는 따로 Google Analytics를 쓰지만, 그건 앱이 아니라 사이트 이야기입니다. 그러니 정확한 말은 MiniCycle이 네트워크를 전혀 안 쓴다가 아니라, 내 주기와 관련해 실제로 하는 일 중에 네트워크에 매인 건 없다는 것입니다.
연결이 필요할 때
분명히 필요한 순간이 하나 있습니다. 앱을 설치하거나 업데이트할 때는 App Store를 거치니 인터넷이 있어야 합니다. 한 번 받는 일이지 매일 필요한 건 아닙니다.
그 뒤로는 평범한 사용에 네트워크가 끼어들 일이 없습니다. 해외에서 데이터 로밍을 꺼 두든, 와이파이 없는 곳에서 일주일을 보내든 앱은 평소처럼 기록하고 예측합니다. 떠나기 전 맞춰 둔 알림도 제때 울립니다.
오프라인 사용이 할 수 있는 일과 없는 일
오프라인으로 쓴다고 예측의 성격이 달라지지는 않습니다. 예측은 내 날짜에서 뽑은 참고 정보일 뿐, 피임 수단도 임신 테스트도 의학적 소견도 아닙니다. 연결 없이 기기에서 계산했다고 더 정확해지지도, 덜 정확해지지도 않습니다.
그리고 오프라인 사용은 백업과 다릅니다. 기기에만 있는 기록은 휴대폰을 잃어버리거나 초기화하거나 앱을 지우면 사라질 수 있고, 오프라인이라는 점만으로 그게 막아지지는 않습니다. 사본을 남기는 게 중요하다면, 그건 앱이 매일 신호를 필요로 하느냐와는 별개의 일입니다.
비행기 모드, 여행, 약한 신호
장거리 비행을 떠올려 봅시다. 탑승구에서 비행기 모드를 켰고, 세 시간쯤 지나 생리가 시작됩니다. MiniCycle을 열어 날짜를 누르고 시작을 기록하면 저장되고, 달력이 다시 그려지고, 다음 예정일이 옮겨집니다. 35,000피트 상공에서요. 착륙해 다시 신호를 켜도 따로 맞출 게 없습니다.
또는 와이파이 없는 숙소에서 로밍도 꺼 둔 채 일주일을 보낸다고 해 봅시다. 매일 평소처럼 기록하고 메모도 저장됩니다. 지난달에 맞춰 둔 생리 알림도 제때 뜨고요. 연결을 기다리는 건 익명 사용 이벤트 몇 개뿐이고, 다음에 인터넷이 닿을 때 조용히 올라갑니다.
자주 묻는 질문
계정을 만들거나 로그인해야 하나요? 아니요. MiniCycle은 계정이 없어서 로그인 단계도, 서버에 인증할 것도 없습니다. 앱을 열면 바로 됩니다.
비행기 모드에서도 알림이 오나요? 옵니다. 알림은 휴대폰에 예약된 로컬 알림이라 연결과 상관없이 정해진 날짜에 울립니다.
와이파이를 끄면 데이터가 지워지거나 숨겨지나요? 아니요. 기록은 기기에 있어서 연결 상태가 건드리지 않습니다. 온라인일 때나 오프라인일 때나 똑같이 보입니다.
위젯도 오프라인에서 갱신되나요? 네. 위젯은 앱과 같은 기기 안 데이터를 읽으니 네트워크 없이도 최근 기록과 예측을 반영합니다.
오프라인일 때 나가는 게 있나요? 앱의 사용 분석뿐이고, 그것도 나중에요. 이 이벤트는 기기에서 기다렸다가 다시 연결될 때 올라갑니다. 주기 데이터가 아닙니다.
한 줄로
MiniCycle은 핵심을 전부 휴대폰 안에서 돌립니다. 그래서 인터넷이 없어도 생리 기록, 날짜 수정, 달력, 예측, 메모, 통계, 위젯, 알림이 모두 동작합니다. 계정도 MiniCycle 서버도 없고, 예측 엔진(최근 12개 기록의 중앙값 주기 길이, 9–14일 황체기, 배란 5일 전부터 다음 날까지의 가임기, 기본값 29일)이 기기에서 계산하기 때문입니다.
네트워크를 쓰는 부분은 Firebase Analytics 하나로, 익명 사용 이벤트를 남겼다가 다시 연결될 때 올립니다. 어떤 기능도 막지 않고, 주기 데이터를 담지도 않습니다. 연결은 App Store에서 앱을 설치하거나 업데이트할 때만 필요합니다. 오프라인으로 쓴다고 예측이 더 정확해지는 건 아니고, 백업을 대신하지도 않습니다.
MiniCycle은 깔끔한 아이폰 생리 캘린더, 로컬 기록, 간단한 통계, 홈 화면 위젯을 위해 만들었습니다.
App Store에서 받기