이름, 그것은 정체성. 리액트(React)라 명명하다

412025년 09월 25일3

'리액트(React)'.
화이트보드에 쓰인 그 단어는 더 이상 단순한 코드네임이 아니었다. 그것은 팀의 새로운 깃발이자, 앞으로 나아갈 방향을 밝혀주는 등대였다. 프로젝트에 공식적인 이름이 생기자, 팀원들의 눈빛부터 달라졌다. 모호했던 목표가 뚜렷한 정체성으로 구체화된 것이다.

팀 리더 톰은 회의실을 돌며 팀원들에게 새로운 이름이 가진 의미를 다시 한번 각인시켰다.
“여러분, ‘리액트’라는 이름은 우리의 역할을 명확히 규정합니다. 우리는 모든 것을 다 하려는 거대한 ‘프레임워크’를 만드는 것이 아닙니다. 우리는 오직 한 가지 문제, 뷰(View) 계층의 문제에만 집중하는 날카로운 ‘라이브러리’를 만드는 겁니다.”

그의 말은 백본이나 앵귤러 같은 기존의 강자들과의 차별점을 분명히 했다. 리액트는 애플리케이션의 구조를 강제하지 않는다. 기존의 어떤 시스템에도, 마치 강력한 부품처럼 결합될 수 있어야 했다.

“우리가 만드는 것은 상태(State)의 변화에 ‘반응(React)’하여, 예측 가능하고 효율적으로 UI를 그려주는 엔진입니다. 그 이상도, 그 이하도 아닙니다.”

조던 워크는 톰의 말을 들으며 조용히 고개를 끄덕였다. 그에게 ‘리액트’는 기술적인 정의를 넘어, 자신이 추구하던 함수형 프로그래밍 철학의 완벽한 요약이었다.

그는 동료들에게 설명했다.
“기존 방식은 ‘이벤트 리스닝(Event Listening)’에 가깝습니다. 모델의 특정 속성 값이 바뀌는 이벤트를 듣고 있다가, 약속된 콜백 함수를 실행하죠. 하지만 우리는 ‘리액팅(Reacting)’을 할 겁니다. 특정 이벤트 하나하나에 귀 기울이는 대신, 애플리케이션의 상태라는 거대한 ‘세상’ 자체가 변했다는 사실에 통째로 반응하는 겁니다.”

그의 설명은 패러다임의 전환을 의미했다.
과거에는 개발자가 변경의 원인과 결과를 잇는 수많은 전선들을 직접 연결해야 했다 (listenTo). 하지만 리액트의 세계에서는, 그럴 필요가 없었다. 데이터의 세계와 UI의 세계라는 두 개의 거대한 판이 있고, 한쪽 판에 변화가 생기면 다른 쪽 판이 통째로, 하지만 지능적으로 반응하여 모습을 바꿀 뿐이었다.

그날 오후, 팀은 상징적인 의식을 치렀다. 프로젝트의 소스 코드가 담겨있던 디렉토리의 이름을 바꾸는 것이었다. 터미널에 나타난 명령어는 짧았지만, 그 의미는 결코 가볍지 않았다.

mv FaxJS/ react/

엔터 키가 눌리는 순간, ‘FaxJS’라는 이름은 공식적으로 과거의 유산이 되었다. 이제 모든 것은 ‘리액트’라는 이름 아래 통합되었다.

이름은 프로젝트에 영혼을 불어넣었다. 팀원들은 코드를 작성하다가 막힐 때마다 스스로에게 질문을 던지기 시작했다.
‘이 방식이 과연 ‘리액티브(Reactive)’한가?’
‘내가 지금 UI를 직접 조작하려 하고 있지는 않은가?’
‘이것은 상태 변화에 대한 순수한 결과물인가?’

‘리액트’라는 이름은 그들이 길을 잃지 않도록 지켜주는 기준점이 되었다. 그들은 더 이상 단순히 버그를 잡고 성능을 개선하는 것이 아니었다. ‘반응형 UI’라는 새로운 프로그래밍 모델의 정체성을 한 줄 한 줄의 코드로 조각해나가기 시작한 것이다. 이제 그들의 다음 과제는 이 철학을 담을 구체적인 API, 즉 개발자들이 실제로 사용하게 될 함수의 모습을 설계하는 것이었다.