ウェブフレームワークと CMS の特徴と違い

今回は、ウェブ技術者以外の方に向けて、サイト構築に利用される 2 つの技術ーー「ウェブフレームワーク」と「 CMS 」の特徴と違いをまとめて説明してみます。

まず最初に「フレームワーク」と「 CMS 」のそれぞれの説明をした後に両者の違いについて見ていきます。

  1. フレームワークとは
  2. CMS とは
  3. フレームワークと CMS の違い

1. フレームワークとは

ウェブの世界で「フレームワーク」というと、一般には ウェブサイトやウェブシステムを効率的に構築できるライブラリ群 のことを指します。

文脈上明らかな場合は「フレームワーク」と省略されることが多いですが、省略しない形は「ウェブアプリケーションフレームワーク」( WAF )です。 「アプリケーションフレームワーク」という概念が先にあって、そのウェブ版なので「ウェブアプリケーションフレームワーク」です。

フレームワークを使えば、 ウェブサイトでよく必要になる定番機能を高品質・省コストで作ることができます 。 具体的なパーツとしては、「ブラウザからのリクエスト情報の取得」「ユーザー認証」「データベース操作」「ブラウザへのレスポンスの生成」などの機能などがあります。

なぜ「フレームワーク」と呼ぶのか

単なる「ツール」ではなく「フレームワーク」と呼ばれている理由は、 ある程度制限された枠組みに沿って使うことを想定して作られているため です。 使い方がある程度制限されている分ゼロから作るよりも自由度は低いのですが、品質のよいものを効率的に作れるという大きなメリットがあります。

フレームワーク利用のイメージは「サイトの一部でフレームワークを利用する」というよりは「サイト全体をフレームワークの上に構築する」というイメージです。

フレームワークを他のもので喩えるなら

やや乱暴な喩えかもしれませんが、フレームワークは「無印良品のユニットシェルフ」に近いイメージです。

無印良品のユニットシェルフは、棚や柱などのパーツがたくさん用意されていて、消費者はそれらを組み合わせて自分の好みに合った形・構成の棚を作れるようになっています。 パーツはあらかじめ用意されたものの中から選ぶ必要がありますが、生の金属を自分で加工して棚を作るような大変さはありません。 また、完成品の棚だと形や構成を自由に変更することができませんが、無印のユニットシェルフであればそのあたりもある程度融通がききます。

フレームワークの利用者

フレームワークの主な想定利用者は 職業プログラマ です。 フレームワークを利用するには、最低限、プログラミング言語の読み書きができる必要があります。

「プログラマ」の前に「職業」を付けたのには理由があります。 フレームワークは一般に学習コストが高く、使い方を間違ったときのリスクも大きいので、仕事でプログラミングの経験のある方以外がフレームワークを安全・快適・スムーズに使いこなすのは至難の業だと思います(絶対にできないわけではありませんが)。

海外のサイトでの「フレームワーク」の説明

Wikipedia などにおける「フレームワーク」の説明をいくつか見てみましょう。

近い用語である「 software framework 」について Wikipedia では次のように説明されています。

A framework is a reusable set of libraries or classes in software. In an effort to help developers focus their work on higher level tasks, a framework provides a functional solution for lower level elements of coding. While a framework might add more code than is necessary, they also provide a reusable pattern to speed up development.

意訳:

フレームワークとは、再利用可能なソフトウェアのライブラリやクラスのことです。 開発者が高レベルのタスクに集中できるように、フレームワークは低レベルのコーディング要素の機能的なソリューションを提供します。 フレームワークが必要以上のコードを追加してしまうかもしれませんが、開発のスピードを高める再利用可能なパターンを提供してくれます。

Mozilla MDN では「 web framework 」について次のように説明されています。

Web frameworks provide tools and libraries to simplify common web development operations. You don't have to use a server-side web framework, but it is strongly advised — it will make your life a lot easier.

意訳:

ウェブフレームワークは共通のウェブ開発作業をシンプル化するツールとライブラリを提供します。 サーバサイドウェブフレームワークを使わないといけないわけではありませんが、使うことを強くおすすめします。 フレームワークを使うとサイト構築がぐっと楽になるでしょう。

続いて、具体的にどのようなフレームワークがあるのかを見てみます。

定番フレームワーク

フレームワークの世界にも当然流行り廃りはありますが、定番人気のものは短期間(=数年)ではそう大きくは変わりません。 一度人気を集めたフレームワークにはドキュメントやコミュニティなどの資産があるため、新しいフレームワークが既存のフレームワークに取って代わるようなことは非常に稀です。

