AWK로 CLI 유틸리티를 개발한다고? 믿기 힘든 이야기!
AWK는 텍스트 처리에 특화된 CLI 유틸리티이자 프로그래밍 언어이며, 모든 유닉스 계열 OS에 기본적으로 탑재되어 있음.
저자는 AWK를 사용하여 make와 유사한 작업 실행 도구(Task Runner)인 Makesure를 개발했으며, IDE 플러그인(IDE Plugin)을 직접 제작하여 개발 편의성을 높임.
AWK의 뛰어난 이식성(Portability)과 개발의 재미를 동기로, Makesure 개발 외에도 다양한 AWK 기반 도구들을 제작하여 활용함.
AWK 코드 커버리지 지원, 문서 생성 등 개발 생산성 향상(Development Productivity)을 위한 다양한 도구들을 직접 개발하고, Makesure를 사용하여 Makesure를 개발하는 등, '자체 개발(Dogfooding)'을 적극적으로 실천함.
AWK의 활용: Makesure 프로젝트
저자는 AWK를 사용하여 make와 유사한 기능을 가진 Makesure를 개발했다. AWK의 미니멀리즘(Minimalism)한 특성을 활용하여 특정 유형의 프로젝트를 구현했으며, 뛰어난 이식성(Portability)을 장점으로 꼽았다. Makesure는 AWK로 작성되었으며, 저자는 Makesure를 사용하여 Makesure를 개발하는 '자체 개발(Dogfooding)' 방식을 통해 제품의 품질을 향상시켰다.
IDE 지원 및 개발 환경 개선
AWK는 대규모 프로젝트에 적합한 IDE 지원이 부족하다는 단점이 있었으나, 저자는 IntelliJ IDEA용 AWK 언어 지원 플러그인을 직접 개발하여 문제를 해결했다. 이 플러그인은 AWK 코드의 작성 편의성(Ease of Writing)을 높이는 데 기여했으며, 개발 과정에서 발생하는 생산성 향상(Productivity Improvement)을 이끌었다. 또한, fhtagn, AWK 코드 커버리지 지원, mdBooker 등 다양한 도구를 개발하여 개발 환경을 개선했다.
AWK 기반 개발 도구 생태계
저자는 Makesure 개발 외에도 AWK를 활용한 다양한 도구들을 개발하여 사용하고 있다. fhtagn은 CLI 프로그램의 리터럴 테스트(Literate Testing)를 지원하며, GoAWK를 사용하여 Makesure의 코드 커버리지를 계산한다. mdBooker는 Makesure 프로젝트의 README를 기반으로 문서 사이트(Documentation Site)를 생성한다. 이러한 도구들은 AWK 개발의 생산성(Productivity)을 높이고, AWK 생태계를 확장하는 데 기여한다.