Product Hunt

SimpleSpread — Native, open source Mac spreadsheet

SimpleSpread — Mac용 네이티브 오픈소스 스프레드시트

SimpleSpread는 Swift로 만든 가벼운 Mac 스프레드시트 앱입니다. XLSX를 기본 파일 형식으로 사용하고 156개 함수, 증분 재계산, CSV 수식 주입 방지 기능을 제공합니다. Product Hunt 댓글에 따르면 피벗 테이블도 추가됐습니다.

AI 요약

SimpleSpread는 CSV나 XLSX 파일을 빠르게 열고 편집하는 데 초점을 둔 Mac용 스프레드시트입니다. 개발자는 Numbers가 파일을 자체 형식으로 바꾸고, Excel은 구독과 대규모 설치가 필요하며, Google Sheets는 브라우저와 계정을 요구하는 점을 대안이 필요한 이유로 들었습니다. 앱 전체를 Swift로 작성했으며 무료로 MIT 라이선스에 따라 공개했습니다.

파일 처리와 수식

XLSX를 기본 형식으로 사용합니다. Excel, Numbers, Google Sheets에서 만든 파일을 열어 수정한 뒤 저장해도 스타일, 숫자 형식, 캐시된 수식 값, 병합 범위와 고정 창을 보존합니다. XLSX 판독기와 기록기는 ZIP 처리 계층까지 자체 구현했습니다.

CSV를 읽을 때는 구분자를 추정하고 BOM과 CP1252 인코딩을 감지합니다. 앞자리 0도 유지하며, =cmd처럼 수식으로 해석될 수 있는 필드는 수식이 아닌 텍스트로 가져옵니다. 개발자는 이를 통해 CSV를 열 때 발생할 수 있는 수식 주입 위험도 고려했습니다.

수식 엔진에는 SUMIFS 와일드카드, XLOOKUP, INDEX/MATCH, IRR/XIRR, 날짜 및 텍스트 함수 등 156개 함수가 들어 있습니다. Sheets와 Excel이 공유하는 값 변환 규칙을 따르며, 변경된 셀에 맞춰 다시 계산하는 증분 재계산과 순환 참지 기능도 제공합니다.

편집 기능과 한계

편집 방식은 Excel과 비슷합니다. Enter와 편집 모드, 입력 즉시 셀 내용을 바꾸는 동작, F2, ⌘-화살표 이동, 채우기 핸들, ⌘D와 ⌘R, 실행 취소, 찾기, 확대·축소를 지원합니다. 앱은 공증을 거쳤고 자체 업데이트 기능도 갖췄습니다.

출시 당시 차트, 피벗 테이블, 조건부 서식, 배열 수식, INDIRECT/OFFSET, 공동 작업은 지원하지 않았습니다. 고정 창과 병합 셀 정보는 파일에 보존하지만 화면에는 표시하지 않았습니다. Apple Silicon Mac과 macOS 14 이상이 필요하며, 숫자와 날짜 입력은 en-US 형식만 받습니다. Product Hunt 댓글에서 개발자는 이후 1.3.0에 피벗 테이블을 추가했다고 밝혔습니다. 찾기 및 바꾸기와 값 붙여넣기는 다음 작업 목록에 있다고 했습니다.

Product Hunt 반응

  • @baudehlo — Mac에서 빨리 열리고, .xlsx 파일을 편집한 뒤 다시 저장하며, 그 밖의 기능은 하지 않는 스프레드시트를 원했습니다. Numbers는 자체 형식으로 바꾸고, Excel은 CSV를 열기에는 구독료와 설치 규모가 부담이며, Google Sheets는 브라우저와 계정이 필요합니다. 그래서 SimpleSpread를 만들었습니다. 앱은 Swift로 작성한 네이티브 Mac 앱이며 모델, 수식 엔진, XLSX 판독기와 기록기, ZIP 계층, CSV 처리와 그리드까지 스프레드시트 전체를 처음부터 만들었습니다. 외부 라이브러리는 업데이트용 Sparkle뿐입니다. XLSX는 기본 형식이라 다른 스프레드시트 앱의 파일을 열고 수정한 뒤 다시 저장해 보낼 수 있습니다. CSV는 구분자 추정, BOM과 CP1252 감지, 앞자리 0 보존을 지원하고 =cmd 같은 필드도 수식이 아닌 텍스트로 가져옵니다. 156개 함수, 증분 재계산, 순환 감지 기능을 갖췄고 편집 방식은 Excel과 비슷합니다. 차트, 피벗 테이블, 조건부 서식, 배열 수식, INDIRECT/OFFSET, 공동 작업은 아직 지원하지 않습니다. Apple Silicon 전용이며 macOS 14 이상, en-US 숫자·날짜 입력만 지원합니다. 무료 MIT 라이선스 프로젝트라 코드를 읽고 포크하거나 패치를 보낼 수 있습니다. 매일 쓰기 어렵게 만드는 빠진 기능이 무엇인지 듣고 싶습니다. 찾기 및 바꾸기와 값 붙여넣기는 다음 작업입니다.
  • @mathew_james2 — 큰 XLSX 파일도 느려지거나 메모리를 너무 많이 쓰지 않고 처리하나요?
    • @baudehlo — 그럴 거라고 보지만, 시험해 볼 만한 예제 파일이 없습니다.
  • @justlewitt — 비대해진 소프트웨어와 같은 파일 형식을 쓰면서도 깔끔하고 Apple Silicon에 맞춘 버전이라니 좋습니다.
  • @jaewon_seo — 피벗 테이블이 없으면 쓰기 어렵습니다. 빠른 합계를 낼 때는 차트보다 피벗 테이블을 훨씬 더 자주 씁니다.
    • @baudehlo — 철학에 맞는지 살펴보겠습니다. 코드베이스를 지나치게 키운다면 아이디어를 거절할 수도 있습니다. Numbers가 늘 느리게 열리는 것과 달리 앱이 바로 열리게 하는 것이 목표입니다.
    • @baudehlo — 피벗 테이블을 지원하는 1.3.0을 출시했습니다. 이제 핑계가 없겠네요.
  • @galdayan — CSV 수식 주입을 막는 세부 사항, 즉 =cmd를 수식이 아닌 텍스트로 가져오는 건 대부분의 취미 프로젝트가 생각조차 하지 않는 부분입니다. 실제로 보안상 놓치기 쉬운 문제고, 당하고 나서야 배우는 사람이 많습니다. 누군가 피벗 테이블이 없으면 못 쓰겠다고 한 뒤 한 시간 만에 피벗 테이블을 출시한 것도 놀랍습니다. 이미 거의 만들어 둔 건가요, 댓글을 보고 바로 만든 건가요?
    • @baudehlo — 피벗 테이블은 편집하고 옮길 수 있는 SQL GROUP BY와 거의 같습니다. SQL 경험이 있어서 비교적 수월했습니다. 대신 재귀 수식 엔진도 교체했습니다. 기존 방식은 스택을 넘치게 해서 재귀를 쓰지 않는 동등한 엔진으로 바꿨는데, 그게 더 어려웠습니다. 제 오픈소스 활동 기록을 보세요. 30년 동안 이 일을 해왔습니다. 일요일이고 비도 오는데, 달리 뭘 하겠어요?

원문: Product Hunt / 번역·요약: Trawling