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

今回は、「ウェブの専門家ではないがウェブを活用する必要がある」という方を対象に、ウェブサイト構築に利用される 2 つの技術ーー「ウェブフレームワーク」と「 CMS 」について、その特徴と違いをまとめてご説明してみたいと思います。

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

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

先にフレームワークの方から見ていきましょう。

1. フレームワークとは

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

省略しない形で「ウェブアプリケーションフレームワーク」( WAF )と呼ばれたりもします。 「アプリケーションフレームワーク」ということばが先にあって、そのウェブ版なので「ウェブアプリケーションフレームワーク」だそうです。

フレームワークを使えば、 ウェブサイトでよく求められる定番の機能を高品質かつ少ないコストで作ることができます 。 具体的な機能パーツとしては、「ブラウザから来たリクエスト情報の取得」「ユーザー認証」「データベース操作」「ウェブページなどブラウザへのレスポンスの生成」などの機能を提供するものが一般的です。

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

「ツール」ではなく「フレームワーク」と呼ばれている理由は、 使い方がある程度厳しく定められており、その使い方に沿って利用することが想定して作られているため です。 決められた使い方に沿って作る形なので、ゼロから作るよりも自由度は低いのですが、その代わりに品質のよいものを効率的に作ることができます。

イメージとしては、「プログラムの一部でフレームワークを利用する」というよりは「ウェブサイトをフレームワークの上に構築する」というイメージです。

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

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

無印良品のユニットシェルフのシリーズは、棚と柱のパターンがいくつか用意されていて、消費者はそれらを組み合わせて、自分の目的と家の間取りに合ったちょうどよい収納棚を作ることができます。 これを使うと、金属を買ってきて加工して棚を作る場合のような大変さはありませんし、完成品のように形が 1 通りに定められているということもありません。 購入者が各々に、ある程度の範囲の中でカスタマイズを行うことができます。

ウェブ開発そのものを家造りに喩えるなら、フレームワークは、「長さを測る」「釘を打つ」「水平線を確認する」といった小さな作業(低レイヤーの作業)をかんたん化してくれて、建築士や大工さんが「建物全体のスタイルを決める」「レイアウトを調整する」といった大きめの作業(高レイヤーの作業)により多くのエネルギーを注げるようにしてくれるイメージのものです。

フレームワークの想定利用者

利用者についていうと、フレームワークの利用者は 主に「職業プログラマ」 となります。

フレームワークは完成品ではなく部品や道具を提供するものなので、利用するには、そのフレームワークが書かれたプログラミング言語を読み書きできる必要があります。

単純に「プログラマ」ではなく「職業プログラマ」と言ったのには理由があります。 フレームワークは学習コストが高い(と私は思う)ので、仕事でプログラミング経験のある方以外がフレームワークを使って作りたいものを安全・快適に作るのは至難の業だと思います。

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

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 」としては、「エンタープライズコンテンツマネジメント」( ECM )、「デジタルアセットマネジメント」( DAM )、「ラーニングマネジメントシステム」( LMS )、「カートシステム」(つまり通販用パッケージ)と呼ばれるようなシステムも、 CMS の一種と捉えることができます。

CMS は完成品を提供する

CMS の特徴のひとつは、多くの場合、ドキュメントやガイドマニュアルに沿ってセットアップをすれば、動作する「完成品」がそのまま手に入ることです。

多くの人に支持されている定番 CMS の多くは、「ユーザーログイン機能」「コンテンツ編集機能」「ページウィジェット編集機能」「サイトタイトルの変更機能」といった基本機能を、セットアップ後すぐに利用し始めることができます。 この特徴のことを英語圏では「 out-of-the-box 」と呼んでいたりするようです。

ただ、 CMS をビジネスに利用する場合は、「 CMS に求められること」「 CMS にできること」は年々増えていっていることもあり、 CMS が提供するデフォルトの「完成品」をまるごとそのまま利用してビジネス上の目的・目標が達成できるケースは年々少なくなってきています。

CMS のタイプ

