データベースを使わない Flat-File CMS という選択肢

レンタルサーバーの料金差はディスク容量、転送量、ドメイン数、データベース数の差とも言えます。例えば、ロリポップ!におけるプラン間の差は下記の通りです。

プラン エコノミー ライト スタンダード エンタープライズ
月額料金 (標準) 100円 300円 600円 2,300円
ディスク容量 10GB 50GB 120GB 400GB
転送量 40GB/日 60GB/日 100GB/日 無制限
ドメイン 20 50 100 無制限
MySQL × 1 30 100

この比較を見るとデータベース数 (MySQL) の差が大きいように思えます。最廉価プランでは非対応となり、エコノミーでは1つしか利用できません。例え数十個のドメインを使えたとしても、1つのデータベースでは、WordPressのようなCMS (要MySQL) を満足に利用することはできません。もちろん、1つのデータベースを複数のCMSで共有することもできますが、パフォーマンスの悪化や、管理の煩雑性を考慮するとあまりお薦めできません。

それでもランニングコストを下げたいのであれば、Flat-File CMS という選択肢があります。Flat-File CMSはデータベースが不要 (一部は要SQLite) なので、エコノミープランであっても対応するドメインの数だけCMSによるサイトを立ち上げることができます。また、多くのFlat-File CMSはPHPで動作するため、ほとんどのレンタルサーバーで問題なく動作します。

注意
いくら多くのサイトを立ち上げることができても、今度は転送量の上限が問題となります。転送量に関しては上位プランへ移行するしか対応策はありません。

以下、Flat-File CMS のメリットとデメリットを挙げます。

  • メリット
    • インストールが簡単
      • 解凍 (展開) したフォルダをアップロードするだけ!
    • 軽快なパフォーマンス
      • データベースへのアクセスがないため、快適に動作します。
      • CMSによってはキャッシュ機能を備えており、静的ページ並のレスポンスが期待できます。
    • バックアップが簡単
      • 1つのフォルダに全てのデータが保存されます。
      • 面倒なデータベースのバックアップが不要です。
    • カスタマイズのしやすさ
      • シンプルな仕組みのものが多く、(理解すれば) デザインの変更が簡単です。
  • デメリット
    • 情報の少なさ
      • 特に日本語の情報は少なく、トラブルが生じたときに対応しにくいでしょう。
    • ユーザーの少なさ
      • テーマやプラグインに対応しているCMSもありますが、有名なCMS (要DB) と比較して充実しているとは言えません。

Flat-file CMSを利用するには少し注意が必要です。

以下は、W3Techsの2016年4月までのCMSに関する統計情報です。

CMSのシェアを示しています。CMSの中でWordPressが 6割 も占めていることが分かります。

さらに、世界中にあるサイトの 1/4 (26.4%) がWordPressで運用されています。

この情報からも分かりますが、WordPressは国内でも利用者が多く、大抵のトラブルに対する解決策が 日本語 でみつかります。

しかし、Flat-File CMS は利用者が少ないため、簡単な情報を探すことも難しいでしょう。日本語での情報はほとんど見つからないと思ってください。(この記事のように) 興味程度で利用する人はいても、継続して利用している方は多くありません。少なくとも簡単な英語が理解できなければ使うべきではありません。

PHP対応 Flat-File CMS リスト

PHP対応で無料のFlat-File CMSを掲載します。できるだけ有名かつメンテナンスが継続しているものを利用しましょう。マイナーなものは個人が趣味で開発しているものがあり、いつメンテナンスが終了してもおかしくありません。

  • 検索数
    • 「cms 名前」で検索した結果です。
    • 「Yellow」などの一般的な言葉は検索数が多くなるため、参考になりません。
  • 開発終了
    • 1年以上更新のないCMSです。
CMS 開始時期 最終更新日 検索数 メモ
Blozilla 2014 2015/10 59 Markdown / Twig
Bludit 2015/3 2016/2 10,500  
FlatPress 2007 2015/6 19,400 Smarty
Typesetter 2009 2016/4 372,000 旧gpEasy
Grav 2014 2016/2 274,000 Markdown / Twig
Herbie 2014 2015/9 80,400 Markdown / Twig / Yaml
HTMLy 2014 2016/3 7,010 Markdown
Monstra 2012 2016/4 44,500  
nibbleblog 2009 2016/4 14,400  
Phile 2013 2016/4 47,800 Markdown / Twig
Pico 2013 2016/3 480,000 Markdown / Twig
Razor 2008 2015/2 486,000  
Sphido 2014/3 2016/3 93 Markdown / Latte
Yellow 2013 12.2016/4 68,800,000 Markdown
Pluck 2005 2015/10 132,000  
開発終了?        
WonderCMS 2011 02014/22 1,910  
TextPress 2012 2014/3 4,440  
la.Plume 2008 2015/2 401,000  
Baun 2014年 2015年3月 815,000  
Dropplets 2013 2013年9月 4,900  
Feindura 2010 2014年9月 3,010  

