MovableTypeを3年愛用してきたプログラマーが最新のWordPressに触れて気づいたことをまとめてみた。

ちょうど10ヶ月ほど前に、MovableTypeとWordPressを比較したCMSとしてのMovableTypeとWordPressという記事を書きました。

その記事は結論から言えば、「MovableTypeは素晴らしい、WordPressはブログだ」という締めくくりで終わっているんですが、最新のWordPressに触れてみたところ、その認識が全く180度変わってしまいました。

そこで、最新の認識としてWordPressがどういった物であるか、MovableTypeとはどのように違うのかを、プログラマーの視点から比較してまとめてみたいと思います。

WordPressは非常に使いやすいCMS

まずWordPressについての認識が間違っていたのでそちらを訂正させて頂こうと思います。

以前の記事では、CMSとしてはMovableTypeが優れていると書きましたが、WordPressも全く遜色の無い機能を備えていることに気づきました。

それがカスタムポスト機能です。
これは何かというと、MovableTypeで言うところの「ブログ記事」や「ウェブページ」といった投稿の種類を独自に拡張できる機能です。

たとえば不動産物件を管理するサイトであれば「不動産物件」であったり、旅館のサイトであれば「お部屋」といったように、自由に投稿の種類を追加することができます。

そのため、サイトの新着情報は新着情報として、不動産物件は不動産物件として別々に管理することができるのです。

コンテンツ管理

すべてを「ブログ記事」と「ウェブページ」で行うMovableType

MovableTypeでは、例えば不動産屋さんのウェブサイトを作成しているとして、「新着情報」と「不動産物件」を別々のページでどんどん追加できるようにしたい場合、ブログ記事の「カテゴリ」に新着情報だったり不動産物件だったりを追加して作成していました。

そのため、カテゴリにチェックをし忘れただけで当該のページに記事が表示されなくなり、違ったカテゴリにチェックを入れよう物なら意図しない場所に記事が表示されたりと、人為ミスの起きやすい構造でした。

また、不動産物件にだけ画像の入力欄を作りたいと思っても、MovableType5 のカテゴリ毎のカスタムフィールドという機能が追加されるまでは、すべてのブログ記事で同様の入力欄を使って作成しなくてはなりませんでした。

ギークなエンジニアなら、その程度はプラグインを作ってお茶の子さいさいなのでしょうが、わざわざそのためにプラグインを作るコストを考えると非常に手間がかかります。

MovableType5からは子ブログを作成することで、今までカテゴリとして分配していたものをブログ単位で切り分ける事が可能になりましたが、再構築の手間が2倍になったり、管理の手間が増えるというデメリットも増えます。

また、直接コアに手を入れない限り、結局「ブログ記事」だったり「ウェブページ」といった項目から抜け出すことができません。単純に言うなら直感的では無いのです。

直感的なインターフェースが作成できるWordPress

WordPressでは上述のカスタムポスト機能を利用して独自の投稿タイプを追加することで、管理画面のメニュー項目として「不動産物件」や「新着情報」などを表示することが、いとも簡単に行えます。

さらにカスタムポスト機能では、各投稿タイプ毎に入力フォーム(例えばタイトルであったり本文であったり)を取捨選択することが可能であり、また独自の入力欄(不動産物件であれば、外観画像や内観画像など)を追加することも容易です。

管理画面からカスタムポストを作成・編集できるプラグインも公開されており、それを使えば、さらに簡単に独自の投稿タイプを追加できます。

また、カスタムタクソノミーという機能を使えば「不動産物件」にだけ表示するカテゴリーやタグを作成したりもできるため、完全に独立した機能として投稿を管理できるようになります。

要するにWordPressでは「ブログ記事」や「ウェブページ」から解放され、直感的で利便性の高いインターフェースを提供することが可能なのです。

ライセンス費用

個人サイト以外は5万円以上の費用がかかるMovableType

MobableTypeはバージョン3より、個人利用以外の用途では、1サーバーにつき5万円ほどのライセンスを支払わなくてはなりません。

