Movable Type のサイトを、URL も見た目も変えずに静的ファイルにする
Kiln は既存の Movable Type サイトの記事・テンプレート・URL を引き取り、同じ HTML を静的ファイルとして書き出します。公開サーバーで Perl とデータベースを動かし続ける必要がなくなり、記事1本の修正で全ページを作り直すこともなくなります。MIT ライセンスのオープンソースです。
いま判断していただきたいのは、本番を載せ替えるかどうかではありません。検証環境で自社のデータとテンプレートを一度通してみるかどうかです。MT の本番には触らず、データベースの写し1つで済みます。
先に書いておくべきこと
Kiln で本番運用されているサイトは、まだありません。互換性は本物の Movable Type 8.8.1 と6通りに突き合わせて確かめてありますが、実際のアクセスと実際の運用に何週間もさらした実績がありません。商用サポートの窓口もありません。本番停止時に契約上の連絡先が必要な組織では、現時点では採用できません。
そして「投稿を受け付ける」機能は静的化すると止まります。お問い合わせフォームと、コメントの受け付けです。静的なページには送信先がないので、Kiln はそれを受け取るふりをする仕組みを持っていません。どちらも外部サービスに移すのが定石ですが、Kiln が同梱しているわけではありません。検討はこの2つの移し先を決めてから始めてください。
何を引き取り、何が変わるか
引き取るのは MT のデータベース1つだけです。記事、カテゴリ、タグ、アイテム、コメント、コンテンツタイプ、カスタムフィールド、そしてテンプレートまで、すべてそこから読みます。MT のインストールを動かす必要はありません。
| 判断軸 | Movable Type の構成 | Kiln の構成 |
|---|---|---|
| 記事1本を直したときの公開 | その記事が載るページをまとめて作り直す | 変更が影響するページだけを作り直す |
| 公開サーバーに必要なもの | Perl、CGI、データベース接続 | HTML ファイルを置ける場所だけ |
| 管理画面の置き場所 | 公開サーバー上 | 手元か社内。公開側に動くプログラムが無い |
| テンプレートの履歴と巻き戻し | データベースの中。差分も履歴もない | ファイルなので Git の履歴とレビューが使える |
| サイト内検索 | mt-search.cgi が毎回検索する | 公開時に索引を書き出し、ブラウザ側で絞り込む |
| ライセンス費用 | 年額の製品ライセンス | なし(MIT ライセンス) |
| 障害時の問い合わせ先 | ベンダーまたは制作会社 | なし。社内か制作会社で対応する |
記事の書き方も、情報設計も、サイトの見た目も変わりません。変わるのは公開の仕組みだけです。だからリニューアルとは切り離し、その前か後に行う作業になります。くわしくは何が変わるのかに書きました。
「変わらない」の根拠
本物の Movable Type 8.8.1 を実際に動かし、同じ素材から出た HTML を1文字ずつ比べています。改行や空白をそろえる処理も挟みません。確かめたのは6通りで、それぞれ別の疑いに答えています。
| 比べた内容 | 一致 |
|---|---|
| テンプレートの機能を1つずつ | 59パターンすべて |
| 同じ59パターンを、MT のデータを読み込んだあとの状態から | 59パターンすべて |
| 見本サイト1つの公開を MT の「サイトの再構築」と | 27ファイルすべて |
| MT のデータを入れて公開するまでの通し運転 | 27ファイルすべて |
| 同じ公開を、記事の保存先を替えて | 27ファイルすべて |
| 生成される URL を MT 自身の公開記録と照合 | 全件 |
比較に使ったのはテンプレートの機能を一通り並べた見本サイトで、企業サイトとしては小規模です。だからこの結果が示すのは「Kiln のテンプレート解釈が MT と同じであること」までで、自社サイトが通ることは別に確かめる必要があります。その確かめ方も含めて、変わらないと言える根拠に書きました。
検索順位と外部からのリンクを守るうえで効くのは最後の行です。MT は自分が公開したファイルの一覧を持っているので、Kiln はそれと自分が作る URL を1件ずつ照合し、消えるものが1件でもあれば移行を止められます。
記事を書く画面もあります
移行したあとに記事を書く場所が必要です。Kiln には管理画面があり、ブラウザの設定に従って日本語で表示されます。MT にある言葉はMT の言葉を使っています(アイテム、サインイン)。
記事の一覧と検索、本物のテンプレートで描くプレビュー、カテゴリとタグ、アイテムのアップロード、保存ごとの履歴と巻き戻し、移行したコメントの承認、テンプレートの編集、ユーザーとロール、そして「誰が何をしたか」の記録。権限は MT と同じ名前で、サイトごとに与えます。
画面ごとの使い方はユーザーマニュアルにあります。MT と最も違うのは、保存と公開が別の操作だという点です。保存は溜まり、「サイトを公開」で出ます。
どう進めるか
4段階に分かれています。3段階目までは MT の本番に触りません。やめても失うのは調査の時間だけです。
| 段階 | やること | やめる費用 |
|---|---|---|
| 1. 読み込み | データベースの写しから記事・テンプレート・URL を取り出す | ゼロ |
| 2. 突き合わせ | 自社のデータで MT の出力と1文字ずつ比べる | ゼロ |
| 3. 並行運転 | MT で記事を書き続けながら、Kiln 側も公開しておく | ゼロ |
| 4. 切り替え | 公開先を Kiln の出力に向ける | 公開先を戻すだけ |
判断の材料は、2段階目で出てくる報告です。自社のテンプレートが通るか、プラグインの機能がいくつ足りないか、URL が1件も消えないか。推測ではなく、数で出ます。段階ごとの中身は移行の進め方と引き返し方にあります。
技術担当者に渡す分
必要なのは Node.js 22 以上だけです。データベースサーバも Perl も要りません。読み込みから突き合わせまでは、本番に触らずこの3行で終わります。
kiln import sqlite:./mt.db --out ./site --timezone Asia/Tokyo
cd site && kiln check # 読めないテンプレートを行番号つきで出す
kiln urls diff ../mt.db # 生成する URL を MT の公開記録と照合する
kiln check が何も言わず、kiln urls diff が消える URL を1件も出さなければ、2段階目は通っています。導入の手順はインストールマニュアルにあります。MySQL のデータベースは SQLite に書き出してから渡します。
向き不向き
向いているのは、記事数が数千を超えて再構築が運用の邪魔になっていて、テンプレートが標準に近く、公開側のセキュリティ対応に毎回追われているサイトです。ウェブサイトの下に複数のブログを置いた構成はそのまま引き取れます。1つのツリーに公開され、ブログ横断の一覧も MT と同じタグで書けます。
見送ったほうがよいのは、本番停止時に契約上の問い合わせ窓口が必要な組織。お問い合わせフォームやコメントの受け付けを止められず、移し先も決められないサイト。会員限定ページや Basic 認証を MT 側で持っているサイト。プラグインの機能がテンプレートに深く入り込んでいるサイト。判断の目安と費用は費用・体制・向き不向きにまとめました。
次の一歩
MT のデータベースの写しを1つ用意して、上の3行を回してみてください。本番には触りません。標準テンプレートに近いサイトなら、テンプレートを読める方が1人いれば数日で結果が出ます。
何を決めて、何を材料にするかは費用・体制・向き不向きの最後に表でまとめました。社内に持ち帰るときはそこを使ってください。
導入の相談や、うまくいかなかった報告は GitHub の Issues で受けています。返答の期限は約束できませんが、報告は今後の改善の優先順位に反映します。
何が変わるのか
速くなるのは公開作業です。更新のたびに全ページを作り直す構造をやめると、待ち時間と障害の両方が消えます。
変わらないと言える根拠
記事ページとテンプレートは本物の MT と1文字ずつ比べてあります。止まるのは「読者が何かを送る」機能だけです。先にそちらを読んでください。
移行の進め方と引き返し方
4段階に分け、どの段階でも MT をそのまま動かし続けられる形で進めます。引き返す判断は3段階目まで取り消し費用ゼロで持てます。
費用・体制・向き不向き
ソフトウェアは無料です。値段にあたるのは、サポート契約が存在しないことと、障害を自分たちで調べる体制です。