2019年に一番ウケがよかった!承認済みコンテンツのみを関連ファイルごと自動同期する「かしこい」ステージング環境を実現

CMSサイト関連 MTプラグイン Movable Type

MTアドベントカレンダーでしか更新しなくなった弊ブログです。

2020年を前に予算とリソースをかけてコンテンツ資産の生産体制を作り、オウンドメディアを運用するお客様が増えており、社内で承認ワークフローを通してから公開するお客様が当社比190%で増えてきました。

相変わらず弊社製品を使ったソリューションにはなりますが、承認ワークフローを回しながら、ステージング環境から同期する仕組みを、ご要望に合わせて開発した新機能もふまえご紹介します。

MTあるあるなご要望

MTベンダーであればよくいただくご要望かと思いますが、cherry-pickでもよくご相談をいただきます。

一度構築した事例を元に他のお客様にも参考サイトとしてお見せしたところ、「これこれ、これがいいよ。丸パクリでよろしく」と言われる今日この頃です。

これをどのようにして実現したか、ご紹介できればと思います。

承認ワークフロー(CheckRelease)xステージング環境(Uploader)のコンボで実現

要望
公開前にサイト全体のプレビューがしたい。未承認のリビジョンも反映前に実端末でプレビューしたい

「公開サイト前にサイト全体のプレビューがしたい」は、ステージング環境を構築すればかんたんに実現できますが、未承認の差し替え用データは下書き保存が一般的で、プレビューをサイト全体かつ実端末で行うのはかなり難易度が上がります。

かんたんに解くために、次のように因数分解してみました

「ワークフローを回したい」、「承認済みコンテンツだけ公開したい」、「未承認コンテンツは出したくないけどサイト全体プレビューしたい」

それぞれのソリューションのオプションを出して、有効なものをつなぎこんで次のように考えました。

ソリューション
公開用とプレビュー用のページを分けて、承認済みコンテンツだけ公開ページに表示する

シンプルに、公開用ページとプレビュー用ページを分け、公開用ページで承認済みのコンテンツのみを出すことができればよく、公開領域のファイルのみ同期できるようにしました。

標準機能のみで再構築すると、一覧ページでは公開ステータスのコンテンツは全て出てしまうため、承認済みのコンテンツのみを取得するMTタグは新たにCheckReleaseの機能として実装しました。

プレビュー用の一覧ページ、詳細ページに表示する内容は、公開用データに反映されてない未公開かつ編集中のリビジョンデータを一式取得するCheckReleaseのMTタグを開発することで、表示できるようにしました。

あとは、下書き状態の差替えリビジョンデータが保存された時に再構築を走らせることができれば、更新と同時に最新リビジョンデータが反映されたプレビューページが更新されます。

この仕組みを使うと、公開用ページの編集による影響を気にせず運用することができます。

同期については、プレビュー用ページを特定のディレクトリ配下に出力し、Uploaderの除外機能で同期対象から除外設定することで、間違っても同期されないようにしました。

要望
承認済みコンテンツや差し替え用リビジョンを、日時指定で公開と同時に同期したい。非公開も予約したい

コンテンツが承認されたら公開しますが、公開日が未来の場合は、コンテンツを公開した状態で同期予約を行うのが一般的です。

問題点として、想定している日時より前に他のコンテンツの更新が必要になった場合、割り込み同期が発生します。このときに一度非公開にする必要が出るため、運用が複雑になるためそれを回避する必要がでてきます。

ソリューション
コンテンツの公開日と公開終了日に連動した予約配信できるようにし、CheckReleaseのリビジョンにも対応

前出のプレビュー用ページの仕組みを構築しておき、承認済みコンテンツを日時指定による予約同期で公開するオペレーションにすることで、急な更新時に慌てずに済みます。

日時指定での保存と合わせて同期予約ができるよう、Uploaderではコンテンツ編集画面から直接予約同期、非公開同期、ができるようにしました。

