---
title: 本ブログの正体はMarkdownファイルのフォルダです
slug: why-this-blog-has-no-cms
locale: ja
description: LiteTMSブログにはCMSがありません。全記事がプロダクトリポジトリ内のMarkdownファイルとしてCIで検証され、HTML、生Markdown、RSSとして配信されます。
date: 2026-07-15
updated: 2026-07-15
category: technology
tags: markdown, blog, aieo, engineering
author: LiteTMS Team
draft: false
---

このブログの背後にはCMSもデータベースも存在しません。すべての記事はLiteTMSのコードと同じリポジトリにコミットされたMarkdownファイルです。そのため、記事の公開は機能のリリースとまったく同じように動作します。コミットしてデプロイするだけです。

多くの企業ブログとは異なるアプローチを取りたいと考え、本記事では今ご覧いただいているページ自体のソースコードを含め、その仕組みの全容をご紹介します。

## 他社がよく使う構成

一般的な企業ブログは、本格的なコンテンツ管理システム（CMS）上で稼働しています。データベース、管理パネル、ユーザーアカウント、プラグイン、そして少し手を加えるだけでレイアウトが崩れるテーマ。こうした複雑な仕組みの数々は、編集チームがコードに触れることなく記事を公開できるようにするために存在します。

当社には専任の編集チームはおらず、開発陣はすでに1日の大半をコードリポジトリの中で過ごしています。そのため、大掛かりなシステムは省略しました。システムが増えるほど、パッチ適用やバックアップ、セキュリティ対策の手間が増加します。しかし、テキストファイルが入ったフォルダであれば、そうした心配は無用です。

## 記事ファイルの構成

以下は、本記事自身のヘッダーの抜粋と、それに続く本文の構造です。

```markdown
---
title: This blog is a folder of markdown files
slug: why-this-blog-has-no-cms
locale: en
description: There is no CMS behind the LiteTMS blog. Every post is...
date: 2026-07-15
category: technology
tags: markdown, blog, aieo, engineering
draft: false
---

The first paragraph answers the title on its own, because that is
the part search snippets and AI assistants quote.

## A section heading

Plain markdown body. Nothing exotic.

## FAQ

### Does this sample show the FAQ convention?

Yes. Each ### line is a literal question, answered right below it.
```

先頭のブロックは、キーと値のペアをフラットに並べたものです。その下には、標準的なMarkdownライブラリによってレンダリングされる通常のMarkdownが続きます。言語ごとに1つのファイルが用意されており、本記事も同じ名前の `.en.md` ファイルと `.pl.md` ファイルとして存在しています。なお、ポーランド語版は機械翻訳ではなく母国語として自然に執筆されています。

サンプル末尾の `## FAQ` セクションは単なる装飾ではなく、実際に機能している規約です。各質問はユーザーが検索窓に入力するような内容になっており、ビルド処理によってこれらの質疑が構造化データに変換され、検索エンジンでリッチリザルトとして表示できるようになります。本ページの下部に実際の例があります。

## 編集者の代わりとなるバリデータ

何かがリリースされる前に、ビルドスクリプトがすべての記事ファイルを読み込み、スキーマに照らして検証します。descriptionは80文字から170文字の間である必要があり、categoryは許可された5つの値のいずれかでなければなりません。日付はカレンダー上に実在する日付でなければならず、slugはファイル名と一致している必要があります。

その後、スクリプトは全記事のメタデータを含む単一のインデックスファイルを書き出し、サイトはそのファイルのみを読み込みます。一覧ページの読み込みコストは、記事が5件でも500件でも変わりません。

プッシュごとにCI上で同じスクリプトが実行されます。記事に不備がある場合や、インデックスの再生成を忘れた場合は、ビルドが失敗して何もデプロイされません。バリデータを通過していないものが本番環境に送られることはないため、不完全なコンテンツが本番に公開されることはありません。

## 正直なところ、なぜMarkdownなのか

Markdownを採用したのは、実利的な理由からです。Markdownファイルは、専用ツールの有無にかかわらず、あらゆるテキストエディタで閲覧できます。行単位で差分（diff）を確認できるため、記事のレビューをコードと同じ方法で行えます。つまり、どの文章が変更されたかが正確にわかります。さらに、AIアシスタントにとって最も処理コストの低い形式でもあります。この点は月を追うごとに重要性を増しています。

この最後の点があるため、当ブログの記事は3通りの方法で配信されています。現在ご覧いただいているページはHTML版です。ブラウザのアドレス末尾に `.md` を追加すると、コミットされたままのバイト単位で同一の未加工ソースファイルがプレーンなMarkdownとして配信されます。また、言語ごとに読者やアグリゲーター向けのRSSフィードも用意しています。

さらに、公開された全記事の機械可読なカタログが [/blog/index.md](/blog/index.md) に用意されており、サイトの `llms.txt` がAIクローラーを直接そこへ誘導します。生ファイルにはnoindexヘッダーが付与され、HTMLページへのcanonicalリンクが設定されているため、これらが重複コンテンツとして扱われることは一切ありません。

## これが読者にもたらすメリット

ここでご紹介した内容は、製品自体の機能ではありません。情報発信を自社でどう運用するかについての判断であり、[最初の記事](/en/blog/welcome-to-the-litetms-blog)でお約束した「架空の数字を使わず、ソースを確認できる文章をお届けする」という方針に沿ったものです。LiteTMS自体も、シンプルで検証可能な仕組みを重視する同様の考え方で構築されています。詳細をご覧になりたい場合は、[無料でご登録いただけます](/en/register)。

## FAQ

### LiteTMSのブログ記事をプレーンなMarkdownとして読めますか？

はい。任意の記事のアドレス末尾に `.md` を追加すると、プレーンなMarkdownとして配信される未加工のソースファイルにリダイレクトされます。公開済みの全記事カタログは /blog/index.md にあります。

### LiteTMSのブログがCMSを使用していないのはなぜですか？

CMSを導入するとパッチ適用やセキュリティ対策が必要なシステムがもう1つ増えてしまいますし、ここで記事を公開する担当者は全員すでに製品リポジトリで作業しているためです。CIバリデータを組み合わせたMarkdownファイルなら、はるかに少ない保守負担でまったく同じ役割を果たせます。

### AIアシスタント向けに書くことで、人間にとって読みにくい記事になりませんか？

いいえ。AIアシスタントが好む構成、つまり要点を率直に述べる導入段落、内容を具体的に示す見出し、そして簡潔な回答を伴うストレートな質問といった構成は、人間が流し読みしやすい構成とまったく同じです。未加工のMarkdownは別フォーマットとして提供されるため、ブラウザで読む記事自体は一般的な読みやすい記事のままです。
