애플, 설정 생성용 언어 'Pkl' 오픈소스로 공개
애플이 설정(Configuration) 생성에 사용하는 프로그래밍언어 '피클(Pkl)'을 오픈소스로 공개했다. 지난 1일 애플은 프로그래밍 언어 '피클'의 소스코드를 오픈소스로 발표했다. 피클은 JSON, YAML, 속성 목록 등의 정적 언어를 주로 사용하는 설정 생성에 사용하는 언어다. 기존 정적 언어는 각기 고유 장점을 갖지만 복잡한 구성에서 한계를 드러낸다. 가령 표현력 부족 때문에 코드를 자주 반복해야 하거나, 자체 유효성 검사를 제공하지 않아 구성 오류를 일으키기 쉽다. 이같은 단점은 떄로 특수 논리를 추가하는 보조 도구로 형식을 향상시켜 해결되곤 한다. 코드를 반복 하지 않는 DRY(Don't Repeat Yourself) 원칙을 따라야 할 때 참조를 확인하고 개체를 병합하는 방법을 이해하는 특수 속성을 도입하는 식이다. 유효성 검사 오류 방지를 위해 예상 유형에 구성 값의 유효성을 검사하는 방법을 동원할 수 있다. 이런 형식은 차후 언어에 포함되곤 하지만 이런 형식은 이해하기도 작성하기도 어렵다. 설정 생성에 코틀린, 루비, 자바스크립트 같은 범용 언어를 사용하기도 한다. 이런 언어가 설정 데이터를 생성하는 도메인특화언어(DSL)의 기초가 된다. 범용 언어는 자체로 강력하지만 데이터 정의, 유효성 검사에 중점을 두지 않기 때문에 설정을 설명하는데 사용하기 힘들 수 있다. DSL은 자체 생태계에 연결되는 경향을 보이므로, '고'로 작성된 애플리케이션의 구성계층으로 코틀린 DSL을 사용하기 어렵다. 애플의 피클은 정적 언어와 범용 언어를 혼합해 설정 생성에서 잘 활용되도록 만들어졌다. 애플이 내부에서 개발해 사용해온 언어라고 한다. 선언적이며 읽고 쓰기 간편하지만, 범용 언어에서 기능을 빌려와 향상된 언어를 제공한다. 피클 작성 시 클래스, 함수, 조건, 루프 같은 언어 기능을 사용할 수 있다. 추상화 계층을 구축하고 패키지를 생성, 게시해 코드를 공유할 수 있다. 모든 형식의 정적 설정 파일을 생성하는데 사용되거나, 언어 바인딩을 통해 다른 애플리케이션 런타임에 라이브러리로 포함될 수 있다. 피클은 배포 전에 유효성 검사 오류를 포착해 안전을 제공한다. 단순한 사용 사례에서 복잡한 사용사례로 확장할 수 있다. IDE와 통합되기 쉽다. 인텔리J, 웹스톰, 고랜드, 파이참 등 젯브레인스의 편집기를 지원하는 인텔리J 플러그인이 곧 제공될 예정이다. 이 플러그인은 피클 프로그램을 분석하고 자동 완성, 정의로 이동, 리펙토링 지원 등의 기능을 제공한다. VS코드, 네오빔(neovim) 플로그인도 출시될 예정이다. 피클의 관리 재단 측의 문서는 "개발자에게 친숙한 구문을 갖고 쉽게 배울 수 있게 만들었다"고 강조했다.