CMS には、最近のことばでいえば「 SaaS 型」と「インストール型」の 2 種類があります。

前者の SaaS 型の例としては、 Wix や Weebly 、 Jimdo などがあります。 ライブドアブログやアメーバブログなどのブログサービスも SaaS 型の CMS と捉えることもできるでしょう。 後者のインストール型については、詳しくは後述しますが、 WordPress や Joomla! 、 Drupal などがあります。

ちなみに、世界で最もよく使われている CMS である WordPress は後者のインストール型の CMS ですが、その名前がそのままドメイン名として使われている wordpress.com は 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 は、少なくとも、コンテンツの編集をサポートする機能とコンテンツを表示する機能、この 2 つを備えていることが多い。」とのことのようです。

CMS ごとに機能は少しずつ違いますが、編集できる機能と、いい具合に公開してくれる機能は確かにどの CMS にも共通しているように思います。

最後にもうひとつ、「 Web Content Management 」という、 CMS に関して議論した書籍があるのですが、それが紹介している CMS の 4 大要素も「 CMS とは何ぞや」を理解する上で非常に参考になるのでご紹介しておきます。

... 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!

このリストに挙げられているものの大半は「実際に利用している」という人に出会ったことがない CMS も多いので、私個人としては「このとおりだ」とも「これはちがう」とも言えないのですが、 WordPress (ワードプレス)、 Joomla! (ジュームラ)、 Drupal (ドルーパル)、 Squarespace (スクエアスペース)あたりはこの類のランキングではいつも上位に挙がっている印象があるので、このあたりは少なくとも定番の CMS と考えて差し支えないかと思います。

日本国内の定番 CMS

日本国内に限っていうと、私の感覚値では、 WordPress 人気が海外以上に高く、おおよそ「 WordPress 一強」と言えるような状況です。 また、 Mobable Type やその他の日本語(≒国産) CMS 、日本語ブログサービスもあり、シェアランキングトップの顔ぶれは世界全体のものとは少し異なる印象があります。

CMS といえば WordPress

CMS に詳しくない方がこの中でひとつだけ覚えておくべき CMS があるとすれば、それはシェアトップの WordPress です。

WordPress は b2/cafelog のフォークとして 2003 年に登場して以来毎年順調にシェアを伸ばし続け、近年は不動のトップとなっています。 トップになってからもシェアは年々上がり続けており、 2010 年頃には CMS シェア 50% を越え、 2018 年には 60% を越すでしょう。

CMS 以外の静的サイトも含めても、世界のすべてのウェブサイトのおよそ 1/4 〜 1/3 が WordPress で動いていると考えられています。

かつて「ウェブブラウザといえば Internet Explorer 」という時代がありましたが、 WordPress は今やそれほどの存在になっていて、 CMS を語る上では無視できない存在です。 興味のある CMS がすでにあればそれを触るのがいちばんですが、「 CMS に興味があるけれど、選択肢がたくさんありすぎてどれを使えばいいのか迷っている」という方は、特にこれといったものがなければ WordPress を見ておけば間違いは無いでしょう。

上のシェアを見る場合の注意点として、このランキングはあくまでも「個数ベース」での統計であることに注意が必要です。 例えば、「数万ページある規模の大きめのサイトでも 1 サイト、 1 ページだけ作って放置された誰も見ないブログでも 1 サイト」というカウントになっているようで、これはイメージとしては「高層マンションでも小さな小屋でも 1 軒」という集計です。 サイトの規模などによる重み付けなどが考慮されていないので、あくまでも参考値として捉えるのがよいでしょう。

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

CMS のポイントのまとめ

CMS の説明の最後に、 CMS のポイントをまとめておきます。

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

以上までで、フレームワークと CMS がそれぞれどういうものであるのかというのを見てきました。

続いて、両者はどんなところが異なるのかという「違い」を見ていきたいと思います。

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

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

フレームワークと CMS の違いをご説明します。

先にお断りですが、フレームワークと CMS のいずれも動的な概念であり数学の用語のように厳密な定義があるわけではありません。 また、多くの CMS はフレームワークの機能をあわせ持っています。

