既存サイトを棚卸しする
引き継いだ MT に何が入っているのか分からないとき、移管でも、リニューアルの 見積りでも、事故のあとの調査でも、最初にやることは同じです。現状を機械が 読める形で書き出します。
全部書き出す
bash
mtb dump --profile target --dir ./audit/$(date +%Y%m%d)audit/20260901/
├── system/
│ ├── roles.yaml ロール
│ ├── users.yaml 利用者
│ ├── groups.yaml グループ
│ ├── plugins.yaml 入っているプラグイン
│ ├── text-filters.yaml 使える本文の書式
│ ├── endpoints.yaml その MT に実在するエンドポイント
│ └── server.yaml API のバージョン
└── sites/<サイト名>/
├── site.yaml 運ぶべき設定
├── site-environment.yaml host / sitePath など
├── templates.yaml テンプレート(本文つき)
├── categories.yaml / folders.yaml
├── category-sets.yaml / content-types.yaml
├── fields.yaml カスタムフィールド
├── widgets.yaml
├── entries.yaml / pages.yaml
└── assets.yamlこれを git リポジトリに置いて定期的に書き出し直すと、 「いつ誰が何を変えたか」が差分として残ります。MT の更新履歴より読みやすい記録になります。
読み方
./audit の中身を読んで、このサイトの構成をまとめて。 テンプレートの数、使われているカスタムフィールド、依存しているプラグイン、 他の環境に持っていけないものがあれば指摘して。
書き出しは決定的(同じ入力なら同じバイト列)なので、読む側が 何を見ているか迷いません。差分に現れたものは実際に変更された箇所です。
確認すべきファイル
| ファイル | 何が分かるか |
|---|---|
plugins.yaml | そのプラグインが無い MT では、依存するテンプレートの公開がエラーになります(ブロックエディタもプラグイン) |
text-filters.yaml | format: markdown の記事は、その書式が無い MT では読めません |
endpoints.yaml | 仕様に載っていてもサーバに無い機能があります |
templates.yaml | 本文がリテラルブロックで格納されているので、そのまま読めます |
fields.yaml | カスタムフィールドの systemObject と type |
site-environment.yaml | 運んではいけない設定(host / sitePath) |
アセットの中身まで確かめる
bash
mtb dump --profile target --dir ./audit/full --asset-hashMD5 を記録します。1ファイルにつき1リクエスト増えるので、 枚数が多いサイトでは時間がかかります。移管の突き合わせなど、必要なときだけ使ってください。
書き出しに含まれないもの
ダンプに含まれないもの
mt-config.cgiの設定(API から読めません)- カスタムブロック(
be_block)(エンドポイントが1つもありません) - 統計・ログ・コメント(環境で違って当たり前のものなので対象外)
mt-config.cgi のうち、あとで問題になりやすいのは3つです。
| 設定 | 症状 |
|---|---|
EmailAddressMain | 未設定だとメール送信が 500 |
DeniedAssetFileExtensions | .js .html をアップロードできない |
DefaultLanguage | 取り込みの文字コードの既定が変わる |
そのサーバに何があるか
bash
mtb endpoints list --all --fields component,verb,routecomponent が提供元です。検証した MT では 246 が Core、20 がプラグイン由来 (Professional Pack 5 / Comments 10 / FormattedText 5)でした。
「パスは合っているのに 404」は、たいていその MT にその機能が無いという 意味です。v7 の定義と実際のサーバを突き合わせると、LDAP 連携まわりの4つのエンドポイントが無いことが あります(Enterprise パックが要るもの)。
定期的に書き出す
bash
# 週次で取り直して、差分があればコミットする例
mtb dump --profile prod --dir ./audit/latest
git -C ./audit add -A && git -C ./audit commit -m "$(date +%F) の状態" || true誰かが管理画面で直接テンプレートを編集したら、次の実行で差分として現れます。