Front Matter
なんか、コンテンツのMarkdownの先頭に構造化メタデータを記述できる仕組み、みたいな理解。あっている?ぼくが自分で運営しているjune29.jpで使っているHugoに組み込まれているので、特に仕様を強く意識することもなく「こういう感じのもの」として活用してきた。あと、ぼくが触れてきたものではMiddlemanもFront Matterを取り入れている。
Front Matterの発祥の地はJekyllなのかしら…?
- https://jekyllrb.com/docs/front-matter/
- https://gohugo.io/content-management/front-matter/
- https://middlemanapp.com/basics/frontmatter/
Jekyllのドキュメントを見ると「YAMLを書けます」という感じ。HugoではYAMLの他にTOMLとJSONも書ける。MiddlemanはYAMLとJSONをサポートしている。
YAMLの例
----
a: 10
b:
- 20
- 21
- 22
c:
d: 30
----
# Title
Paragraph.
こんな感じで --- と --- の間にYAMLを書く。
JSONの例
Middlemanでは ;;; とセミコロン3つで囲うことになっている。
;;;
"layout": "custom",
"my_list": [
"one",
"two",
"three"
]
;;;
# Title
Paragraph.
Hugoでは { と } で囲ってやるみたい。
{
"layout": "custom",
"my_list": [
"one",
"two",
"three"
]
}
# Title
Paragraph.
TOMLの例
Hugoでは +++ で囲って書くことになっている。
+++
a = 10
b = [20, 21, 22]
[c]
d = 30
+++
# Title
Paragraph.
これ!という仕様がなくて、いろんな実装のみが存在している状態…?Markdownの雰囲気と似ている。ぼくと同じような疑問を持った先人がいてStack Overflowで質問を立てたりしていたみたいだな。
Is there a YAML front matter standard / validator? - Stack Overflow
自作のソフトウェアの中でFront Matterを扱う機運が出てきたのだけれど、なにが仕様なのかよくわからなくてテストコードを書く手が止まってしまったので、軽く調べていた。
ちなみにGitHubはYAMLスタイルのFront Matterをパースしてくれるようで、下記の例のようにデータがHTMLのtableで表示される。JSONやTOMLは対応されていないみたい。