ですので、フレームワークと CMS の違いに関して 100 人中 100 人が納得する線引きを行うことは難しいでしょう。 ここで述べることはあくまでも私個人の現時点での考えであるという点にご留意ください。 私個人の考えではありますが、フレームワークと CMS の違いを説明したような書籍やページはあまり見かけないので、このあたりに興味のある方には参考になるのではないかと思います。

フレームワークは「ミニ四駆」、 CMS は「チョロQ」、という喩えをところどころで使いながら、以下ポイントを順番に説明していきます。

  • 違い 1: そのまま使えるかどうか
  • 違い 2: カスタマイズの自由度
  • 違い 3: 利用者にプログラミングの知識を求めるかどうか

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

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

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

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

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

「ミニ四駆とチョロQ」の喩えでいうと、ミニ四駆の方は分解されたパーツとして売られています。 買って箱から取り出しただけでは走らず、組み立てて電池を入れて初めて動かすことができます。 一方のチョロQは、パッケージが取り出してすぐに動かして遊ぶことができます。

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

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

フレームワークには CMS よりも高い自由度があります。

フレームワークが提供するものは完成品ではなく部品や道具なので、利用者が好きなようにそれらを組み合わせることができます。 一方の CMS の方は、セットアップをしたらそのまま使えるようになっているため、デフォルトの挙動がある程度固定のものとして定められています。

例えば、 CMS の場合は、ユーザがログインするための URL や管理画面の見栄えなどが固定で決められている場合が多いですが、フレームワークの場合は URL や管理画面の見栄えなど、基本的なところから利用者が自由に作り込むことができます。

「ミニ四駆とチョロQ」の喩えでいうと、ミニ四駆は「どのボディにどのモーター、どのタイヤを使うか」といったことが自由に決められますが、チョロQの場合は改造したりしないかぎりそのあたりを変更することができません。

違い 3: 利用者にプログラミングの知識を求めるかどうか

違いの 1 2 と結びついていますが、フレームワークと CMS のもうひとつの大きな違いは「利用者にプログラミングの知識を求めるかどうか」という点です。

これまでの説明からおわかりいただけるように、プログラミングの知識が必要なのはフレームワークで、必ずしも無くてもいいのが CMS の方です。

フレームワークを利用するにはプログラミングの知識が必要不可欠で、「コードを書かずにフレームワークを利用する」という形は原則ありません。 特に、個人の趣味ではなくビジネスで安心して使えるレベルのサイトやシステムをフレームワークで作ろうとすると、プログラミングの知識だけでなく、ウェブ、セキュリティ、パフォーマンスなどの知識も最低限必要となってきます。

一方で、 CMS を利用する場合にはプログラミング知識は必ずしも必要ではありません。 CMS をセットアップして、基本的な設定を変更し、「テーマ」と呼ばれる仕組みを使って見た目をカスタマイズすれば、コードを一切書かなくてもサイトを立ち上げることが可能です。

「ミニ四駆とチョロQ」の喩えでいうと、ミニ四駆で遊ぶには、モーターやギア、タイヤなどのパーツについての知識とプラモデルを組み立てられる力が必要です。一方のチョロQの方にはそのあたりの知識は必要ありません。

最後に、以上 3 つのポイントを表にかんたんにまとめます。

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

フレームワークと CMS の違いの説明はこれで終わりです。 フレームワークと CMS がそれぞれどんなもので、その違いが何なのかというのがある程度把握していただけたでしょうか。

途中でちらっと述べましたが、フレームワークと CMS には違いがあるとはいえ、定番の CMS にはフレームワークの機能を兼ね備えているものもたくさんあります。 私が比較的よく知る CMS の「 Drupal 」などはその典型で、一般的な分類でいうと Drupal は CMS に分類されますが、フレームワークと呼んでも差し支えないような特徴を多数備えています。 実際に Drupal はどちらかというとコードを書くプログラマに使われることが多く、プロジェクトにおいてもプログラミング込みで利用される形が一般的です。

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