Electron 렌더 프로세스에서 벗어나 Swift로 녹화 엔진을 재구축한 이유
Rebuilding our Electron meeting-recording engine in Swift

Circleback은 미팅 녹화 엔진을 Electron의 렌더 프로세스에서 Swift 기반 네이티브 코드로 전면 재작성했습니다. 렌더 프로세스는 GC 일시 중지, 스로틀링 등 실시간 오디오/비디오 캡처에 적합하지 않다고 판단했기 때문입니다. macOS에서는 ScreenCaptureKit, Windows에서는 libobs를 사용하고, Swift 레이어로 통합했습니다. 또한 Swift의 @Published 속성을 React의 Jotai atom으로 자동 변환하는 내부 도구 'Atomic'을 개발해 브리지 코드를 제거했습니다. 이 글은 클록 동기화, 드라이버 샘플 레이트 불일치, 충돌에도 안전한 fragmented MP4 등 녹화 엔진 구현의 까다로운 문제와 해결책을 다룹니다.
렌더 프로세스는 실시간 오디오 및 비디오 캡처에 적합한 곳이 아닙니다. 캡처 엔진은 GC 일시 중지, 스로틀링 또는 브라우저 런타임이 반응성을 유지하기 위해 수행하는 다른 어떤 것도 용납할 수 없습니다.
- losteric
AI가 쓴 글은 정말 읽기가 힘들어요. 무례하게 느껴지는 것 외에도, 그 스타일은 읽기에 너무 피곤합니다... 마케팅식의 도입과 전개, 반복은 소량으로만 효과가 있어요.
- blululu
클로드에게 이 글을 쓰게 한 사람들이 클로드에게 이 앱의 크기, RAM 사용량, CPU 사용률에 대한 성능 데이터를 요청할 수 있는지 궁금하네요. RAM 부족이 심해지면서 AI 기반 소프트웨어 개발이 500MB 웹사이트와 1GB 일렉트론 앱을 성능 좋은 소프트웨어로 전환할 수 있다면 정말 좋겠어요. 에이전트 코딩은 SwiftUI로 UI를 작성하는 것만큼이나 React로 작성하는 것도 잘합니다. 그래서 소프트웨어 커뮤니티가 생산성 향상을 성능 좋은 코드에 투자할 수 있을지도 모른다는 희망이 있어요. 이 프로젝트에 얼마나 많은 시간과 노력이 들었고, 최종 사용자에게 속도와 용량 측면에서 어떤 실질적인 이점이 있는지 알면 흥미로울 것 같아요.
- insane_dreamer
> 이것이 macOS 엔진이 복잡성을 갖는 이유입니다.
안녕, 클로드.