Blog

CMSの選択基準(機能比較表)をマジメに考えてみる(草案)

Posted by admin at 17:30 日時 2015/03/01

CMSの機能比較表をあえて作ろうという個人的なプロジェクトを進めています。なぜ「あえて」なのかと言うと、多くのCMSに関わる人は、機能比較表が嫌いだと思うんですよね。たいていCMSの機能比較表は、表を作った人が推しているCMSに有利なようになっているからです。

とはいえ、今年はCMSを複数比較して、適切に選べるようになりたい、というウェブ業界の流れがあると思います。ある程度、不公平のない比較表がないものか。よし、作ろう!ということで、この記事を書いています。

この記事が目指すところは、まず機能比較表の項目一覧を作ろうという段階です。CMSを比較する上で、ポイントになる機能や考え方について、リストアップすることを目指しています。「その項目はCMSを比較する上で役に立たない」「あの項目が足りていない」など、ツッコミをお待ちしています。ツッコミカモン!

ツッコミを受けてこのCMSの機能一覧がブラッシュアップされた段階で、アンケートフォームを用意し、各CMSを知る方に記入していただいて、CMSの機能比較表が完成する、というのが現在目論んでいることです。

あまり細かい機能は乗せていません。画像ギャラリー作成機能とか、RSSフィード作成機能とか、ほぼどのCMSでもあるだろうと言うものは、比較表として不適当なので。

また、ものすごいラフな状態ですので、説明が分かりにくい、この方が分かりやすいというツッコミも、お待ちしています。

それでは、スタート!

1. サイト内のページの管理方法

時系列型ツリー型に大別されるのかなぁと思っております。

前者はブログが典型例で、WordPressの投稿が代表的。

後者はOSのファイルシステムを模したものが多く、concrete5のサイトマップツリーや多くのファイルベースのCMSが該当します。Drupalのノードはどちらにもなり得る柔軟な例かなと思っています(あまり知らないで言っている)。

様々なコンテンツをうまく整理するにはツリー型が適していると思いますが、整理するよりストックするという発想であれば、時系列型の方が良いのではと思います。

2. 各ページの管理

各ページの管理はフラットファイル型、カスタムフィールド型、ブロック型、コンテンツリポジトリ型の4パターンがあると思います。

フラットファイル型は、Markdownで管理するCMSなどで、単一のテキストファイルでコンテンツを管理するもの。メリットとしてはデータベースが要らないこと。ただ、多くの場合でメインコンテンツに付属するメタ情報の管理に不満が生じると思います。Markdownを拡張してファイルの先頭にメタ情報を書くとかになると思いますが…。

メタ情報の管理において、現実的な管理方法がカスタムフィールド型になります。ブログ型CMSの多くが採用していますが、キーバリュー式のデータベースをページと関連づける方法です。カスタムフィールドは、メタ情報の管理だけでなく、しばしばコンテンツ自体の管理にも使われます。これは、様々なメタデータの複合である製品情報など、単純なテキストに収まらないコンテンツの場合に有効ですが、柔軟性に欠ける(あらかじめ定義されたフィールドから逸脱できない)という側面を持っています。

ブロック型は、コンテンツの最小単位をブロックとして分類し、ブロックを並べて行くことでページを構成する手法です。ブロックはテキストエディタであったり、複数の入力フォームのセットであったり、さまざまなものが考えられます。この方法はページごとの柔軟性が高く、コンテンツの作成も直感的で分かりやすくなる一方、ページごとにどんなブロックがいくつ並んでいるかが分からないため、コンテンツの一覧性に欠けるという側面を持っています。

コンテンツリポジトリ型は、うまく説明できないのですが、ページのURLと対応しないコンテンツの管理形式です。これまでの3つの方法はいずれも、ページのコンテンツをどう管理するかという発想でしたが、例えばイベント情報を考えてみた場合、各イベントごとにURLがなくてもデータベースとしては成立します。ウェブページの管理と言うよりは、純粋なデータベースと言うべきものですね。この考え方をCMSの理想だ…という意見も時々目にするのですが、実際ただのデータベースなので、他の手法との共存も容易です。なので、これを4つめのパターンとしてカウントするかどうかは迷っています。

3. データの保存方法

データベース

MySQLなどのRDMS

Drupal, WordPressなどメジャーどころはほぼこれと言って良いかと思います。実績もあり、枯れた技術ですが、スケーラビリティに欠ける面があります。まあ、対処の仕様はいろいろあります。

NO-SQL

スケーラビリティが高くビッグデータなどの分野でよく使われるNoSQLデータベースを利用したCMSもいくつかあるようですが、実用性のほどはどうなんでしょうか。

ファイル

