YAML은 YAML Ain’t Markup Language의 약자입니다. 이쪽 필드에는 이렇게 재귀를 이용해서 이름을 짓는 경우가 많은 것 같습니다. 재귀를 통해 이름을 짓는걸 보면 개발자의 위트라 할 수 있긴 한데…머리속에 ‘아재 개그’란 말이 같이 떠오르는건 왜 일까요..?
YAML is a human friendly data serialization
standard for all programming languages.
아래 참고 자료에 있는 YAML 1.2 스펙 문서에 있는 글입니다. 스펙 문서에 보면 JSON과 XML과의 차이, 디자인 철학등에 대해 자세한 설명이 나오는데 시간이 되시는 분들은 보시면 될 것 같습니다.
YAML, JSON, XML 모두 사람의 가독성을 염두에 두고 설계된 포맷이지만 YAML이 좀 더 가독성에 포커싱이 많이 되어 있습니다. 이에 따라 JSON에 비해 구조가 좀 더 복잡하지만 사람이 보기엔 좀 더 자연스러운 형태입니다.
이에 따라 YAML은 설정 파일의 목적으로 많이 쓰이는 거 같습니다. 하지만 JSON이 문법이 더 단순하기 때문에 훨씬 더 많이 사용되고 있고 YAML이 이를 뒤집기는 어려워 보입니다. 어떤 포맷이든 각자 장점이 있고 자주 사용되는 곳이 있으니 필요에 따라 그저 잘 사용하면 될 것 같습니다.
YAML의 기본 자료형(primitives)입니다.
자세한 내용을 알면 좋겠지만 저는 YAML이 필요할 때 간단히 사용해보는 정도 수준으로 보려 합니다. 이정도의 목적이라면..바로 예제를 보는게 가장 좋겠죠. 아래에는 1.2 스펙 문서에 있는 내용을 그대로 옮겼습니다.
# Sequence of scalars(ball player) - Mark McGwire - Sammy Sosa - Ken Griffey # Mapping of scalars to scalars(player statics) hr: 65 # Home runs avg: 0.278 # Batting average rbi: 147 # Runs Batted In # Mapping of scalars to sequences(ball clubs in each league) american: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves # Sequence of mappings(players' statics) - name: Mark McGwire hr: 65 avg: 0.278 - name: Sammy Sosa hr: 63 avg: 0.288 # in-line flow style for compact notation - [name , hr, avg ] - [Mark McGwire, 65, 0.278] - [Sammy Sosa , 63, 0.288] Mark McGwire: {hr: 65, avg: 0.278} Mark McGwire: {hr: 65, avg: 0.278} Sammy Sosa: { hr: 63, avg: 0.288 }
# Ranking of 1998 home runs --- - Mark McGwire - Sammy Sosa - Ken Griffey # Team ranking --- - Chicago Cubs - St Louis Cardinals
--- time: 20:03:20 player: Sammy Sosa action: strike (miss) ... --- time: 20:03:47 player: Sammy Sosa action: grand slam ...
--- hr: - Mark McGwire # Following node labeled SS - &SS Sammy Sosa rbi: - *SS # Subsequent occurrence - Ken Griffey
YAML YAML 공식 페이지입니다.
YAML 1.0 (1st Edition) YAML 1.0의 스펙 문서입니다. YAML에 대한 전반적인 설명을 볼 수 있습니다.
YAML 1.2 (3rd Edition) YAML 1.2의 스펙 문서입니다.
YAML – 위키백과 YAML의 한글 위키 페이지입니다.