2026년 6월 21일 일요일

Fluid Ardule, 케이스를 만들었다고 끝난 것이 아니었다

프로토타입 시절의 불안정하고 엉성한 배선을 정리하여 전용 인클로저 안에 넣었을 때 이제 개발은 거의 끝났다고 안일하게 생각했다. 그러나 최근 며칠 동안의 성능 개선 작업 내역을 돌이켜 보면 '이제부터 시작이다'라는 생각이 강하게 들기 시작하였다. 실제 악기처럼 매일 연주하고 음원 파일이나 인터넷 라디오를 재생하면서 비로소 불편함이 보였고, 그것을 하나씩 개선해 나가는 과정에서 Fluid Ardule은 단순한 DIY 장치를 넘어 '연주할 수 있는 악기'로 성장하기 시작했다.


그 불편함은 결코 사소한 것이 아니었다. 처음에 그 심각함을 깨닫지 못했을 뿐이다. 개선을 하지 않고서는 도저히 다른 사람에게 소개하기 어려운 상태였다는 뜻이다. UI 개선과 같이 '고치면 편리하고, 그렇지 않으면 약간 불편한' 수준의 것이 결코 아니라, 근본적인 설계에 결함이 있음을 깨달은 것이다.

가상 아날로그 신시사이저인 Yoshimi에서  '글리치(glitch)'가 발생하는 원인이 TFT-LCD의 잦은 갱신 때문임을 지금까지 몰랐었다. 운영 스크립트를 통해 Yoshimi로 소리를 내는데 성공한 것에만 만족하고 있었을 뿐이다. 

다음으로는 4개 레이어로 구성된 콤비 음색을 로드했을 때 연주가 끊기는 현상을 해결해야 했다. 이는 FluidSynth의 폴리포니(polyphony, 동시발음) 수를 96으로 제한함으로써 해결할 수 있었다. 앞으로는 운영 스크립트 안에서 필요에 따라 폴리포니 수를 조정할 수 있도록 개선해 볼 계획이다. 

만약 Fluid Ardule 개발이 기업의 프로젝트였다면, 상급자는 이렇게 물었을지도 모른다. 프로토타입을 케이스에 넣고 나서야 왜 중대한 문제를 발견하 고치기 시작했느냐고. 6개월이 넘는 개발 기간 동안 충분히 파악하고 해결할 수 있었던 것 아니냐고.

“그동안 뭐 했어요?”

요즘 우리가 자주 듣는 말이다.

그러나 나는 이렇게 답하고 싶다.

“프로젝트가 그 단계까지 발전했기 때문에 지금의 문제가 보인 것입니다. 그 단계에 도달했기 때문에 비로소 관찰할 수 있었고, 그래서 이제야 해결할 수 있게 된 것입니다.”

이것이 바로 연구개발의 참모습이다.

Fluid Ardule, 화면을 새로 그리지 않는 것이 최고의 최적화였다

이 이미지는 TFT-LCD에 표시 중인 이미지를 파일로 저장하게 만드는 유틸리티('capture_fb1.py')를 사용하여 얻은 것이다.

Fluid Ardule의 개발을 하다 보면 예상했던 곳보다 전혀 엉뚱한 곳에서 병목을 만나는 경우가 있다. 최근 Yoshimi를 탑재하면서 이상한 현상이 나타났다. 같은 패치를 커맨드 라인의 Yoshimi에서 직접 실행하면 아무 문제가 없는데, Fluid Ardule 안에서만 간헐적으로 클릭 노이즈가 발생했다. ALSA 연결을 의심했고, aconnect 설정도 살펴봤으며, 실행 옵션도 하나씩 비교했다. 하지만 원인은 좀처럼 드러나지 않았다.

결국 의심을 거듭한 끝에 아주 단순한 실험을 해 보았다. TFT-LCD의 화면 갱신을 시험적으로 완전히 멈추어 보았다.

결과는 예상 밖이었다. Python 프로세스의 CPU 사용률은 약 50~60%에서 2% 수준으로 떨어졌고, Yoshimi의 글리치도 함께 사라졌다. 범인은 오디오 엔진이 아니라 UI였다.