バージョン4からはGPLライセンスのオープンソース版をリリースしてますが、CMSとしてのカスタマイズにほぼ必須であるカスタムフィールドが利用できません。

また、ライセンスの問題から一部のプラグインが利用できなくなったり、機能不足を実感してしまいます。

最初からオープンソースのWordPress

その反面、WordPressは最初からオープンソースにて開発されており、GPLライセンスの規約に沿う以上は、無償にて利用することが可能です。

上述のカスタムポスト機能やカスタムタクソノミー機能も標準機能としてシステムに組みこまれていますから、導入コストの低さとカスタマイズ性の高さが両立しています。

学習コスト

2つ以上の言語習得が必要なMovableType

MovableTypeのメリットは、HTMLに酷似した独自のテンプレートを記述するための言語(MTML)を持っていて、それを覚えてしまえばプログラミングの苦手なデザイナーでも、簡単にCMS機能を生かしたウェブサイトを構築できる点です。

しかしながら、逆に複雑なこと・・・例えば「多階層のカテゴリをサイドバーにメニューの一覧として出力したい」等をMTMLで実現しようとすると、プログラミング言語よりも圧倒的に制限された仕様内で試行錯誤を行わなくてはならず、非常に手間がかかります。

そこで機能拡張を行うプラグインの出番ですが、このプラグインを開発するためには、プログラミング言語であるPerlをある程度習得していなくてはなりません。

さらにテンプレートにはPerlは利用できませんから、プラグインで開発する独自の機能はPerlでMTMLとして記述できるように開発し、MTMLとしてテンプレートに記述するという、2段階の手順を取る必要があります。

MTMLで完結するようなサイトを構築するのであれば手軽に、学習コストも低く抑えられますが、プラグインを開発して複雑なことを実現しようとすると一気にハードルが高くなり、MTMLとPerlという2つの言語を習得しなくては、思い通りの開発ができません。

本体もプラグインもPerlのオブジェクト指向でガッチリと体系化されており(だからこそ大規模なシステムが安定して実行できているのですが)、Perlを多少かじった程度では全く話になりません。

Perlのオブジェクト指向についての知識はもちろん、CPANの外部ライブラリに関してもある程度の知識を必要とします。

MTMLを超えた機能の実現をしようとすると、開発のハードルがとても高いのが現状です。

PHPのみのWordPress

その点、WordPressではコアの機能もテンプレートもプラグインも全てPHPのみで記述されているため、PHP1つを学習するだけで済みます。

WordPress専用の関数を覚える必要はありますが、その関数が出力する結果をPHPの機能を使って加工・編集できるため、テンプレートだけでプラグインと同等、またはそれ以上のことを実現することが可能になります。

ただし、PHPを全く使ったことの無いデザイナーの方などには、PHPの記述方法や変数・関数の扱い方などを少なからず覚えなくてはならないため、MTMLのみを学習する場合と比べると、WordPressの方が学習コストが高くなります。

しかしながら、一度PHPを覚えてしまえばそれ1つですべての事が可能になりますし、PHPをテンプレート内に利用できるという事は、うまく使えばPHPで出来るあらゆる事が実現可能ということです。

例えば、上述のテンプレートだけでプラグインを超える機能を実現できるということ。

プラグインの機能や状態に依存しない、それだけで機能する独立性の高いテンプレートを作成することが可能なのです。

それは、例えばクライアントにテンプレートを納品する場合に、依存するプラグインの導入をクライアントに指示したり、またクライアントの環境にログインして作業をするという管理のコストを軽減できるというメリットになります。

ドキュメントの充実度

ドキュメント不足を切実に感じるMovableType

以前の記事では、MovableTypeは日本語ドキュメントが充実していて理解しやすいと書きましたが、確かにMTMLに関してはある程度日本語のドキュメントが揃っており、理解するのにはそれほど時間はかかりません。

ただ逆に、本体に関するドキュメントが驚くほど少なく、英語圏の情報でも見つけるのが難しいと感じるほど。日本語の情報はさらに少なく、数えるほどしかありません。

どういうことかというと、プラグイン開発などで必要な本体の機能を理解するのに、膨大な量のソースコードを眺めて理解していく必要があるのです。