参考サイト 20 Flat-File-Systeme im Test

ロリポップ!のライトプランで試してみよう

実際にどれだけ簡単に利用できるか紹介しましょう。

ここでは比較的知名度の高い、GravPico を利用します。対極的なアプリケーションであり、Picoは非常にシンプル、GravはWordPressのようなダッシュボードを備える本格的なものです。

PHPのバージョンを確認しましょう。GravはPHP 5.5以上が必要となり、レンタルサーバーによっては動作しません。

  • Pico / PHP 5.3.6以上
  • Crav / PHP 5.5.9以上
インストールディレクトリについて
この説明ではサブディレクトリにインストールしています。そのため、http://example.com/grav/ でアクセスする必要があります。http://example.com でアクセス可能とする場合、ドキュメントルート (ドメインに対する公開ディレクトリ) にインストールするか、mod_rewrite等でリダイレクト設定を行ってください。

Pico

PicoはシンプルなFlat-File CMSです。WordPressのような管理画面 (ダッシュボード) はなく、全ての設定や記事作成をテキストファイルの編集で対応します。仕組みがシンプルな分、理解できればカスタマイズしやすいともいえます。

HTMLは Twig によって生成されるため、オリジナルのデザインを作成するならTwigの知識が必須です。記事は Markdown形式 に対応しており、フォーマットに従ってテキストファイル (.md) を作成します。1ファイル = 1記事 となります。

それではインストールから、デザインの変更、記事の投稿までを試してみましょう。

インストール

  • 公式サイト に移動します。
  • メニューの DOWNLOAD をクリックします。
  • DOWNLOAD PICO x.x.x をクリックします。
  • GitHubに移動します。
  • pico-release-v[最新].tar.gz をダウンロードします。
  • ダウンロードしたファイルを解凍 (展開) します。
  • ロリポップ!のディレクトリにアップロードします。
  • 上図のようにすれば、http://初期ドメイン/pico/ でアクセスできます。
    • 独自ドメイン (例 example.com) に設置するなら、/example.com に アップロードします。

これで、インストールは完了です。簡単ですね。

  • この例であれば http://初期ドメイン/pico/ にアクセスします。
  • 問題がなければデフォルトのページ (利用説明) が表示されます。

デザイン (テーマ) の変更

デザインを変更してみましょう。

Picoの公式サイトでテーマを配布しているので、それを利用します。

注意
とりあえず動かすための手順です。本格的に利用するなら、より詳細な設定が必要となります。
  • 公式サイトに移動します。
  • メニューの CUSTOMIZATION をクリックします。
  • Themesにある MagazineDownload をクリックします。
  • GitHubに移動します。
  • 右側にある Download ZIP をクリックします。
  • ダウンロードしたファイルを解凍 (展開) すると、/magazine-master というフォルダが作成されます。
  • 上図のようにインストールディレクトリにプラグインを導入します。
  • 元の /plugins/plugins.bak とします。
  • テーマの /plugins を移動します。
  • テーマの /content-sample/content-magazine に変更して移動します。
  • テーマの /magazine/themes に移動します。
  • config.php.template を複製し、config.php とします。
  • 図のように config.php を編集します。最低限の設定です。
要変更
$config['site_title'] = 'サイトのタイトル名 (任意)'; 
$config['theme'] = 'magazine';
$config['pages_order_by'] = 'date'; 
$config['content_dir'] = 'content-magazine/';

要追加 (内容は適当でも構いません。)
$config['author'] = 'Your Name';  
$config['authordescription'] = 'Web Developer';
$config['authortwitter'] = 'https://twitter.com/YourUsername'; 
$config['authorfacebook'] = 'https://facebook.com/YourPage';
$config['authorinstagram'] = 'https://www.instagram.com/YourUsername';
$config['authorimage'] = 'http://yoursite.com/images/yourphoto.jpg';
$config['numPerPage'] = 16; // 1ページに表示する記事の数

これで、テーマが変更されます。

  • ページを更新すると、テーマとともにコンテンツも切り替わります。
    • content-magazinecontent-magazine に変更されたため。

記事の投稿

記事を投稿してみましょう。投稿と言っても、管理画面がないためファイル (.md) を作成し編集します。

  • /content-magazine 内に作成します。
  • 拡張子は .md とします。
  • 拡張子を除くファイル名がURLに利用されます。
    • ファイル名は自由ですが、URLに利用可能な文字とします。
  • サンプル記事 page.md を参考に記事を作成します。
    • この例では、sample-page.md とします。
  • Markdown形式に対応しています。
Title: <title> と記事のタイトルに利用。
Template: テンプレート名 (変更不可)。
Thumbnail: インデックスページに表示される画像。
Category: カテゴリー名 (任意)。
Date: <meta property="article:published_time"> と記事の作成日に利用。
Description: <meta name="description"> に利用。
Featured: 記事に表示される画像。
Purpose: プラグイン名 (変更不可)。