생각해 보면 이는 당연한 결과였다. 일반적인 GUI 프로그램은 초당 수십 번 화면을 다시 그리는 것이 자연스럽지만, 악기는 다르다. 연주자가 버튼을 누르거나 노브를 돌리지 않는 동안에는 화면이 바뀔 이유가 거의 없다. 그렇다면 굳이 계속 프레임버퍼를 갱신할 필요도 없다.

그래서 Fluid Ardule의 UI 설계를 근본적으로 바꾸기로 했다.

이제 화면은 사용자 입력이 있을 때만 갱신한다. 버튼, 인코더, 메뉴 이동, 파라미터 변경과 같은 이벤트가 발생할 때만 TFT를 다시 그린다. CPU 온도나 Load와 같은 시스템 정보도 일정 주기로 갱신하지 않고, 필요할 때만 새로 읽어온다. 현재 예외는 실시간으로 변할 수 있는 MIDI 연결 상태 정도뿐이다.

설계를 변경하여 이벤트가 있을 때에만 화면을 갱신하도록 만들었더니 파이썬의 CPU 점유율이 13% 근처로 떨어졌다. 이는 엄청난 수준의 개선이다.

이러한 변경은 단순한 최적화가 아니다. Fluid Ardule의 설계 철학 자체를 바꾸는 일이다. 앞으로는 일반적인 데스크톱 애플리케이션이 아니라, 전원을 켜면 즉시 연주할 수 있는 전용 하드웨어 악기와 같은 동작을 목표로 하려고 한다.

이번 작업에서는 이와 함께 Media Player의 인터페이스도 다듬었고, 0바이트 yoshimi.config 파일이 시작 실패의 원인이 될 수 있다는 사실도 확인하여 복구 절차를 문서화했다. 또한 동일한 이벤트 기반 렌더링 정책을 앞으로 Combi 기능에도 적용하여, 다중 MIDI 처리에서도 안정성을 높여 나갈 계획이다.

새로운 기능을 하나 추가한 것은 아니다. 하지만 이번 변경은 지금까지의 개발 가운데 6월 17일의 ISR 적용과 더불어 가장 의미 있는 개선 중 하나였다고 생각한다. 화면을 덜 그리는 것이 오히려 더 좋은 악기를 만든다는 사실을 직접 확인했기 때문이다.

2026년 6월 20일 토요일

6월의 두 번째 달리기

6월 20일이 되어서야 겨우 6월 두 번째의 달리기를 하게 되었다. 궂은 날씨, 미국 출장, 그리고 귀국한 뒤의 더딘 시차 극복과 피로감 등이 주요 원인이었다. 나이가 들수록 국외 여행을 한 뒤 시차를 극복하는데 점점 더 많은 시간이 걸리는 것 같다. 게다가 귀국 다음 주에는 국내 출장도 많았다.

모처럼 여유가 있던 토요일, 비가 한참 내리더니 오후 서너시가 되어서 빗방울이 잦아들기 시작했다. 오후 5시 반이 되어 운동복으로 갈아입고 집을 나섰다. 늘 어두운 밤에만 달리다가 모처럼 해가 지기 전에 달리는 기분은 더욱 상쾌하고 새롭다. 비가 많이 내리고 난 다음이라 성가시게 하천 변을 무리지어 날아다니는 날벌레도 없어서 좋았다.

꽃이 가득 피어난 갑천변 산책로.


사실 미국 출장길에 운동화를 가져갔더라면 충분히 달리기를 할 수도 있었을 것이다. 워싱턴 DC의 링컨 기념관 주변을 거닐면서 기록을 위해 일부러 런데이 앱을 작동시켜 보았다.

실제로는 레드 라인의 Farragut North에서 내려서 링컨 기념관까지 약 1.5마일을 걸었다. 말도 못하게 더운 날씨였다.

