3年ほど前より、Movable Typeの名古屋のコミュニティをやっています。一応、代表になるんでしょうか。しかし、いろいろとキャパオーバーでして、今年はコミュニティの活動がほとんどできていませんでした。コミュニティ活動、手伝ってくれる方を大募集中です。よろしくお願いします。
さて、仕事としては、Movable Typeを日常的に使っております。PowerCMSを扱うことも多かった年でした。
ということで、この記事は Movable Type Advent Calendar 2016 の21日目の記事です。
ソフトウェア版からMovableType.netへの移行
2015年2月に登場したウェブサービス型の「MovableType.net」は、サーバーを用意する必要がなく、初期費用なしで月額約2,100円から利用できます。
手軽な反面、クラウド版のMovable Typeとは違い、FTPアクセスができず、プラグインの追加などもできません。かといって、クラウド版の廉価版かといえば、そうとも言い切れません。クラウド版の機能は、ソフトウェア版に準じていますが、MovableType.netには独自の機能も多く、また違った優先度で機能が追加されていっています。
正式リリースから2年弱ですが、とにかく機能追加のペースが速く、最近の変更では、新たなテーマ の追加や、独自ドメインでの ネイキッドドメインへの対応 、独自の差し替え予約機能に共有プレビューができるようになった ことなどがあります。
ソフトウェア版からの移行がしやすいようにインポート機能も充実してきています。データベースやFTPアップロードができないため、ウェブページやカスタムフィールドのインポートができるようになったのは便利なところではないでしょうか。
独自の進化をしているとはいえ、MovableType.netの管理画面はソフトウェア版に近く、MTタグを使ってのテンプレート作成などは同様に行っていきます。ただし、ソフトウェア版からMovableType.netへの移行は、すんなりとはいきません。プラグインの利用ができないので用意された機能しか使えなかったり、ソフトウェア版では使えたMTタグが使えなかったりなどがあり、Movable Type Advent Calendar 2016 8日目 に書かれていたような、mt:SetVarsやopモディファイアが使えないという点が、まさにハマったところでした。
テーマごとの移行は、FTPアップロードできないので、GitHub経由でインポートを試みましたが、移行後にテンプレートの修正がかなり必要で、上記のopモディファイアが使えない部分は、別途JavaScriptで書き換えたり、ブログIDの部分はブログの識別子で判別するようにするなど、予想以上に書き換えました。テーマの移行は行わずに、MovableType.netで用意されたテーマに、記事とウェブページをインポートするというのであれば、手軽なのかもしれません。
逆に、MovableType.netからソフトウェア版への移行
昨年、MTOS(開発終了となっているオープンソース版のMovable Type)からMovableType.netに移行した案件があり、移行後のクライアントでの評判も良かったのですが、違うドメインでサイトを3つ作りたいという要望が出てきました。
MovableType.netは、1つの契約で作成できるウェブサイトは1つです。3サイトとなると、単純に3倍のコストとなります。すると、ライセンス費部分のメリットも少なくなり、ウェブサイト間でデータを共有するのも簡単ではありません。
そこで、昨年はソフトウェア版からMovableType.netに移行しましたが、今度は逆に、ソフトウェア版に移行してみました。
使えるMTタグはソフトウェア版の方が多いので、テンプレートタグを書き換える部分は少ないかもと甘く見ていましたが、やはりお手軽でもなかったので、引っかかった点などを共有します。とはいえ、まったく意味不明のトラブルはなかったので、まったく違うCMSからの移行に比べたらはるかに楽だったかと思います。
エクスポートそしてインポート
まず最初に、MovableType.netからエクスポートを行います。
ウェブサイトと各ブログごとに「ツール>エクスポート」から記事とウェブページを書き出します。ダウンロードされたファイルを解凍すると、記事とウェブページのほか、カテゴリとフォルダがテキスト形式で書き出されています。
次に、やはりウェブサイトと各ブログごとに「デザイン>テーマ」から、テーマの書き出しをします。出力ファイル名は任意でわかりやすいものに。ファイルマネージャーでアップロードした静的ファイルなども含めることができます。
書き出したテーマを、あらかじめ用意したソフトウェア版のMovable Typeにインポートします。
まずは、Movable Typeの「theme」ディレクトリに、先ほど書き出したテーマのファイルを解凍してアップロードします。そして、Movable typeにログインして新たにウェブサイトを作成しようとすると、テーマで選ぶことができます。
各ブログも同様に、作成するときにテーマを選ぶことができます。これで、テンプレート自体は移行することができました。
うまく移行ができなかったところ
さて、あっさりとインポートができました。テンプレートについては、ほぼ問題なく移行できたように見えます。とはいえ、表示をするとうまくいかない部分もでてきます。次のような点が移行できていませんでした。
カスタムフィールドは移行できなかった
テーマの書き出しには、カスタムフィールドが含まれていたのですが、インポートされていなかったので、改めて作成する必要がありました。
カスタムフィールドを呼び出す書き方が違う
MovableType.netでは、カスタムフィールドの値を MTCustomFieldAsset か MTCustomFieldValue に識別子をモディファイアに指定して呼び出します。ソフトウェア版にもMTCustomFieldAssetなどのタグはありますが、使い方が違うので書き換えます。
ブログの識別子を書き換える
MovableType.netでは、ブログIDというものがわかりにくいので、使わないようにしていました。その代わり、ウェブサイトや各ブログは「設定>全般」に「識別子」というものを設定することができ、テンプレート上でinclude_blogsで指定することができます。これをブログIDに変更する必要がありました。
ウェブページがインポートできない
せっかくウェブページも書き出しはできたのですが、ソフトウェア版にインポートできるのは記事だけでした。カテゴリやフォルダもインポートできません。ウェブページもインポートしてみると、記事に変換されて読み込まれました。数が多い場合などは、Movable Type Advent Calendar 2016 17日目 で紹介されている「CSVDataImExporter」プラグインのようなものを使うという手もありますが、今回は手動でウェブページを登録し直しました。
アイテムの画像がない
MovableType.netで、ファイルマネージャーを使ってアップロードした画像などはテーマに含まれていたのですが、記事の中などでアップロードした「アイテム」に登録されている画像がダウンロードできませんでした。画像をサムネイルなどでも使いたいなどと考えると、画像は結局、1つ1つダウンロードして手動でアップロードし直しました。数が多いようなら、画像の一覧ページを仮に作って、一括ダウンロードしたとは思います。
MTPaginationHasPrevious、MTPaginationHasNext
基本的に、MTタグは共通のもので、MovableType.netでは使えないものがあるという感じですが、中には、MovableType.netにしかないMTタグもあります。その辺は取り除かないと再構築ができません。MovableType.netでしか使えないモディファイアなどもあるので、注意は必要です。
ちなみに、MovableType.netには再構築がないので、テンプレートにミスがあってもそのページだけがエラーになるだけで、関係ないページは正常に見られるようです。
とりあえずMovableType.netで始めてみる
MovableType.net からソフトウェア版への移行は、データをインポートしたら完了、とまではいかないので調整は必要ですが、それでもソフトウェア版からMovableType.netへの移行よりは簡単でした。ウェブページが多いと少し大変そうですが、場合によってはデータベースに直接とかプラグインでCSVでアップロードとかも可能です。違うCMSから移行するよりは楽でした。
フォーム機能やウェブページの差し替え機能など、MovableType.netにしかない機能もあるので単純にコストや規模だけでは選べませんが、場合によっては移行ができるということで、とりあえずMovableType.netを使って、規模が大きくなったり、プラグインで拡張したいとなったらソフトウェア版やクラウド版に移行というのも現実的なのではないでしょうか。
最後に、ソフトウェア版にも差し替え機能を期待したいところです。
追記:
本記事にて、MovableType.netで「mt:SetVarsやopモディファイアが使えない」と書いていましたが、年明け早々に新機能追加で対応したみたいです!
4日連続新機能リリース中! MovableType.net| ウィゾ・プロダクション
MovableType.netのサイトへ