아닛? 언제 블로그를 7개나 만들었냐! 라고 할 수도 있겠지만 놀랍게도 현재 떠있는 블로그는 대략 6번의 재개발이 일어난 것이다. 번호 없이 잊힌 버전들도 포함하면 6개가 넘을 것이다.
지금 쓰고 있는 것은 Rescript를 사용하는 것이 가장 큰 특징이다. Rescript란 프로그래밍 언어 하던 사람들, 정확히는 OCaml 하던 사람들이 개같은 자바스크립트를 길들이기 위해 시작한 또 하나의 프로젝트이다. 결국 타입스크립트보다 나은 게 뭔지 답할 수 있어야 성공할 것이다. 그냥 OCaml의 환상이 아닐까 하는 느낌도 없잖아 있지만 그래도 생각해보면 몇 가지 장점들이 있다. 대수 타입, switch의 case가 빠짐없이 쓰였는지(exhaustiveness) 검사, 패턴 매칭, 함수 인자 타입 추론, 불투명 타입(opaque type), 중첩 모듈, 파이프 연산자 등등이 있겠다. 타입스크립트에 비해 아쉬운 점은 쓰는 사람이 많이 없다는 점 정도일까.... 라이브러리가 많이 없다. 그래도 이 부분은 Rescript에서 자바스크립트 호출하는게 어렵지 않아서 커버가 가까스로 되는 것 같다. OCaml에 비해 아쉬운 점은 여럿 있다. 미리 리턴(early return)도 안 되고 끝에는 중괄호가 있어야 되서 괄호 깊이가 점점 깊어진다는 점이 가장 아쉽다. OCaml에서는 닫는 괄호가 필요없어서 괜찮았고, 가장 문제인 option이나 result 타입의 경우에는 서로 변환이 되고 `let*` 같은 문법 확장(PPX)으로 만든 기묘한 문법도 쓸 수 있어서 편했다. 이런 부분들은 차차 낳아지겠지....
7.0의 또 다른 특징은 Rust를 떼어낸다는 것이다. 얘가 빌드 복잡하게 하는 주범이었는데 이제 떼어버렸으니 훨씬 단순해질 것이다. 대신 전에 언급한바 있는 PgTyped를 써보려고 한다. SQL로 쿼리문을 작성하면 거기에 맞는 타입을 생성해주는 친구이다. 원래 타입스크립트로 만든 라이브러리였지만 누가 이걸 포크해서 Rescript에서도 쓸 수 있게 해놓았다. 이게 없었다면 Rescript를 쓰기가 더 어려웠을 것이다. 사용자가 많이 없어서 잠재적 버그가 많다는 점이 흠이겠고 이미 버그 하나에 걸렸지만 요리조리 잘 피하면 될듯하다. 정 안 되면 오픈소스 기여도 해보고 얼마나 재밌을까.
또 이번엔 tailwind도 써보려고 한다. Next.js에서 기본으로 설정이 되어있어서 그래 얼마나 대단한가 보자 하는 심정으로 시작했다. 일단은 파일 갯수가 적어지는 게 장점인 것 같고 아직까지 특별히 문제는 없는 듯하다. 가끔 CSS를 써야할 때가 생기는 듯한데 결국 본질적으로 CSS란 전역으로 적용된다는 점을 생각하면 global.css를 수정하는 것이 오히려 이런 점을 상기시켜 더욱 조심하게 되는 것 같다. tailwind 만든 사람들이 말하길 이름 짓기에 시달리지 않아도 되는 것도 장점이라고 하는데 써보니 고개를 끄덕이게 되는 것도 같다. 색깔을 내가 고를 필요없이 기본 설정에 있는 것 중에 골라도 되는 것도 편하다.
이게 배포가 되고 나면 이제 프레임워크에서는 투정부릴게 없으니 기능들을 조금씩 추가하게 될 것 같다.