書いたものを自分の手元に置く ― Markdown から記事を出す小さな出版ツールを作りました

シリーズ・第 1 回 — 「個人で出版ツールを作って配るまで」(全 5 回予定)。各回は単独でも読めますが、まとめて辿るなら シリーズの記事一覧 からどうぞ。今回は全体像と前提の共有で、個々の設計判断は次回以降に取り上げます。

書いたものは、どこに残るでしょうか。

普段、文章を書く場所の多くは、誰かのプラットフォームの上です。読んでもらいやすい一方で、記事の住所(URL)も、見た目も、読者との接点も、その場所の仕様に委ねることになります。サービスが方針を変えたり、畳んだりすれば、書いたものもそれに従うしかありません。

それ自体が悪いわけではないのですが、「長く手元に残しておきたい文章」については、もう少し自分の側に置いておきたい。そう思ったのが、小さな出版ツール crofty を作りはじめたきっかけでした。

このシリーズでは、その crofty を作って配るまでに考えたこと・つまずいたことを、テーマごとに分けて残していきます。今回はその土台として、「何をしたかったのか」と「全体の流れ」をまとめます。

何をしたかったか

やりたかったことは、ひとことで言うと「自分のコンテンツを所有したまま出版する」ことでした。具体的には、次の 4 つです。

平たく言えば、「書いたものが、それを作る道具より長生きする」状態にしておきたかった、ということです。

なぜ既存のツールそのままではないのか

ここで正直な疑問があります。静的サイトを作る道具(いわゆる SSG)はすでに優秀なものが揃っていて、たとえば Hugo はとても速くて安定しています。実際、crofty も内部では Hugo を使っています。では、なぜわざわざ別の道具を作ったのか。

理由は、「出版」は書くこと自体だけでは終わらないからです。実際にやってみると、書く前後にこまごました工程がついてきます。

これらを、その都度ばらばらの手順でやるのではなく、コマンド 1 つずつの薄い手順にまとめておきたかった。crofty は、Hugo を置き換えるものではなく、その上に薄くかぶせた小さな道具です。土台は素の Hugo のままなので、いつでも crofty を外して、ただの Hugo プロジェクトとして扱えます。この「いつでも自分の手元に戻せる」感覚も、最初から大事にしていました。

なお、「道具を変えても記事は自分のもの」をどう保証するかは、それ自体で 1 本の記事になるテーマなので、次回にゆずります。

全体の流れ

実際の流れは、とてもシンプルです。Markdown を書いて、組み立てて、配る。ほぼそれだけです。

Markdown を書き、crofty build で静的サイト(dist)を生成し、crofty deploy でエッジに配信して、読者のブラウザに届くまでの流れ図
書く → 組み立てる → 配る、という一本道

登場するコマンドも、役割で並べるとこれだけです。

コマンド 役割
crofty init 記事を書く土台を用意する
crofty build Markdown を静的サイト(dist)に変換する
crofty validate 記事の体裁(frontmatter など)を点検する
crofty doctor 出力が、配信先で正しく開ける形か点検する
crofty deploy エッジ(Cloudflare Pages)へ配信する
crofty theme 見た目を調整する

新しいランタイムやデータベースは増えません。書いたものは dist という静的なファイルの集まりになり、それをそのまま配るだけ。だから速いですし、仕組みを途中で見直しても、記事そのものには手を入れずに済みます。

操作はすべて、端末(ターミナル)から打つ素朴なコマンドです。人が手で打ってもいいですし、手順がはっきりしているぶん、自動化から呼び出すのにも向いています。

このブログ自体も、これで出しています

少し説得力のために付け加えると、いま読んでいただいているこのブログ自体が crofty で作られています。

つまり、表示の速さを保ったまま、図・表・コードといった表現は普通に使える、という状態です。自分で日々使ってみて、不便なところを直す。その繰り返しで形にしてきました。

これから

次回以降は、crofty を作るなかでの個々の判断を、1 本につき 1 テーマで掘り下げていきます。だいたい次のような並びを考えています。

どれも crofty に限らず、「小さな道具を作って配る」ときに通る道だと思います。同じように「書いたものを自分の手元に持っておきたい」と感じている方の、ささやかな手がかりになれば嬉しいです。


次の記事:出力を契約する