プラグイン開発には必須のフックポイントや組み込みのユーティリティ関数などの説明も少なく、どの時点でどういった機能が実行されるか、どのようにデータを加工しているのかをを読み解くには、膨大な時間が必要です。

本体機能のマニュアルが常備されたWordPress

逆にWordPressはWeb上に本体の機能のほぼ全てを網羅したマニュアルのデータベースが存在します。

用途や関数名から必要な機能を調べる事が可能であり、さらに一部は日本語に翻訳して掲載されているため、テンプレート作成やプラグイン開発に必要な知識は、全てそのサイトを利用することで得ることができます。

また利用者が多いために、「これはどうするんだろう」と思ったことは、ほとんど誰かが同様の事を実現しており、それを検索で見つけることも容易です。

コミュニティが活発なこともWordPressの特徴です。

オフィシャルサイトにフォーラムが設置されていますが、そのフォーラムで実現したいことや疑問について質問をすれば、WordPressのプロフェッショナル達がすぐに解答を出してくれます。

複雑なことを行おうとすれば、やはりソースコードをたどる必要は出てきますが、前述のマニュアルとフォーラム、検索を駆使すればそれほど難しくもありません。

既存のサイトとの共存

静的HTMLを使ったスムースな連携がとれるMovableType

MovableTypeの一番の特徴である、静的HTMLの生成機能は、あらゆる既存サイトにスムーズに組み込むことが可能です。

これは、生成するテンプレートの拡張子を .php とし、テンプレートの内部にPHPタグを書けばPHPスクリプトとしても動作しますし、PHPのフレームワークであるCakePHPで利用されている .ctp とすればCakePHPのビューテンプレートとして利用することも可能です。

ファイルのアップロードから、WYSIWYGエディタでのコンテンツ編集まで可能なMovableTypeを、システムの一部として利用する事ができれば、最小限の開発で満足度の高いシステムを作り出すことも可能です。

PHPのinclude機能を利用して全ての機能を埋め込めるWordPress

WordPressもこの点においては非常に小回りの効く作りになっています。

コアのファイルを読み込みさえすれば、WordPressに用意されている全ての機能(PHP関数)を他のシステムやPHPファイルで利用することが可能になります。

例えば既存のコンテンツがすでに静的なHTMLで導入されているサイトに、簡単な更新システムを導入したい、といった場合に有効な方法です。

静的なHTMLをPHPファイルに変換し、PHPのinclude機能でWordPressのファイルを読み込むことが出来れば、WordPressで管理しているコンテンツを好きな場所に表示することができるのです。

既存サイトの新着情報をWeb上から更新したい場合などに、この方法を用いれば、WordPressの全ての機能を、サイトの一部に利用することが可能になります。

フリーのCGIなどを導入するよりも、クライアントの満足度は高まるでしょう。

総括

MovableTypeには独自の機能として静的HTMLの生成機能や、ポータルサイトの構築機能など、上手に使えば便利な機能もたくさん存在します。

スケールの大きな、堅牢で多量のアクセスにも耐えうるCMSを必要とするような場合は、OracleやSQLserverにも対応したエンタープライズ版も用意もされているMovableTypeは、その威力を存分に発揮するでしょう。

しかし、一番需要の見込まれるであろう、それほど大規模ではない中小企業向けの導入であれば、導入の小回りが効く上に、管理画面のインターフェースなども直感的で、カスタマイズ性の高いWordPressの方が、軍配が上がると思います。

最後に

WordPressを使い始めて気づいたことを書いてきましたが、MovableTypeばかり使っていた自分にとって、WordPressのカスタムポスト機能やカスタムタクソノミー機能、ドキュメントの充実度などは目から鱗の連続でした。

あまり使い込んでいないシステムを上辺だけで決めつけてしまうことで、自ら提案の幅を狭め、同じ事を実現するにも3倍、4倍の時間がかかってしまっていました。

MovableTypeしか使ったことのない方や、WordPressを通常のブログとしてしか見ていなかった方、是非この機会にCMSとしての機能を活用してみてはいかがでしょうか?