2017 年 12 月時点では次のフレームワークなどが世界的によく使われています。

  • Ruby on Rails (Ruby)
  • Django (Python)
  • Express (JavaScript)
  • Laravel (PHP)
  • CodeIniter (PHP)
  • Symfony (PHP)

それぞれかっこの中はそれぞれのプログラミング言語です。

フレームワークのポイントのまとめ

フレームワークのポイントをまとめます。

  • フレームワークとはウェブシステムを高品質で効率的に作れる「ライブラリ群」
  • フレームワークは完成品ではなく部品や道具を提供する
  • フレームワークは低レイヤーの問題への解決策を提供する
  • フレームワークの利用者は「職業プログラマ」

続いて CMS の方を見ていきましょう。

2. CMS とは

CMS とは、コンテンツマネジメントシステム( Content Management System )の略で、そのままずばり 「コンテンツ」を効率的に管理するためのソフトウェア です。 「コンテンツ」というのは、主に文章と画像・動画などのメディアのことで、人間が消費することを想定して作られた情報全般を指す概念です。 CMS を使うことで、技術的な知識が無い人でも、効果的・効率的にコンテンツを管理・発信することができます。

ほとんどの場合、 CMS はウェブブラウザで閲覧する「ウェブページ」を管理するものを意味しています。 英語圏では、その他の CMS と区別するために「ウェブページ用の CMS 」のことを「ウェブコンテンツマネジメントシステム」( WCMS )と呼ぶこともありますが、日本でこの用語が使われることはほとんどありません。

CMS は意味の広い概念で、広義の CMS には、「エンタープライズコンテンツマネジメント」( ECM )、「デジタルアセットマネジメント」( DAM )、「ラーニングマネジメントシステム」( LMS )、「カートシステム」といったものも含まれます。

CMS は完成品を提供する

CMS の大きな特徴のひとつは、ドキュメントやマニュアルに沿って適切にセットアップすれば、正しく動作する「完成品」が手に入ることです。 例外もありますが、基本的な構成でサイトを公開するだけであれば、プログラミングが要らない場合が一般的です。

定番 CMS の多くでは、「ログイン機能」「コンテンツ編集機能」「ページウィジェット管理機能」「サイトメタ情報管理機能」といった基本機能を、一度セットアップを済ませればすぐに利用することができます。 この特徴のことを英語圏では「 out-of-the-box 」と呼んだりもします。

ただし、ビジネス用途での CMS ということでいうと、近年は特に、カスタマイズやプログラミングを行わずに CMS をそのままして活用できるようなケースは非常に稀です。 少なくとも、事業戦略の中でウェブを重視して、ウェブを積極的に利用していこうとする場合には、 CMS を利用する場合でも、カスタマイズ・プログラミングは必須とも言えます。

CMS のタイプ

CMS には大きく分けて「 SaaS 型」と「インストール型」の 2 種類があります。

SaaS 型というのは、利用者が自分で設置することなく、ウェブサービスとしてすぐに利用できるタイプのものです。 具体例には、 Wix ・ Weebly ・ Squarespace ・ Jimdo ・ Ameba ownd などがあります。 旧来のブログサービス――ライブドアブログやアメーバブログなども SaaS 型の CMS のひとつです。

インストール型というのは、利用者が CMS の公式サイトからダウンロードして自分でサーバに設置して利用するタイプのものです。 詳しくは後述しますが、インストール型 CMS の代表的なものには、 WordPress ・ Joomla! ・ Drupal などがあります。

ちなみに、世界で最もよく使われている CMS (世界の CMS シェアの半分以上)である WordPress はインストール型の CMS ですが、その名前がそのままドメイン名の wordpress.com というサイトは WordPress 専用の SaaS です。 このあたりは馴染みの薄い方にはよく混乱を招きます。

CMS の想定利用者

CMS が想定する主な利用者は IT の専門的な知識を持たない方も含む「一般の方」 です。

フレームワークがプログラミング知識のある方を対象としているのに対し、 CMS はそれよりもずっと広い層の人たちを対象としています。

ただ、 IT の専門的な知識が無くても利用できるということは、「 CMS はかんたん」「 CMS を使うとプログラミング無しで何でもできる」ということではありません。