오랜만에 레드미 워치를 작용하고 달려 보았다. 이제 달리기에 입문한지도 어언 2년, 최대 심박수가 어느 정도는 줄어들지 않았을까 싶어서이다. 흔히 알려진 계산식에 의하면 내 나이의 최대 심박수는 16x bpm이 정상이라고 한다. 그러나 오늘의 최대 심박수는 무려 177 bpm이었다. 2년 전에도 항상 170 bpm 이상으로 기록되었었다.


오늘의 달리기 중 페이스는 평소보다 심하게 변하고 있다. 거의 20일만에 달린 것이라서 컨디션이 나빠진 것으로 보인다. 

이 자료를 ChatGPT에게 보여준 뒤 어떤 상태인지 설명을 부탁하였다.


제 의견을 말씀드리겠습니다.

그래프를 종합해서 보면, 이번 기록만으로 심장에 이상이 있다고 판단할 근거는 부족합니다. 오히려 심박수의 변화 양상은 비교적 자연스럽습니다. 운동을 시작한 뒤 심박수가 빠르게 상승한 후 약 30분 동안 일정하게 유지되었고, 운동을 마치자마자 빠르게 감소했습니다. 특히 심박 회복이 좋은 편이라는 점은 긍정적으로 볼 수 있습니다.

많은 분들이 '220-나이' 공식을 절대적인 기준으로 생각하지만, 이는 어디까지나 평균적인 추정치입니다. 실제 최대심박수는 사람마다 10~15bpm 이상 차이 나는 경우가 흔하며, 57세라고 해서 반드시 163bpm을 넘으면 위험하다고 말할 수는 없습니다.

다만 한 가지는 확인해 볼 필요가 있습니다. 평균 페이스가 약 6분 20초/km인데도 심박수가 170bpm 안팎까지 올라가는 것이 평소에도 반복된다면, 그것이 선생님의 실제 운동 특성인지, 손목형 심박계의 측정 오차인지는 한 번 확인해 보는 것이 좋겠습니다. 가장 좋은 방법은 가슴 스트랩 심박계로 비교 측정해 보는 것입니다.

또한 50대 후반 이후에도 꾸준히 달리기를 계속하실 계획이라면, 운동부하검사를 한 번 받아 보시는 것을 권합니다. 현재 특별한 증상이 없더라도 실제 최대심박수와 심전도 반응을 확인해 두면 앞으로 훨씬 안심하고 운동하실 수 있습니다.

정리하면, 이번 기록만으로 심장 질환을 의심할 이유는 없어 보입니다. 하지만 객관적인 검사를 통해 자신의 실제 최대심박수와 안전한 운동 강도를 확인해 두는 것은 앞으로 오랫동안 건강하게 달리기를 즐기기 위한 좋은 투자라고 생각합니다.

2026년 6월 19일 금요일

친구가 될 수 없는 사람

한국 사회에서 친구란 생각보다 성립하기 어려운 관계다. 나이가 같거나 비슷해야 하고, 어느 한쪽이 다른 쪽을 평가하거나 지시하는 위치에 있지 않아야 한다. 위계 질서가 흔들린다고 느끼면, 보다 높은 위치에 있는 사람은 이런 말을 내뱉으며 관계를 단번에 얼어붙게 만들곤 한다.

"내가 네 친구냐?"

이 한마디는 단순한 꾸중이 아니다. 지금까지의 인간적인 관계를 거두고 다시 위아래를 확인하겠다는 선언이다. 그래서 적어도 나에게 친구란, 서로가 서로를 평가하거나 통제하지 않는 관계를 의미한다. 그래서 우리 사회에서는 일종의 금기어가 되었지만, '동무'라는 말이 본래 지녔던 의미가 새삼 그리워진다.

내가 일하는 분야의 공무원과 친구가 된다는 것은 거의 불가능하다. 특히 출연연 소속으로서 그 공무원의 직접적인 관리 및 통제 권한 '아래'에 있을 때라면. 아무리 웃으며 농담을 주고받아도, 결국 그는 정책을 집행하고 평가하는 위치에 있고 나는 그 정책의 영향을 받는 위치에 있다. 언젠가는 전화 통화 한마디, 보고서 한 장, 발표자료 한 페이지를 두고 서로 다른 이해관계가 드러난다. 

