2P by superlucky84 8시간전 | ★ favorite | 댓글 1개

1. 동기 – 왜 만들었나

사람마다 함수형 프로그래밍에서 중요하게 보는 가치는 다를 수 있다고 생각합니다.
어떤 분은 이론적인 정합성을, 어떤 분은 추상화의 일관성을 더 중요하게 보실 수도 있을 것 같습니다.

저는 그중에서도
pipe를 통해 데이터 흐름을 선언적으로 한눈에 볼 수 있다는 점
함수형 프로그래밍의 가장 큰 장점으로 느껴왔습니다.

특히 JavaScript처럼 코드가 쉽게 복잡해지는 환경에서는,
데이터가 어디서 와서 어디로 흘러가는지가 눈에 보이는 구조
실무에서 더욱 중요하다고 생각했습니다.

하지만 이 방식을
프로그래밍 이해도가 서로 다른 구성원들로 이루어진 팀 단위 실무 에 적용하려다 보면,
현실적인 제약을 자주 마주하게 됩니다.

함수형 패턴을 적용하는 과정에서
값이 점점 추상화된 구조로 감싸지고,
중간 단계마다 별도의 규칙을 이해해야 하는 순간들이 늘어나면서,
정작 제가 중요하게 보던 “파이프라인 전체 흐름의 가독성”
흐려지는 경험을 여러 번 했습니다.

최근에는 코드 생성을 도와주는 도구들이 점점 정교해지면서,
의도하지 않게 설계가 과도하게 복잡해지는 경우도 자주 마주하게 되었습니다.
그래서 fp-pack에서는 사람이든 도구든
가능한 한 단순한 형태의 파이프라인만 작성하도록 유도하는 구조
의식적으로 선택했습니다.

fp-pack은 이런 경험을 바탕으로,
이론적인 완결성보다는
팀 환경에서 지속 가능하게 유지할 수 있는 Pipe 중심의 가독성
우선순위에 두고 만든 개인 프로젝트입니다.

함수형의 부작용 처리가 특정 이론에 익숙한 사람들에게만 국한되지 않도록,
이해하기 쉬운 패턴으로 재해석한 실험적 Side Effect 처리 방식도 함께 도입했습니다
(관련 가이드는 👉 https://superlucky84.github.io/fp-pack/#/ko/guide/side-effect-guide).


2. 핵심 원칙

  • Plain Value 중심
    파이프라인 내부에서 값을 불필요하게 감싸지 않고,
    Plain Object / Plain Value를 그대로 유지해
    흐름 파악과 디버깅이 직관적이도록 했습니다.

  • Side Effect의 명시적 분리
    중단(Early Exit)이나 예외 처리가 필요한 경우에만
    별도의 전용 파이프라인을 사용하도록 설계했습니다.

  • 낮은 학습 곡선
    새로운 개념보다는
    익숙한 pipe, pipeAsync 사용 패턴을 중심으로 구성해
    팀 내에서 공유하기 쉽도록 했습니다.

  • 타입 안전성
    TypeScript를 활용해
    파이프라인 중간의 타입 불일치를 컴파일 타임에 확인할 수 있도록 했습니다.


3. 맺음말

복잡한 개념을 새로 학습하지 않더라도,
JavaScript / TypeScript 환경에서
함수형 프로그래밍의 핵심 장점인
“데이터 흐름을 읽기 쉬운 코드”
실무에서 자연스럽게 활용하고 싶은 분들께
하나의 선택지가 되었으면 합니다.


🔗 문서(Documentation)
https://superlucky84.github.io/fp-pack/#/ko

🔗 GitHub
https://github.com/superlucky84/fp-pack


초·중급 개발자를 포함한 다양한 배경의 팀 구성원들이
특정 스타일이나 사고방식에 억지로 맞추지 않더라도,
함수와 pipe, 커링 정도만 이해하면
자연스럽게 활용할 수 있는
함수형 사고가 가미된 프로그래밍을 떠올리며
fp-pack을 만들어 보았습니다.