CMS 利用のかんたんさは、自動車運転のかんたんさに似ています。 自動車の運転に特別な才能やスキルは必要ありませんが、正しく安全に利用できるようになるにはある程度の学習・練習が不可欠です。 CMS 利用の場合もこの点は同じです。 CMS はかんたんだからといっても、何も学ばずに安全に利用することはできません。

そして、 CMS を利用する場合でも、プログラミング無しでできることには限界があります。 必要なカスタマイズの内容によってはプログラミングの知識が必要となることがあります。

海外のサイトでの「 CMS 」の説明

英語の Wikipedia の「 Content Management System 」の項が、ポイントがまとまっていてとても参考になります。 少し長めですが引用します。

A content management system (CMS) is a computer application that supports the creation and modification of digital content. It is typically used to support multiple users working in a collaborative environment.[4]

CMS features vary widely. Most CMSs include Web-based publishing, format management, history editing and version control, indexing, search, and retrieval. By their nature, content management systems support the separation of content and presentation.

A web content management system (WCM or WCMS) is a CMS designed to support the management of the content of Web pages. Most popular CMSs are also WCMSs. Web content includes text and embedded graphics, photos, video, audio, maps, and program code (e.g., for applications) that displays content or interacts with the user.

Such a content management system (CMS) typically has two major components:

  • A content management application (CMA) is the front-end user interface that allows a user, even with limited expertise, to add, modify, and remove content from a website without the intervention of a webmaster.
  • A content delivery application (CDA) compiles that information and updates the website.

意訳:

コンテンツマネジメントシステム( CMS )とは、デジタルコンテンツの作成と変更を支援するコンピューターアプリケーションです。 一般的に、コラボレーションのある環境で働く複数のユーザーをサポートするために使用されます。

CMS の機能は多岐にわたります。 多くの CMS は、ウェブベースの公開機能、フォーマット管理機能、履歴編集とバージョン管理の機能、インデクシング機能、検索機能を提供します。 通常、 CMS はコンテンツとプレゼンテーション(表示)の分離をサポートします。

ウェブコンテンツマネジメントシステム( WCM または WCMS )は、ウェブページのコンテンツの管理をサポートするために設計された CMS です。 有名な CMS の多くは WCMS でもあります。 ウェブコンテンツには、テキスト、組み込み画像、写真、動画、音声、地図、そして、コンテンツを表示したりユーザーとやりとりしたりするプログラムコード(アプリケーションの場合)などが含まれます。

そのようなコンテンツマネジメントシステム( CMS )は通常 2 つのコンポーネントを持ちます:

  • コンテンツマネジメントアプリケーション( CMA )は、専門知識の少ないユーザーでも、ウェブマスターの助けなしにウェブサイトのコンテンツを追加・編集・削除できるウェブマスターフロントエンドのユーザーインタフェースです。
  • コンテンツデリバリーアプリケーション( CDA )は、その情報をコンパイルしウェブサイトを更新します。

私の翻訳の問題もあるかとは思いますが、そのまま読んでもちょっと何を言っているのかわからない感じですね。 まとめると、要は「 CMS とはデジタルコンテンツを管理するためのソフト」「 CMS はコンテンツ管理に便利な各種機能を提供する」「 CMS は最低限【コンテンツの編集サポート】と【コンテンツ表示】の 2 つの機能を持つことが多い」とのことです。

確かに、 CMS ごとに機能は少しずつ違いますが、コンテンツを編集できる機能と公開できる機能、この 2 つは私が触ったどの CMS にも共通しているように思います。

最後にもうひとつ。 「 Web Content Management 」という、ずばり CMS をテーマにした書籍があるのですが、その中で紹介されている「 CMS の 4 大要素」というのもおもしろいので紹介しておきます。

... Big Four of content management. These are the four features that are required in some form to manage content at the most basic level. They are:

  • Content Modeling
    • ...
  • Content aggregation
    • ...
  • Editorial workflow and usability
    • ...
  • Publishing and output management
    • ...

These are the core pillars of content management. If a system fails at one ore more of these four, it's hard to manage any content effectively.

意訳:

コンテンツ管理の「 ビッグ 4 」。これらは最も基本的なレベルでコンテンツを管理するときに必要となる 4 つの特徴です。

  • コンテンツのモデリング
    • ...
  • コンテンツのアグリゲーション
    • ...
  • 編集ワークフローとユーザビリティ
    • ...
  • 一般公開と出力管理
    • ...