配信先を指定して保存すると、自動的に公開予約と非公開予約が行われ、公開日、公開終了日に公開と同時に同期も行います。

また、CheckReleaseのリビジョンにも対応しているため、差替えも日時指定で同期までできます。

要望
コンテンツ同期でコンテンツに関連するファイルがわからない

制作者ではないライターさんや承認者の方は、どのファイルが関連するか、詳細を把握できません。

ソリューション
コンテンツの更新に関連するファイルやアイテムを自動抽出して同期対象とする

登録内容を更新されたときに再構築でアップデートされるファイルをテンプレートのアーカイブマッピングから逆引きしたり、コンテンツに関連づけられたアイテムや画像のサムネイルなどを自動で抽出し、同期する機能を実装しました。

コンテンツを公開・更新する場合、前後のコンテンツや一覧ページ、インデックステンプレートで管理されているファイルも再構築されるため、それらも対象とします。

ディレクトリツリーから同期するファイルを手動で選ばなければいけないツールが多い中で、同期漏れ防止などにも繋がるため、導入済みのお客様からもご好評いただいております。

要望
手動で任意のファイルを同期したい

自動同期があるとはいえ、テンプレート単位の改修があった場合は、対象ファイルを一式で同期したいケースがあります。

その場合に備えて、ファイルツリーから選択して同期ができる機能ももちろん提供しています。

ソリューション
ファイル選択機能を提供する

コンテンツ編集画面からファイル選択をして、保存と同時に同期予約ができます。自動抽出できるので、コンテンツに関連するファイルやアイテムなどにマークをつけ、わかりやすくしています。

要望
年末年始に向けて複数予約をしたい

ソリューション
複数バージョンの予約機能で解決!

年末年始はゆっくりしたいですよね。複数日程の予約機能もご利用いただけます。家でゴロゴロしながら反映されたかどうかだけ確認すればOK!

あらかじめ表示状態を確認した上で、複数指定日の予約を行うことができます。

公開同期画面から予約をすると、予約を行ったタイミングの状態で、同期用ファイルを一時ディレクトリに退避しておき、時間が来たら同期を行います。

ただし、予約後にコンテンツの急な更新が入ることもしばしば。その時は、該当するコンテンツが関連するファイルがあると、自動キャンセル機能によって更新後のロールバックを防ぎ、予約キャンセル通知を予約者に送信します。

要望
定期的に差分があったら自動で同期したい

バッチ処理によって定期的に更新されるファイルを使ってサイトに表示する内容を更新するケースなどがあります。

そんな場合は、定期的にサイトのディレクトリ配下の差分をチェックして同期を行う定期同期機能を使うと便利です。run-periodic-tasksの実行間隔に応じて、ディレクトリの差分をチェックして同期を行います。

要望
公開環境向けに同期するファイルの内容を置換したい

旧バージョンと同じ仕組みで、同期するファイル内のソースコードを置換することができます。

製品へのご要望、お問い合わせお待ちしております

今年もたくさんの弊社製品について機能や仕様改善のご要望をいただき、誠にありがとうございました。

ここでご紹介した機能の一部は新バージョンでのリリースを想定しているため、一部の方へ開発版として導入させていただいていますが、汎用的な機能は無償で新機能として開発させていただくこともございますので、どしどしご要望をお待ちしております。

試用版のお申込みも受付けておりますので、以下よりお気軽にご連絡ください。

【30日間無料】
CheckRelease最新版ダウンロード
 申し込む
【30日間無料】
Uploader最新版ダウンロード
 申し込む

MT大好きな制作メンバーも募集中!

MTの複雑系カスタマイズのご相談が増えてきており、技術的にレベルアップしたい、共に成長できるメンバーも募集してます!作ったプラグインをマネタイズできたらフィードバックする制度も構築中ですので、ご興味ある方はランチごちそうしますので、お気軽にお問い合わせください。

商品・サービスへのお問い合わせ

ご相談、お見積もりのご依頼など

お問い合せはこちら