データベース自体を使用せず、かといって直接HTMLファイルでサイトを管理するわけでもなく、HTMLの代わりに管理しやすい形式のファイルでコンテンツを管理する方法。データベースを使用しない分、多くの場合で表示速度が速くなるが、ファイルのバージョン管理はCMS外の仕組みで行なう必要があります。また、データベースサーバーが不要になるのでサーバー構成が単純になるメリットもあります。

ファイルベースのCMSの中では圧倒的にMarkdown記法が主流。PageKit, Kirby, Gravなどですね

こうなるとJadeなどのテンプレートエンジンと何が違うのかという気もしますが、管理画面が用意されているかどうかで、CMSなのかテンプレートエンジンなのかの境目になるかと思います。

ブラックボックス

当然、このパターンもあります。SaaSの場合はデータの保存方法はサービスにお任せになる。

4. コンテンツのポータビリティ

CMSで管理しているコンテンツを他のCMSに移行するのが、どれくらい簡単か、という指標です。これは、外部システムとの連携のしやすさにもつながります。

Markdownなど一般的な記法を拡張せず使っていて、そのMarkdownファイルを直接入手できる場合が、コンテンツの移行のしやすさとしてはベストだと思います。使っているCMSの開発が終了しても、死んだデータになりません。

また、WordPressのエクスポートデータは、シェアに裏打ちされて他のシステムでインポート手段が用意されていることが多く、移行がしやすいです。ただし、ショートコードなどWordPress独自文化の記法があり、単純に他のシステムに移行するとその部分のデータが消えるというデメリットもあります。

ブロック型のように複雑なデータの保存方法では、しばしば他のシステムへの移行が難しくなる。

最も悪いのは「不可能」というパターンで、データのエクスポート自体ができない。その場合は、ウェブ上からスクレイピングで抜いてくるくらいしか手段がない。

RESTfulなAPIが用意されているかどうか

コンテンツの保存方法とは別に、外部システムとの連携のしやすさとしての指標になるかなと思います。

5. 拡張性

プラグインやアドオン、モジュール、システムによって呼び名は違いますが、それらの追加プログラムによる拡張性を提供しているかどうか。また、プラグインは提供されているものだけを使うのか、独自開発が可能か。独自開発が可能な場合は、そのためのドキュメントが整備されているか。このあたりが判断基準になるかなと思います。

投稿画面のカスタマイズ性

a-blog cmsやSOY CMSがこの点をプッシュしているかなという印象ですが、コンテンツの投稿画面もテンプレートエンジンで管理されていて、制作者がカスタマイズしやすいという利点は大きいと思います。また、カスタムフィールドの追加がどれくらい簡単にできるか。concrete5のようなブロック型CMSでは、ブロックの開発を行なうことになり、カスタムフィールド型に比べて大掛かりな作業になる。

6. 検索性

a-blog cmsやWordPressなど、ブログ系のCMSが強いのかなぁと思いますが、URLにパラメーターを渡すと、よしなにデータベースから検索してくれる。ただ、検索と一口に言っても色んな要素があるので、これを選択基準に入れるのは難しいかなぁ…。

7. テーマ

PHPとテンプレートタグ程度

WordPress、concrete5など。

書こうと思えば生でPHPが書けるので、逃げ道があるのが良いとも言えるし、セキュリティ的にはよろしくないとも言える。

独自言語

MTML(Movable Type)、Razr(PageKit)など。

プログラムが書けないため、逆にPHPなどが分からないマークアップエンジニアでも書けるという利点がある。また、セキュリティ的によろしくないコードを仕込んでしまう危険性もない。その代わり、逃げ道がないので柔軟性は劣る。

汎用言語

Twig、Smartyなど

Gravなど。マークアップエンジニアでも書けるうえに、汎用性が高いため、すでにそのテンプレート言語に精通している場合は導入コストが低い。

8. ファイル管理

サーバーにアップロードしたファイルを管理する手段がある

ウェブページには画像やPDFファイルなどの挿入が必須ですが、それらのアップロードしたファイルを管理する手段があるかどうか、がひとつの判断基準にはなるかなと思います。画像の再利用などがしやすくなります。

アセット管理として設計されている

単にサーバー上のファイルを管理するだけでなく、ファイルごとのバージョン管理や検索API、拡張可能なメタデータなど、ファイルの再利用や検索性に留意しているかどうか。いまこの記事を書いているWordPressは、バージョン管理とメタデータの拡張が標準機能でできないので、ここには該当しないと考えています。

できない

フォームから画像などをアップロードすることはできても、アップロード済みのファイルを管理する手段がない、または乏しい場合。これは必ずしも悪いとは言えず、シンプルで分かりやすいと言う見方もできます。

9. ユーザー管理

CMS内に複数のユーザーアカウントを作成し、その管理ができるかどうか

結構、アカウントが管理できないCMSもありますからねぇ、中には…。