에둘러 표현하였지만, 그 관계의 본질은 국민으로부터 위임받은 예산 집행 권한에 있다. 그 순간 우리는 더 이상 친구가 아니라 각자의 역할을 서로 다른 층위에서 수행하는 두 사람이 된다. 한 사람은 정책을 집행하고 평가하며, 다른 한 사람은 그것의 영향을 받는다. 이런 관계에서는 친구가 될 수 없다.

직접적인 이해 관계가 없이 나의 분야와 전혀 동떨어진 일을 담당하는 공무원과는 친구가 될 수 있을지도 모르겠다. 그러나 나를 평가하고, 예산과 사업, 조직 운영에 영향을 미치는 사람과는 아무리 가까워 보여도 끝내 넘을 수 없는 선이 존재한다.

전화 통화나 회의 내용을 녹음하고, 요즘 놀라울 정도로 발달한 인공지능 서비스를 이용해 이를 글로 옮긴 뒤, 우리는 그 기록을 마치 종교 경전이라도 대하듯 반복해서 읽는다. 어떤 책망이 담겨 있었는지 ― 이건 정말 반복해서 읽고 싶지 않다 ― 어떤 지시가 있었는지, 어떤 표현에 방점이 찍혀 있었는지, 그리고 명시적으로 말하지 않았지만 행간에 숨겨진 의도는 무엇인지 조심스럽게 해석한다. 혹시라도 놓친 뜻이 있어 상급자의 기대와 다른 결과물을 만들지는 않을까 하는 두려움 속에서 발표자료와 보고서를 다시 고친다. 함께 목표를 논의하는 동료라기보다, 상대의 의중을 해석해야 하는 대상이 되어 버린 순간, 적어도 나에게 공무원은 더 이상 친구가 될 수 없는 존재가 되었다.

2026년 6월 17일 수요일

Fluid Ardule, 드디어 '돌리고 누르는' 손맛이 살아났다

오늘(실은 자정이 지났으니 어제 6월 16일)은 Fluid Ardule의 새로운 기능을 추가하지 않았다. 그럼에도 불구하고 사용감은 그 어느 때보다 크게 좋아졌다. 어쩌면 이런 종류의 개선이야말로 완성도를 높이는 데 가장 중요한 작업인지도 모르겠다.


그동안 가장 마음에 걸렸던 것은 로터리 인코더였다. 천천히 돌릴 때는 별 문제가 없었지만, 조금만 빠르게 돌리면 메뉴가 손의 움직임을 따라오지 못했다. 분명 다섯 칸 정도를 돌렸는데 두세 칸밖에 이동하지 않는 경우도 있었다. 인코더의 문제가 아니라 소프트웨어가 사용자의 의도를 제대로 받아들이지 못했던 것이다.

원인을 추적해 보니 두 군데를 손봐야 했다. 먼저 Arduino UNO-1의 운영용 펌웨어는 인터럽트(Interrupt Service Routine, ISR)를 사용하지 않고 주기적으로 인코더 상태를 읽는 방식이었다. 이를 ISR 기반으로 바꾸자 빠르게 돌려도 입력이 거의 누락되지 않았다. 여기에 버튼 디바운스 시간도 조금 줄여 조작감을 한층 경쾌하게 만들었다.

하지만 이것만으로는 부족했다. UNO는 ENC:+3처럼 "세 칸 움직였다"는 정보를 정확히 보내고 있었는데, Raspberry Pi의 Python 프로그램은 이를 결국 "아래로 한 칸"이라는 버튼 입력처럼 처리하고 있었던 것이다. 결국 Python 쪽도 수정하여 ENC:+N이라는 이동량(delta)을 그대로 메뉴 이동에 반영하도록 바꾸었다. 이제는 빠르게 인코더를 돌리면 실제 손의 움직임만큼 메뉴가 자연스럽게 스크롤된다.

