본문 바로가기
프로그래밍

[프로그래밍] YAML 소개

by 건우아빠유리남편 2021. 2. 2.
반응형

[프로그래밍] YAML 소개

YAML(YAML Ain’t Markup Language)

YAML is a human friendly data serialization
standard for all programming languages.

작명법. 아재개그?ㅋㅋ 부장님 개그?ㅋㅋ. 야믈.

결론적으로 YAML, JSON, XML 모두 사람의 가독성을 염두에 두고 설계된 포맷이지만
가독성에 더욱 포커싱 하여 나온 포맷이 YAML이라고 해요.
JSON에 비해 구조가 좀 더 복잡하지만 사람이 보기엔 좀 더 자연스러운 형태라고 해요.
블로깅을 해보신 분들은 프로그래밍 문법이라고 생각조차 안할정도로 사람에게 친숙한 구조인 듯 해요.

Yaml 문법 비교

대부분 설정파일을 작성할 때, 파이썬쪽에서 많이 쓰이는 듯 해요.
CI 스크립트쪽에서도 많이 쓰이는 것 같아요.
c++개발하는 저로써도 한 5년전에부터 만나봤던 것 같네요;;
gitlab CI였나.. 구성하다가;;
이제는 어딜가든 YAML을 쉽게 만나게 되어... 어쩔 수 없이 조금씩 알아가고 있네요.



YAML 예시

# Employee records
- martin:
    name: Martin D'vloper
    job: Developer
    skills:
      - python
      - perl
      - pascal
- tabitha:
    name: Tabitha Bitumen
    job: Developer
    skills:
      - lisp
      - fortran
      - erlang

YAML 문법

  • YAML 문자열은 UTF-8 또는 UTF-16과 같이 출력 가능한 유니코드 문자집합을 이용한다.
  • 공백 문자를 이용한 들여쓰기로 구조체를 구분한다. 그러나 탭문자를 들여쓰기에 사용하지 않는다.
  • 리스트 요소는 여러 줄에 쓸 때에는 하이픈(-)으로 시작하는 한 줄에 하나의 요소를 표현하며, 한 줄에 모아 쓸 때에는 대괄호([])를 이용하며 쉼표로 각 요소를 구분한다.
  • 해쉬는 콜론 기호를 이용해서 키:값의 형태로 한 줄에 하나를 표현하거나, 한 줄에 모아 쓸 때에는 중괄호({})를 이용하며 쉼표로 각 요소를 구분한다.
  • 간단한 값(스칼라 값)은 보통 아무 표시를 하지 않으나 따옴표("")나 작은 따옴표('')를 이용해 둘러쌀 수 있다.
  • 따옴표 안에서 특수 문자는 C언어 스타일(역슬래쉬키와 함께쓰이는 제어문자 예. \n)로 표시한다.
  • 블록 값은 보존(|) 또는 접기(>)의 선택 지시자로 나눈다.
  • 하나의 스트림에 있는 여러 개의 문서는 하이픈 3개(---)로 나누며, 마침표 세개(...)로 스트림의 끝을 나타낸다.
  • 반복되는 노드는 기본적으로 &를 통해 나타내며, * 문자 이후의 내용을 참조한다.
  • 주석은 #으로 표시하며, 한 줄이 끝날 때까지 유효하다.
  • 노드들은 타입과 느낌표로 시작해 URI 주소를 지시하는 태그를 통해 라벨이 붙는다.
  • YAML 문서는 % 문자로 시작되는 몇 개의 지시자를 통해 특정 작업을 수행한다. YAML 1.1에서는 두 개의 지시자가 정의되어 있다.
    • %YAML 지시자는 주어진 문서의 YAML 버전을 나타내는 데 사용한다.
    • %TAG 지시자는 URI 주소를 나타내는 데 주로 사용하며, 이들 주소는 노드 타입 태그에 사용한다.
YAML은 공백과 스칼라 값을 가지고 있는 리스트 구분자를 위해 쉼표와 콜론이 필요하다. 미래의 표준화를 위해 YAML에서는 @, 엑센트 기호 ‘ 2개의 기호 문자를 예약해두고 있다.

 

YAML 공식 문서 : yaml.org/

 

The Official YAML Web Site

 

yaml.org

본격 JSON, YAML 비교

확장자 .json .yml, .yaml
장점
  • YAML보다 더 널리 사용됨
거의 대부분의 프로그래밍 언어에서 기본 지원함
  • 개행, 공백 무시됨[1]
  • 주석(comment) 사용 가능[2] ★★★
  • 문자열을 쌍따옴표로 감싸지 않아도 됨
  • 한글 그대로 사용 가능 ★
단점
  • 주석(comment) 사용 불가[3]
  • 문자열을 항상 쌍따옴표로 감싸야 함
  • 한글 등 멀티바이트 문자는 인코딩되어 읽기 어려움
  • 개행, 공백으로 블록 인식
구조적으로 공백을 잘 맞춰야 함한줄로 작성 불가
반응형

댓글