TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 26 READS

브라우저 탭 하나로 논문을 컴파일한다고? SwiftLaTeX과 WebAssembly의 마법

서버 없이 브라우저에서 논문을 컴파일한다

혹시 LaTeX 써보신 적 있나요? 수학 공식이나 논문, 학술 문서를 예쁘게 만들 때 쓰는 조판 도구예요. 워드처럼 보이는 대로 편집하는 게 아니라, 코드처럼 문법을 적으면 그걸 PDF로 '컴파일'해주는 방식이거든요. 복잡한 수식도 깔끔하게 뽑아주기 때문에 이공계 논문은 거의 다 LaTeX으로 쓴다고 봐도 돼요.

그런데 이 LaTeX에는 오래된 골칫거리가 하나 있어요. 엔진(문서를 PDF로 바꿔주는 프로그램)이 무겁고 설치가 까다롭다는 거예요. 보통 TeX Live 같은 패키지를 깔면 몇 기가바이트씩 차지하거든요. 그래서 온라인 LaTeX 편집기들은 대개 서버에서 컴파일을 대신 해주는 방식을 써요. 내 문서를 서버로 보내고, 서버가 PDF를 만들어 돌려주는 거죠.

SwiftLaTeX은 여기서 발상을 완전히 뒤집었어요. "서버로 보내지 말고, 그냥 브라우저 안에서 컴파일하자"는 거예요. 이걸 가능하게 한 게 바로 WebAssembly예요.

WebAssembly가 뭐길래

이게 뭐냐면, 브라우저 안에서 C나 C++ 같은 언어로 짠 프로그램을 거의 네이티브 속도로 돌릴 수 있게 해주는 기술이에요. 원래 브라우저는 자바스크립트만 돌릴 수 있었잖아요? 그런데 자바스크립트는 무거운 계산에는 좀 느려요. WebAssembly(줄여서 Wasm)는 C/C++ 코드를 브라우저가 이해하는 저수준 바이너리로 미리 컴파일해두는 방식이라, 자바스크립트보다 훨씬 빠르게 돌아가요.

LaTeX 엔진(TeX, XeTeX 같은 것들)은 원래 C로 짜여 있어요. 수십 년 묵은 프로그램이죠. SwiftLaTeX은 이 C 코드를 Emscripten이라는 도구로 WebAssembly로 변환했어요. 그 결과, 원래는 컴퓨터에 설치해야만 돌아가던 무거운 조판 엔진이 그냥 웹 브라우저 탭 하나 안에서 돌아가게 된 거예요. 신기하죠.

이게 왜 대단한 걸까

서버가 필요 없다는 건 생각보다 큰 의미가 있어요. 첫째, 프라이버시예요. 내 논문이나 문서를 외부 서버로 보낼 필요가 없으니, 민감한 내용도 안심하고 작업할 수 있어요. 둘째, 오프라인에서도 돼요. 인터넷이 끊겨도 브라우저만 켜져 있으면 PDF를 뽑을 수 있죠. 셋째, 서버 비용이 안 들어요. 컴파일 부담을 사용자 브라우저가 나눠 가지니까, 수천 명이 동시에 컴파일해도 서비스 제공자의 서버가 터지지 않아요.

폰트 처리도 영리하게 해결했어요. LaTeX은 폰트가 핵심인데, 모든 폰트를 미리 다 받아놓으면 용량이 너무 커지거든요. SwiftLaTeX은 그 문서에 필요한 폰트만 그때그때 받아오는 방식으로 초기 로딩을 가볍게 만들었어요.

업계 흐름 속에서 보면

브라우저 안에서 무거운 프로그램을 돌리는 건 SwiftLaTeX만의 얘기가 아니에요. 포토샵을 웹에서 돌리는 Photoshop Web, SQLite를 브라우저에서 굴리는 sql.js, 심지어 파이썬을 브라우저에서 실행하는 Pyodide까지, 다들 WebAssembly를 기반으로 해요. "원래 설치해야 했던 무거운 도구를 웹으로 가져온다"는 게 요즘 프론트엔드의 큰 트렌드거든요. SwiftLaTeX은 그 흐름을 학술 조판이라는 까다로운 분야에서 증명해 보인 사례예요.

한국 개발자에게

당장 써먹을 데가 많아요. 사내 위키나 문서 도구에 수식 입력 기능을 붙이고 싶은데 서버 부담이 걱정된다면, 브라우저 기반 LaTeX 컴파일이 좋은 선택이 될 수 있어요. 교육용 서비스에서 학생들이 수식을 직접 입력하고 결과를 바로 보게 하는 데도 잘 맞고요.

더 넓게 보면, "이 기능 꼭 서버에서 해야 하나?"를 다시 묻게 만드는 사례예요. WebAssembly가 성숙하면서, 예전엔 무조건 백엔드로 보내야 했던 무거운 작업들을 점점 클라이언트에서 처리할 수 있게 되고 있거든요. 서버 비용과 확장성 고민을 덜어주는 무기가 하나 더 생긴 셈이죠.

복잡한 조판 엔진마저 브라우저 탭 안으로 들어온 지금, 여러분이 만들고 있는 서비스 중에 '서버 없이 브라우저에서 끝낼 수 있는' 기능은 어떤 게 있을까요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://www.swiftlatex.com/
SHARE
처리 중...