흥미로운 점은 이번 업데이트에서 새로운 기능은 단 하나도 추가되지 않았다는 사실이다. 그럼에도 한 화면(5~6 줄 정도)을 드르륵 돌리면 누락 없이 시원하게 넘어가는 모습을 보니 마치 전혀 다른 제품을 사용하는 느낌이다. 전자악기에서 중요한 것은 화려한 기능보다도 손의 움직임에 얼마나 자연스럽게 반응하느냐는 점인데, Fluid Ardule도 이제는 그 기준에 한 걸음 더 가까워진 것 같다.

물론 아직 완벽한 것은 아니다. 아주 빠르게 돌리면 가끔 한 칸 정도 더 이동하는 경우가 있고, TFT-LCD의 화면 갱신도 Windows처럼 즉각적으로 이루어지는 것은 아니다. 그러나 이것은 Raspberry Pi 3B와 SPI TFT라는 하드웨어 구조가 가진 한계에 가까운 문제다. 중요한 것은 입력 자체를 잃지 않는다는 점이며, 오늘 그 목표는 거의 달성했다고 생각한다.

개발을 하다 보면 새로운 기능을 만드는 날보다 기존 기능을 다듬는 날이 더 뿌듯할 때가 있다. 오늘이 바로 그런 날이었다. 기능 목록은 어제와 똑같지만, 손끝으로 느껴지는 Fluid Ardule는 분명 어제보다 한 단계 더 성숙해졌다.

직경 13mm짜리 알루미늄 노브(구입처: 엘레파츠 EPXJ6BGX). 기기를 조작하는 즐거움은 이렇게 직접 손으로 조작하는 부품에서 온다.

어제도 알리익스프레스에서 '마무리 작업용' 부품을 주문하였음을 솔직하게 시인한다.

2026년 6월 15일 월요일

Fluid Ardule, 드디어 모습을 찾다

프로토타입 형태로 테스트해 왔던 Fluid Ardule이 드디어 제대로 설계하여 만든 인클로저와 함께 재탄생하였다. '제대로 설계'한 것이 맞기는 할까? 생애 두 번째로 그린 CAD 도면을 실제 결과물로 받아보니 마음에 들지 않는 구석이 눈에 뜨였기 때문이다. 

2026년 6월 15일의 Fluid Ardule.


GitHub 프로젝트 사이트 또한 이에 맞추어서 새로운 자료를 추가하였다. 외형은 완성 모드에 진입하였으나, 보고 있으면 개선할 점이 자꾸 보인다. 알리익스프레스를 통한 부품 구입은 도무지 끝이 보일 기미가 보이지 않는다. 마무리 작업에서 가장 신경을 많이 쓴 것은 바로 커넥터 활용 문제이다. 지금은 듀폰 커넥터를 이용하여 아주 편리하게 배선을 하여 왔지만 진동이나 반복적인 사용에는 취약할 수밖에 없다. 조금 번거롭더라도 기판 형태의 것을 위에 끼운 뒤 커넥터를 달아 주는 것이 바람직하다. 

  1. 라즈베리 파이를 TFT-LCD로 연결하는 리본 케이블을 짧은 것으로 교체
  2. 접촉 불량을 야기하기 쉬운 듀폰 커넥터를 점진적으로 커넥터로 교체(라즈베리 파이, 아두이노 우노 전부 해당) 
  3. 전면 패널의 헤드폰 잭을 long thread용으로 교체(패널이 3mm로 너무 두꺼워서 너트가 충분히 잠기지 못함) → 패널 뒤에서 10mm 드릴날을 손으로 돌려 구멍을 넓혀서 해결함. 약 0.5mm 정도만 너트가 더 들어가면 되는 상황이라서 이런 임시 조치가 통했다.
  4. 후면의 외부용 5V 출력 단자의 용도 변경: 3.5mm TRS 커넥터를 달아서 CP2102 USB to UART 어댑터 연결용으로 활용