これらはコンテンツ管理の 4 つの柱です。 この 4 つのうち 1 つ以上を満たさないシステムでは、コンテンツを効果的に管理することが難しくなります。

「コンテンツのモデリング」や「コンテンツのアグリゲーション」というものが具体的にどういうことを意味するのかを説明しているとすでに長いこの記事がさらに長くなってしまうので控えておきますが、この 4 つのポイントを「 CMS のコア機能」と考えると、 CMS に対する見通しがとてもよくなります。

この書籍は、日本語訳は出ていませんが、各種概念がわかりやすく整理されており、 CMS に関わる人であれば読めば必ず何か得るところのある良書だと思います。 興味のある方で英語に抵抗の無い方はよければ読んでみてください。

定番 CMS

抽象的な説明だけだと何のことだかよくわからないかと思いますので、よく利用されている有名どころの CMS をいくつかご紹介します。

方法調査はよく知らないのですが、ある程度信頼できる雰囲気のある調査における CMS のシェアランキングのトップ 10 は次のとおりとなっています。

W3Techs 調べ( 2016 ):

  1. WordPress
  2. Joomla!
  3. Drupal
  4. Magento
  5. Blogger
  6. Shopify
  7. Bitrix
  8. TYPO3
  9. Squarespace
  10. PrestaShop

SimilarTech 調べ(本稿作成時):

  1. WordPress
  2. Tumblr
  3. Wix
  4. Jimdo
  5. Web Dot Com
  6. Drupal
  7. Weebly
  8. uCoz
  9. Squarespace
  10. Joomla!

私個人としては確証が無く、「このとおりだ」とも「これはおかしい」とも言えないのですが、 WordPress (ワードプレス)、 Joomla! (ジュームラ)、 Drupal (ドルーパル)、 Squarespace (スクエアスペース)あたりはこの類のランキングではいつも上位に挙がっているので、このあたりはまず間違いなく定番だと考えてよいかと思います。

日本国内の定番 CMS

日本国内では WordPress 人気が海外以上に高く、完全に「 WordPress 一強」な状況です。

CMS といえば WordPress

非専門家の方がひとつだけ覚えておくべき CMS があるとすれば、それは間違いなく WordPress です。

WordPress は b2/cafelog という CMS のフォークとして 2003 年に登場して以来コンスタントにシェアを伸ばし続け、近年は不動のトップの位置をキープしています。 トップになってからもシェアは伸び続けており、 2010 年頃には CMS シェア 50% を越え、 2018 年には 60% を越すことが見込まれています(追記: 実際に 60% を越しました)。

CMS 以外で管理されているサイトを含めても、世界の全ウェブサイトのうち 3 分の 1 ほどが WordPress で動いていると言われています。

一昔前「ウェブブラウザといえば Internet Explorer 」という時代がありましたが、 WordPress は今やそれほどの位置づけの存在です。 「 CMS に興味があるが、選択肢が多すぎてどれを選べばよいのかわからない」という場合は WordPress を見ておけばまず間違いありません。

CMS についての説明はこんなところでしょうか。

CMS のポイントのまとめ

CMS のポイントをまとめます。

  • CMS は「コンテンツ」と呼ばれる情報を効率的に管理するためのソフトウェア
  • CMS は「完成品」を提供する
  • CMS といえば WordPress
  • CMS の利用者は、プログラミングなどの専門知識を持たない方を含む「一般の方」

という感じで、フレームワークとは何ぞや、 CMS とは何ぞや、というのをひととおり見ました。

続いて、両者の「違い」を見ていきましょう。

追記 2018/05/21: 次のページは私の別サイトの記事ですが、 CMS に興味のある方にとってはおもしろいかもしれません。 よろしければご覧ください。

3. フレームワークと CMS の違い

まず先にお断りですが、フレームワークも CMS も、厳密に定義された概念ではありません。 そして、 CMS とフレームワークの境界線はあいまいです。 CMS っぽい機能を備えたフレームワークもあれば、フレームワークっぽい機能を備えた CMS もあります。

そのため、フレームワークと CMS の違いに関して 100 人中 100 人が納得する答えを出すことは難しいでしょう。 ここでは私の考えを述べますが、これとは違う考えを持つ人もいます。 どちらが正解でどちらが間違いというわけでは無いと思うので、その点を注意して以下お読みください。

フレームワークと CMS には 3 つの違いがあります。

  • 違い 1: そのまま使えるかどうか
  • 違い 2: カスタマイズの自由度
  • 違い 3: プログラミング知識の有無

