ブンリンラボ

ブンリンワークスの実験室。つくったもの、考えたこと、その途中。

このブログの作り

ブンリンラボは自作の CMS で動いています。記事がどう保存され、どう表示されるのかを、最初の記事として書いておきます。

ブンリンラボは、既製のブログを借りずに自分で書いた CMS で動いています。最初の記事として、この文章自体がどう保存され、どう画面に出ているのかを書いておきます。

本文は「ブロックの配列」で持つ

記事の本文は 1 枚の HTML ではなく、順序を持つブロックの配列として保存されています。いま読んでいるこの段落も、上の見出しも、それぞれ独立した 1 ブロックです。

保存されている形はこうなっています。

[  
  {"type": "heading", "level": 2, "text": "本文は「ブロックの配列」で持つ"},  
  {"type": "rich_text", "markdown": "記事の本文は…"},  
  {"type": "module", "module": "latest_posts", "params": {"limit": 5}}  
]

最後の module が少し変わっていて、これは他の機能の描画物を記事の中へ差し込むためのブロックです。最新記事の一覧、タグの一覧、掲示板のスレッド一覧などを、文章と同じ並びに置けます。WordPress のショートコードに近い役割ですが、記事の外側(トップページ)もこれで組んでいます。

なぜ HTML を直接持たないのか

本文を HTML で持つと、見た目を変えたくなったときに過去の記事を全部書き換えることになります。ブロックで持っておけば、表示の規則を変えるだけで昔の記事も新しい体裁で出ます。

もうひとつ、本文の投稿経路が人間だけではないことも理由です。この CMS は外部からの機械投稿を受ける口を持っていて、そこから来る文章は信用しない前提で扱う必要があります。生の HTML を受け付けないと決めておけば、その判断を 1 か所に閉じ込められます。

本文の正本はブロックの配列。焼いた HTML はキャッシュにすぎない。

書くための道具

管理画面にはブロック単位のエディタがあります。ブロックを足す・並べ替える・複製する、画像をその場にアップロードする、書いている途中で公開面と同じ見た目のプレビューを出す、といったことができます。

記事以外に、時系列に属さない固定ページも作れます。会社概要や問い合わせのような、日付と並び順が意味を持たないページです。トップページもその 1 枚として扱っていて、専用の仕組みは持っていません。

種類 並び 分類 RSS
記事 公開日の新しい順 タグ 載る
固定ページ 人が決めた順 持たない 載らない

これから

つくったもの、考えたこと、その途中を書いていきます。うまくいかなかった話のほうが多くなるかもしれません。

← 記事一覧へ