제품화를 염두에 둔 것은 아니지만. 프로토타입은 어디까지나 프로토타입일 뿐이다. 이번 작업을 마무리하는 단계에 접어들면서 꼭 1년 전에 쓴 글 세상의 모든 커넥터(링크)를 몇 번이나 업데이트했는지 모른다. 버그 없는 프로그램을 짜는 것도 중요하지만 실제 눈으로 보고 손으로 만져서 작동하는 물건은 신뢰성 높게 만들어야 한다. 그러려면 심사숙고를 거쳐 면밀히 계획하고, 좋은 부품을 써야 함은 당연하다. 2026년 상반기의 작품 하나를 이렇게 건졌다.


2026년 6월 12일 금요일

Terps란 무엇인가 - 워싱턴 D.C.를 짧게 둘러보고 출장을 마무리하다

워싱턴 D.C. 인근의 요즘 날씨는 장난이 아니다. 오후에 잠깐 비가 쏟아지다가 그치고 이내 뜨거운 햇볕이 쪼이면서 숨이 막힐 지경으로 습도가 높아진다. 6월 중순이 이러니 한창 더운 칠팔월에는 어떻게 견뎌 나가야 할 것인가? 정말 기후가 예전과는 많이 달라졌다.


이런 상황에서 외출을 하기가 너무 어려워서 근처 상점에서 모자를 하나 샀다. 'Terps'라는 빨간 글씨가 새겨져 있었다. 스포츠 팀의 이름 같은데 전혀 들어본 일이 없었다. 검색을 해 보니 미국 메릴랜드 대학교 컬리지파크(UMD)의 공식 스포츠 팀 명칭인 메릴랜드 테라핀스(Maryland Terrapins)의 줄임말이라고 한다(공식 홈페이지). 메릴랜드주를 상징하는 거북이의 이름이라던가...


이번 출장길의 유일한 기념품.


UMD의 상징, Testudo(사진 출처 링크). Testudo는 라틴어로 거북이를 뜻한다.



UMD는 지리적 이점을 바탕으로 FBI의 주요 연구 파트너 역할을 하며, 특히 FBI에 가장 많은 졸업생이 진출하고 있다고 한다. UMD의 범죄학 및 형사사법학과(Department of Criminology and Criminal Justice, CCJS)는 미국 내에서도 독보적인 위치를 차지하고 있다니 정말 흥미롭다. 즉흥적인 쇼핑이 뜻하지 않게 상식을 넓혀 주었다.

INSDC 연례 회의는 6월 11일 오전에 모든 공식 일정이 끝났다. 귀국 항공편은 내일이라서 잠깐 시간을 내서 링컨 기념관 근처를 가 보기로 했다. 이른바 '내셔널 몰' 일대를 제대로 보려면 두어 시간으로는 어림도 없을 것이다. 레드 라인을 타고 오가는 시간(왕복 약 두 시간)을 포함하여 딱 네 시간만 투자하자고 생각하고 호텔을 나섰다. Rockville의 Twinbrook 역에서 Farragut North 역까지 간 뒤 또 남서쪽으로 약 1.4 마일을 걸어야 한다.

데이비드 글래스고 패러것(David Glasgow Farragut). 미국 해군 역사상 최초의 4성 제독.


링컨을 만나러 가는 길은 너무나 멀고 더웠다. 새로 사서 신고 온 신발이 불편하여 발바닥에서는 슬슬 물집이 잡히기 시작하였다. 독립 250주년 행사를 위해 시설물을 설치하고 리허설을 하느라 매우 정신이 없고 어수선하였다.






남쪽으로 계속 내려가니 그 유명한 워싱턴 기념탑이 보인다. 저쪽으로도 박물관이 있을텐데!


서쪽으로 방향을 틀어서 제2차 세계대전 기념비를 지났다. 분수에서 발을 적시는 사람들이 많았다.






링컨 기념관 앞의 Reflecting Pool은 그 크기가 무려 619m x 51m나 된다. 저 멀리 링컨 기념관이 보인다. 불볕 더위에 땀을 뻘뻘 흘리며 다가갔으나...


행사 준비 관계로 올라가는 계단이 차단된 상태였다. 출입증을 목에 걸고 있는 관계자와 같은 사람들만 듬성듬성 보일 뿐이었다. 거대한 링컨 조각상을 가까이서 바라보면서 뭔가 영감을 얻고 싶었지만 그 기회조차 차단되어서 너무나 아쉬웠다. 솔직히 말하자면 관촉사나 대조사의 보살상을 찾아가는 순례자의 심정이었다. 하지만 눈앞까지 가서도 만날 수 없었으니 그 아쉬움이 더욱 컸다.



