인사이트 · 소개

MEA Tools의 라이브러리는 왜 다른 사람의 것 대신 처음부터 직접 만들었을까?

인터넷에 있는 대부분의 PDF나 문서 변환 툴은 사실 같은 오픈소스 라이브러리 위에 얹은 예쁜 인터페이스일 뿐입니다 — pdf-lib, pdf.js, mammoth 같은 것들이 여기저기서 재사용됩니다. MEA Tools는 더 긴 길을 선택했습니다: 파서, 변환기, 암호 함수를 처음부터 직접 작성하는 것입니다. 그 이유를 설명하고, 예외도 함께 공개합니다 — 모든 것이 직접 작성된 건 아니며, 그것도 의도적인 결정이었기 때문입니다.

직접 작성했다는 건 정말로 "처음부터"라는 뜻입니다

MEA Tools의 PDF 기반 툴 — PDF 합치기, PDF 나누기, PDF를 Word로 변환, PDF 양식 채우기, 암호화와 워터마크까지 — 거의 모두의 핵심인 pdf-lib 폴더를 예로 들어보겠습니다. 이 폴더는 37개에 가까운 JavaScript 파일, 총 1만 줄이 넘는 코드로 이루어져 있으며, 모두 처음부터 직접 작성되었습니다: 원시 PDF 객체 파서, 토크나이저, 콘텐츠 스트림 인터프리터, xref 구조 재구성기, 페이지를 이미지로 렌더링하는 래스터라이저까지요.

즉 MEA Tools가 PDF 파일을 "읽을" 때, 이것은 그냥 가져다 쓰는 남의 라이브러리 호출이 아닙니다 — PDF 파일 구조를 사양에 맞춰 바이트 단위로 실제로 파싱하는 코드가, 이 툴의 필요에 맞춰 특별히 작성되어 있습니다. 다른 폴더들도 마찬가지입니다: 이미지 압축 로직, 색상 변환, QR 코드 생성, 해시 함수까지 — 전부 직접 작성한 코드이지, import해서 바로 쓰는 npm 패키지가 아닙니다.

왜 굳이 직접 작성하는 수고를 들일까요?

단순한 기술적 자존심이 아니라 구체적인 이유가 몇 가지 있습니다:

하지만 전부 직접 작성한 건 아닙니다 — 그리고 그것도 의도적입니다

이 글이 홍보가 아니라 정직하려면: MEA Tools의 일부 영역은 실제로 제3자 라이브러리나 모델을 사용하며, 이는 잊어버린 게 아니라 의식적인 결정입니다.

흥미로운 부분은 코드 자체 안에 있습니다: 처음부터 수동으로 작성하지 않기로 일부러 결정한 또 다른 부분은 PDF 암호화를 위한 AES 함수입니다 — 이는 직접 만든 AES 구현이 아니라 브라우저 내장 Web Crypto API를 활용합니다. 그 이유는 코드 주석에 분명히 적혀 있습니다: AES는 실제 보안(PDF 내용을 다른 사람으로부터 보호)을 위해 사용되며, 브라우저 내장 AES 구현은 이미 철저히 감사되었고 타이밍 공격에도 강합니다 — 보안 감사의 보장 없이 수동으로 다시 작성한다면 매우 위험한 부분입니다.

비교해보면, 같은 툴에 있는 MD5와 RC4 해시 함수는 실제로 처음부터 수동으로 작성되었습니다 — 거기서 MD5/RC4는 민감한 보안 목적이 아니라, 오래된 PDF 데이터 형식의 필요를 위해 사용되기 때문입니다.

원칙

합리적일 땐 직접 작성, 보안이 걸린 부분은 검증된 것을 사용

MEA Tools의 철학은 "위험을 감수하더라도 무조건 전부 직접 작성한다"가 아니라, 완전히 스스로 파악하는 것이 합리적인 부분은 직접 작성하고, 실제 데이터 보안이 걸린 부분은 이미 검증된 구현에 맡기는 것입니다.

모든 툴 보기 →

이게 사용자인 당신에게 왜 중요할까요?

겉보기엔 그냥 배경의 기술적 디테일처럼 들릴 수 있습니다. 하지만 그 영향은 바로 체감됩니다: 자신의 필요에 맞춰 특별히 작성된 툴은 대체로 더 가볍게 실행되고, 더 빨리 열리며, 동작을 더 예측하기 쉽습니다 — 실제로는 쓰이지 않는 범용 코드의 부담을 짊어지지 않기 때문입니다. 그리고 PDF 암호화처럼 데이터 보안에 정말 핵심적인 부분에서는, 일관성만을 위해 모든 것을 억지로 수동 작성하는 것보다 이미 검증된 구현을 사용하는 선택이 오히려 더 안전합니다.

여전히 계속 발전 중입니다

이것도 알아둘 필요가 있습니다: "처음부터 작성" 방식은 바로 쓸 수 있는 라이브러리를 설치하는 것보다 새 기능마다 더 많은 시간이 걸린다는 뜻입니다. 특히 PDF 관련해서, 직접 만든 pdf-lib는 PDF 파일로 할 수 있는 전체 영역 중 일부만을 다루고 있습니다 — PDF 형식의 세계는 넓고, MEA Tools는 아직 여기서 멈추지 않았습니다. MEA Tools 전반은 여전히 계속 개발되고 추가되고 있으므로, 지금 있는 기능 범위가 최종 버전이 아니라 시간이 지나면서 계속 늘어날 것입니다.