ウェブフレームワークと CMS の特徴と違い
今回は、ウェブ技術者以外の方に向けて、サイト構築に利用される 2 つの技術「ウェブフレームワーク」と「 CMS 」について、その特徴と違いを説明してみます。
最初に「フレームワーク」「 CMS 」それぞれの説明をした後に両者の違いについて見ていきます。
- フレームワークとは
- CMS とは
- フレームワークと 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 といえばウェブサイト管理用のツールと考えるのが一般的です。 ちなみに英語圏では「ウェブサイト管理用の CMS 」のことを「ウェブコンテンツマネジメントシステム」( WCMS )と呼ぶことも稀にありますが、日本でこの用語が使われることはほとんどありません(少なくとも私は見聞きしたことがありません)。
CMS は意味の広い概念で、広義の CMS には「エンタープライズコンテンツマネジメント」( ECM )、「デジタルアセットマネジメント」( DAM )、「ラーニングマネジメントシステム」( LMS )、「カートシステム」といったものが含まれます。
CMS は完成品を提供する
CMS の大きな特徴のひとつは、マニュアルに沿って適切にセットアップしさえすれば、ページ管理機能を持った「完成品としてのウェブサイト」がかんたんに手に入ることです。 プログラミングの知識があればできることは増えますが、一般に CMS を利用する上でプログラミングの知識は必須ではありません。
多くの CMS がデフォルトで提供する代表的な機能には、「ログイン機能」「コンテンツ編集機能」「ページウィジェット管理機能」「サイトメタ情報管理機能」等があります。
ただし、ビジネス用途での CMS 利用にかぎって言うと、近年はプログラミングによるカスタマイズを行わずに CMS をそのまま利用するケースはそう多くありません。 ウェブを積極的に活用しようとする企業であればあるほど、プログラミングを伴う何かしらのカスタマイズを行うことが一般的です。
CMS のタイプ
CMS には大きく分けて「クラウド型」と「インストール型」の 2 種類があります。
クラウド型 CMS というのは、サーバーへのファイルの設置等を自身で行わなくても、ウェブサービスとしてすぐに利用できるタイプの CMS のことです。 具体的なブランドとしては Wix ・ Weebly ・ Squarespace ・ Jimdo ・ Ameba ownd などがあります。 旧来のブログサービス――ライブドアブログやアメーバブログなども、ブログに特化したクラウド型 CMS といえます。
インストール型というのは、利用者が CMS の公式サイトからダウンロードして自分でサーバに設置して利用するタイプのものです。 詳しくは後述しますが、インストール型 CMS の代表的なものには、 WordPress ・ Joomla! ・ Drupal などがあります。
ちなみに、世界で圧倒的に最も多く使われている CMS である WordPress は状況が少しややこしくて、 WordPress そのものはインストール型の CMS ですが、 wordpress.com というドメインで提供されているのはクラウド型の CMS となっています。
CMS の想定利用者
CMS の主な想定利用者は IT を専門としない「一般の方」 です。
フレームワークがプログラミング知識のある方を対象としているのに対し、 CMS はそれよりもずっと広い層の人たちを対象としています。
ただし、このあたりはよく勘違いする人がいるのですが、 CMS が誰でも使えるということは「 CMS はかんたん」ということを必ずしも意味しません。
たとえるなら、 CMS のかんたんさは自動車を運転することのかんたんさに似ています。 自動車の運転に特別な才能やスキルは必要ありません。 ある程度の時間をかけて交通ルールと運転方法を学べば、多くの人が安全・快適に自動車を運転できるようになります。 逆に、何の勉強もせず練習もせずに生まれつき安全・快適に自動車を運転できる人はいません。 自動車を正しく安全に利用できるようになるには一定量の学習と練習が不可欠です。 CMS もこれと同じです。 CMS を利用するためにプログラミングや IT の専門知識が必要無いのは確かですが、それは「 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 ):
- WordPress
- Joomla!
- Drupal
- Magento
- Blogger
- Shopify
- Bitrix
- TYPO3
- Squarespace
- PrestaShop
SimilarTech 調べ(本稿作成時):
- WordPress
- Tumblr
- Wix
- Jimdo
- Web Dot Com
- Drupal
- Weebly
- uCoz
- Squarespace
- 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 は当時の Internet Explorer に近い存在です。 「 CMS に興味があるが、選択肢が多くてどれを見ればよいかわからない」という場合は WordPress を見ておけばまず間違いないでしょう(私は特に 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 はフレームワークの機能も兼ね備えている場合が一般的です。 私がよく知る「 Drupal 」はその典型で、一般的な分類では Drupal は CMS に位置づけられますが、フレームワーク的な特徴を多数備えています。 実際の Drupal を利用したプロジェクトでも、プログラミングを行う場合がほとんどです。 逆に言うと、そのような使い方をしないかぎり Drupal を選ぶメリットはまずありません。
ですので、「これはフレームワークだから○○」「これは CMS だから○○」というのは必ずしも成り立ちません。 上で述べた違いについてはあくまでも目安程度に捉えていただくとよいものと思います。
参考
追記 2020/03/17: 別ブログで WordPress と Laravel ( CMS とフレームワーク)の比較についての記事も書きました。興味のある方はご覧になってみください。
追記 2020/11/17: 別ブログで主に開発者以外の方向けの記事も書きました。興味のある方はご覧になってみてください。