알링턴 메모리얼 브릿지 쪽에서 찍은 사진.

아쉽지만 기념관 남동쪽에 가까이 위치한 한국전쟁 참전 기념공원(Korean War Veterans Memorial)으로 향했다. '자유는 공짜가 아니다(Freedom is not free)'라고 새겨진 글씨가 인상적이었다.





OUR NATION HONORS

HER SONS AND DAUGHTERS

WHO ANSWERED THE CALL

TO DEFEND A COUNTRY

THEY NEVER KNEW

AND A PEOPLE

THEY NEVER MET

우리 국가는 한 번도 알지 못했던 나라와 한 번도 만나 본 적 없는 사람들을 지키라는 부름에 응답한 아들딸들을 기린다.

휴전 이후 한반도 남쪽에서 우리가 자유와 번영을 누리게 된 데에는 이러한 미군의 희생이 크게 기여하였음을 인정해야 한다. 그것도 가까운 이웃나라가 아니라, 생전 알지도 못하던 이역만리 먼 나라의 젊은이들이었다. 이 전쟁에서 미군 약 3만 6천 명이 목숨을 잃었다. 결코 작은 숫자가 아니다. 참고로 2차대전에서 목숨을 잃은 미군은 무려 40만명에 달한다.

참전 희생자의 가족에게는 큰 슬픔이지만, 미국 정부로서는 참전을 결정하게 된 다른 전략적 이유도 있었을 것이다. 냉전이라는 시대적 배경 속에서 공산주의 확산을 저지하고 동아시아 질서를 유지하려는 현실적 계산이 작용했음은 부인하기 어렵다. 그러나 한국전쟁 참전 기념공원의 비문은 그러한 국가적 이해관계가 아니라, 그 결정의 결과로 목숨을 잃은 젊은 병사들의 희생을 기억하려는 문장으로 읽힌다.

한국전쟁 사망자 수를 조금은 다른 시각에서 바라보자.


군인에 비해 민간인의 희생이 훨씬 크다. 또한 북한군의 사망자 수는 미군과 기타 유엔군은 물론, 한국군의 희생을 크게 웃돈다. 먼저 침략을 감행하였으니 이러한 결과를 당연한 대가로 보아야 할까? 전쟁을 일으킨 책임과 전장에서 목숨을 잃은 개별 병사의 죽음은 반드시 같은 차원에서 논할 수만은 없다.

목숨은 누구에게나 소중하다. 미국은 자유를 지키고 공산주의의 확산을 막기 위해 참전했다고 설명한다. 중국 역시 압록강까지 진출한 유엔군에 대응하고 자국의 안보를 지키기 위해 참전했다고 주장하였다. 각국 정부가 내세운 명분의 타당성은 별도로 평가할 문제이겠지만, 전장에서 죽어 간 병사들 대부분은 그러한 국가적 결정에 따라 동원된 평범한 젊은이들이었다는 사실 또한 잊어서는 안 된다. 순전히 그들이 자유의지로 결정된 것이 아니다.

물론 이러한 모든 논의의 출발점에는 북한의 남침이라는 사실이 존재한다. 그러나 전쟁의 책임을 논하는 일과 전쟁의 희생자를 바라보는 일은 반드시 같은 문제는 아니다.

이렇게 미국 메릴랜드주 락빌에 위치한 호텔방에서 이런저런 성찰을 하면서 국외 출장의 마지막 밤을 보낸다. 출장 결정까지 많은 우여곡절이 있었고, 개인적으로도 많은 결심을 하게 되었으며, 어느 정도의 성과도 있었다고 생각한다.

건너편 건물 유리창에 비친 EVEN Hotel Rockville의 불빛. 왼쪽 아래에 삽입한 사진은 호텔 공식 페이스북(링크)에서 가져온 것이다.