Webサイトを更新すると、記事が1つ増えたことを確認できます。

どうですか? WordPressを使わなくても綺麗なサイトを作れます。

管理画面がないため、初心者には敷居が高いかもしれませんね。

Grav

Gravは管理画面 (ダッシュボード) を持つ本格的なCMSです。Picoと正反対であり、WordPressライクな使い勝手を実現しています。Picoと異なり、初心者でも簡単に使うことができるでしょう。プラグインやテーマも豊富にあります (WordPressと比べると少しですが)。

Twig によってHTMLが生成され、Markdown形式 で記事を作成できます。1ファイル = 1記事 となりますが、ダッシュボードで操作するならファイルを意識することもありません。

それではインストールから、デザインの変更、記事の投稿までを試してみましょう。

Gravのインストール

  • 公式サイト に移動します。
  • メニューの DOWNLOADS をクリックします。
  • GRAV CORE + ADMIN PLUGIN をクリックします。
    • GRAV CORE は管理ツールが付属しません。
  • ダウンロードしたZipファイルを解凍 (展開) します。
  • ロリポップ!に解凍したフォルダをアップロードします。
  • この図のようにすると、http://初期ドメイン/grav/ でアクセスできます。
    • 独自ドメイン (例 example.com) に設置するなら、/example.com にアップロードします。

これでインストールは完了です。簡単ですね。

管理者用アカウントの作成

  • ダッシュボードにログインするためのアカウントを作成します。
  • http://初期ドメイン/grav/admin/ にアクセスします。
    • 独自ドメインの場合、http://example.com/grav/admin/ にアクセスします。
  • 各項目を入力します。
    • 後からでも変更できますが、UsernameとPasswordはメモしておきましょう。
  • Create User をクリックします。
  • ダッシュボードにログインします。
  • まずアップデートを実行します。Gravが最新の状態に更新されます。

これでダッシュボードの準備が完了しました。

  • http://初期ドメイン/grav/ にアクセスします。
    • 独自ドメインの場合、http://example.com/grav/ にアクセスします。
  • 問題がなければサンプル記事 (利用方法) が表示されます。

これでGravが問題なく動作することを確認できました。

デザイン (テーマ) の変更

それでは、テーマを変更してみましょう。Picoと異なりダッシュボードで変更できるため、ファイル操作は不要です。

  • ダッシュボードにログインします。
  • 左のメニューから Themes を選択します。
  • 上部の +Add をクリックします。
  • ここではブログに適している Materialize を選択します。
  • +Install をクリックします。
テーマについて
ブログだけでなく、様々な用途に対するテーマが用意されています。

– テーマがインストールされました。 – Back to Themes をクリックします。

  • テーマを切り換えます。
  • Materializeの Activate をクリックします。
  • 確認画面が表示されるので、Continue をクリックします。

これでテーマが変更されました。サイトを更新してみましょう。

同じ記事で、テーマだけ変更されたことを確認できます。

プラグインのインストール

このままでは素っ気ないので、タグ機能とアーカイブ機能を追加します。

  • 左のメニューから Plugins を選択します。
  • 上部メニューから +Add をクリックします。

以下のプラグインをインストールします。

  • Taxonomy List
  • Archives

正しく設定された記事が投稿されるまで、プラグインの効果は分かりません。

それでは記事を投稿してみましょう。

記事の投稿

以下の様な構造となるように、複数の記事を作成します。

  • 左のメニューから Pages を選択します。
  • 上部メニューの +Add Page をクリックします。

記事の情報を入力します。

  • Page Title
    • 記事のタイトルです。
  • Folder Name
    • URLに利用されます。WordPressではSlugと呼ばれるものです。
    • その名の通りフォルダ名ともなるため、URLとフォルダ名に適さない文字は利用しないようにします。
  • Parent Page
    • 親子関係を設定できます。
    • ここでは、blogという親ページ (インデックス) を作成して、子ページに各記事を作成します。
  • Page File
    • 記事の種類ですが、テーマの作りに依存します。
    • Materializeの場合、親ページを Blog、子ページを Item とします。
  • Visible
    • 初期設定で構いませんが、すぐに公開しないのであれば No にします。
  • 記事を入力します。
  • Markdown形式に対応しています。
  • 最下部にあるエリア (Page Media) に画像ファイルをドラッグ&ドロップすると、記事に画像が挿入されます。
  • 同じページで記事の詳細な設定を変更できます。
  • タグ機能の効果を確認するには、Tag を作成する必要があります。
  • 記事を作成したら、サイトを更新します。
  • 上部メニューの blog をクリックします。

最初のデザインと比較して、ブログっぽい感じになったと思いませんか?

テーマのカスタマイズ

例えば、サイドメニューにある A Text Widget はソース内に記述してあり、ダッシュボードでは操作できません。

/grav/user/themes/materialize/templates/partials/sidebar.html.twig

変更するには、このTwigファイルを編集する必要があります。