ユーザーアカウントをグループ化して管理できるかどうか

ある程度の規模の組織になると、アカウントを複数作成できるだけでなく、グループ化して管理できることが必要になります。

ページや表示要素に対して、ユーザーごとに権限が設定できる

うまい表現を考え中ですが、企業のコーポレートサイトだと、ページと運用担当者の関連づけは必須になってきます。

ユーザーごとに管理機能へのアクセス権を適切に管理できる

ページだけでなく、管理機能へのアクセス権についてもユーザーごとに細かく定義することができると良いですね。

10. ワークフロー

コンテンツの編集権限と承認権限を分けることができるかどうか。承認者にメールで通知を出せるかどうか。承認段階を複数設定できるかどうか。承認経路を複数設定できるかどうか。

11. モバイル対応

管理機能にタブレットやスマートフォンからアクセスできるかどうか。

フロントエンドにおいて、ユーザーエージェントからテーマを切り替える機能があるかどうか。

12. ブログ機能

時系列のコンテンツについて、自動的にアーカイブが作成されるかどうか。コメント機能などがあるかどうか。

13. 言語

PHPかJavaが主流。Ruby on RailsやnodeJSなども。

技術者の調達を考えると、言語は意外と重要な選択基準。

14. 開発フレームワークの使用

使用していないもの:WordPressなど

コンポーネント(ライブラリ)として使用しているもの:Drupal, concrete5などがSymfonyなどを利用

フレームワークの上に構築されているもの:baserCMSなどがcakePHPの上で動作

分からない

15. マーケティング機能

アクセス解析、リードジェネレーション、リードナーチャリング、リードクオリフィケーション、ユーザーセグメンテーション、ソーシャルメディア連携などなど

様々な機能がありすぎますので、マーケティングに強いかそうでもないか、という2択くらいで自己申告していただくしかないのかなぁと思っています…。

16. デザインカスタマイズの自由度

高:URLごとにテーマやレイアウトを切り替えられる。表示要素ごとに細かくテンプレートがあり切り替えられる。

中:URLごとにテンプレートを選択できるが、レイアウトの追加や細かな表示要素ごとの調整はできない

低:ほぼ全ページ画一

17. ライセンス

オープンソースライセンス(GPL、AGPL、MITなど)、プロプライエタリライセンス、SaaSなど

お金がかかる場合は、価格帯。〜10万円、10万〜100万、100万〜500万、500万〜

18. プレビュー機能

実際の出力と同等のプレビューが可能かどうか。日時を指定して、未来時点のプレビューが可能かどうか。ユーザーアカウントを指定して、特定のユーザーでの見た目をプレビュー可能かどうか。画面サイズやユーザーエージェントを指定して、デバイスごとの見た目をプレビュー可能かどうか。Cookieなどを指定して、ユーザーセグメントごとの見た目をプレビュー可能かどうか。と、どこまで細かくプレビューできるかで、運用担当者の手間が変わってきます。

19. 多言語サイト対応

対応方法はCMSごとに違いますが、とりあえず対応できるかどうか。ある程度の規模の会社のサイトになると、言語が2桁は普通なので、そこまで楽に対応できてほしいところ。

20. 静的出力

静的なHTMLを書き出せるかどうか。個人的にはこの機能不要と思ってるんですが、静的HTML信仰は根強いもので…。

21. アクセシビリティ対応支援機能

等級準拠チェックや、altの入れ忘れの通知、カラーコントラストの警告など、アクセシビリティ向上のための機能があるかどうか。JIS X 8341-3:2010を意識しているとなお良し。

22. SEO機能

この機能は非常に選択の目を曇らせる印象がありますので、title, meta descriptionなどをページごとに設定可能であれば○、そうでなければ×、くらいに留めておくのが良いかなぁと思います。

23. ソーシャル連携

シェアボタンがかんたんに設置できるかどうか。ページの作成時に、自動的にSNSアカウントにシェアできるかどうか。


Facebookからいただいたご意見

日本においての公式サイトやコミュニティが存在するのか、サポートを担う公式の企業が存在するのかとか、そういうのも加えたらどうでしょう?
私が実際に仕事で使うCMSを考えるときは、必ずこの点はみます。
あと公式のガイドブックや解説本が出てるかどうかとか。

確かに日本語サポートは抜けてましたね。ありがとうございます。

アドオンやテーマ、日本語リソース、ベンダーの数、実績数、国内シェア

パートナー制度があるとしたら、その数は知りたいですね。実績数やシェアは、各社の発表をそのまま比較するのは難しいなと思います。

オープンソースならここ半年のコミット量とかも知りたい

非オープンソースとも比較可能にするなら、直近1年間のリリース数やメジャーバージョンアップの間隔で比較できるかもしれませんね。


Share this entry

Blog Entry Topics