Front Matter

なんか、コンテンツの Markdown の先頭に構造化メタデータを記述できる仕組み、みたいな理解。あっている?ぼくが自分で運営している june29.jp で使っている Hugo に組み込まれているので、特に仕様を強く意識することもなく「こういう感じのもの」として活用してきた。あと、ぼくが触れてきたものでは MiddlemanFront Matter を取り入れている。

Front Matter の発祥の地は Jekyll なのかしら…?

Jekyll のドキュメントを見ると「YAML を書けます」という感じ。Hugo では YAML の他に TOMLJSON も書ける。MiddlemanYAMLJSON をサポートしている。


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 を扱う機運が出てきたのだけれど、なにが仕様なのかよくわからなくてテストコードを書く手が止まってしまったので、軽く調べていた。

ちなみに GitHubYAML スタイルの Front Matter をパースしてくれるようで、下記の例のようにデータが HTML の table で表示される。JSONTOML は対応されていないみたい。 https://github.com/june29/front-matter-examples/blob/master/yaml-example.md