違い 1: そのまま使えるかどうか

フレームワークと CMS の大きな違いのひとつは そのまま使えるのかどうか です。

フレームワークは、あくまでも部品と道具を提供するものであり、そのままではウェブサイトとして機能しません。 利用者が自分自身や依頼者のニーズに合わせて組み立てて始めて利用することができます。

一方の CMS は、データベースやファイルなどを適切に用意すれば、そのままウェブサイトとして機能します。 実際には一定のカスタマイズが必要になることがほとんどですが、追加のプログラムを一切書かなくてもウェブサイトとして動作するという点がフレームワークとは異なります。

上に出てきたことばを使えば「 out-of-the-box 」という特性が CMS にはあり、フレームワークにはありません。

おもちゃで喩えるなら、フレームワークは「ミニ四駆」であり、 CMS は「チョロQ」です。 ミニ四駆は、モーター・ボディ・タイヤなどのパーツに分けられて売られています。 利用者がそれを自分で組み立てて電池を入れることで、初めてミニ四駆は走ります。 一方のチョロQの方は、完成品として売られており、パッケージから取り出せばすぐに動かすことができます。

違い 2: カスタマイズの自由度

2 つめに大きな違いは カスタマイズの自由度 です。

フレームワークは CMS よりも自由にカスタマイズすることができます。

フレームワークはパーツや道具を提供してくれるので、利用者はそれらを組み合わせて好きな形で利用することができます。 他方 CMS は、セットアップを済ませればそのまま使えてかんたんな分、使い方に制約があります。

具体的な例として「ログイン機能」をあげることができます。 フレームワークの場合は、ログインページの URL や見栄えなどをかなり自由にカスタマイズすることができますが、 CMS は、ログインページの URL や見栄え・機能がある程度固定されています。 カスタマイズができないわけではありませんが、フレームワークほどの自由度は通常ありません。

「ミニ四駆とチョロQ」の喩えでいうと、ミニ四駆は「どのボディにどのモーター、どのタイヤを組み合わせるか」を自由に決められますが、チョロQは無理やり改造したりしないかぎりそのあたりの自由度はありません。

違い 3: プログラミング知識の有無

1 つめと 2 つめの違いとも関連しますが、フレームワークと CMS のもうひとつの大きな違いは 利用するのにプログラミングの知識が必要かどうか です。

ここまでの説明でおわかりのように、フレームワークにはプログラミングの知識が必要で、 CMS には原則必要ありません。

特にビジネス向けのサイトやシステムをフレームワークで作るとなると、プログラミングの知識の他にウェブ技術・セキュリティ・パフォーマンスなどの知識も最低限必要なので、素人の方がフレームワークを利用してビジネスサイトを作る、というのは原則ありえません。

一方で、 CMS の場合はプログラミング知識は必ずしも必要無いので、素人の方が独学で勉強をして、自社サイトを CMS で作る、というのは(安全ではありませんが)十分達成可能な範囲です。

「ミニ四駆とチョロQ」の喩えでいうと、ミニ四駆で遊ぶには「モーターやギアなどのパーツの知識」と「プラモデルを組み立てられる器用さ」が最低限必要です。一方のチョロQの方にはそのあたりの知識は必要ありません。 フレームワークと CMS にもそれに近い違いがあると言えます。

最後に、これら 3 つのポイントを表にまとめます。

ポイント フレームワーク CMS
そのまま使えるかどうか 使えない 使える
カスタマイズの自由度 高い 低い
プログラミングの知識 求められる 求められない

フレームワークと CMS の違いについての説明は以上です。 フレームワークと CMS がそれぞれどのようなものでどんな違いがあるのか、を理解する参考になったでしょうか。

途中にも少し述べましたが、定番の CMS はフレームワークの機能を兼ね備えている場合が一般的です。 私がよく知る CMS 「 Drupal 」はその典型で、一般的な分類では Drupal は CMS に位置づけられますが、フレームワーク的な特徴を多数備えています。 実際の Drupal を使ったプロジェクトでも、開発の一環でプログラミングを行う場合がほとんどです。 逆にそのような使い方をしないかぎり Drupal を選ぶメリットはまずありません。

ですので、「これはフレームワークだから○○」「これは CMS だから○○」というのは必ずしも成り立たないので、上の違いについてはあくまでも目安程度に捉えていただくとよいものと思います。