피드로 돌아가기
Vertical Slice: Speech-to-Markdown Editor, LLVM UI Codegen, and Landscape Split - in Our Own Language
Dev.toDev.to
Frontend

Forge 팀이 수직 슬라이스(Vertical Slice) 방식으로 음성-마크다운 에디터를 구축하여 음성 입력부터 LLVM 네이티브 컴파일, Android 네이티브 렌더링까지 전체 스택의 동작 검증

Vertical Slice: Speech-to-Markdown Editor, LLVM UI Codegen, and Landscape Split - in Our Own Language

Art2026년 3월 28일3advanced

Context

Forge는 SMS라는 정적타입 언어를 개발 중이며, 이를 네이티브 ARM 코드로 컴파일하는 LLVM 백엔드와 ForgeStudio 에디터를 구축하고 있다. 개별 계층별 개발이 아닌 전체 스택이 실제로 동작하는지 검증할 필요가 있었다.

Technical Solution

  • SpeechRecognizer 컴포넌트를 SML 선언형 UI 언어로 구현: 독일어(de-DE) 언어 지원, clean 모드로 필러 단어/방송 노이즈/박수 마커 필터링, 지속적 받아쓰기 구현
  • 음성 입력 흐름을 경쟁 상태 없이 설계: mic.listen() 시작 → mic.result 수신 → pendingText 누적 → 즉시 mic.listen() 재호출
  • LLVM IR 코드 생성 구현: label.fontSize = 16 같은 UI 속성 할당을 네이티브 ARM 명령어로 직접 컴파일 (sms_native_llvm_set_ui_int_prop)
  • 기기 방향 변화 감지 시 자동 레이아웃 전환: landscape 모드에서 2개 패널(원본 SMS/마크다운 + 라이브 프리뷰) 동시 표시, portrait 모드에서 토글 버튼으로 전환
  • 마크다운 라이브 프리뷰를 WebView/Electron 없이 ForgeRunner C++/Godot 내부에서 네이티브 렌더링
  • Linux 환경에서 Android 도구체인 경로 해석 고정: FORGE_ANDROID_JAVA_HOME 및 adb PATH 설정

Impact

Key Takeaway

수직 슬라이스는 각 계층을 독립적으로 구축하는 대신 사용자 입력부터 최종 렌더링까지 완전한 기능을 하나로 관통하게 함으로써 전체 스택의 통합 동작을 조기에 검증할 수 있는 검증 전략이다.


컴파일러와 런타임을 자체 개발하는 언어/플랫폼 팀에서 UI 속성 할당 같은 고빈도 작업을 LLVM IR로 직접 코드 생성하면 인터프리터 오버헤드를 제거하고 네이티브 성능을 확보할 수 있으며, 기기 방향 전환 시 자동으로 레이아웃을 재배치하도록 리스너를 설계하면 사용자 경험 저하 없이 반응형 UI를 구현할 수 있다.

원문 읽기
Vertical Slice: Speech-to-Markdown Editor, LLVM UI Codegen, and Landscape Split - in Our Own Language | Devpick