Pickles 2 は、"File Based CMS" という構造的な特徴を備えています。 データベースではなく、すべてのコンテンツ情報をファイルだけで構成します。
多くのCMSは、MySQLなどのRDBMS(データベース管理システム)を必要とします。Pickles 2 は、HTML5、PHP、CSVを基本に構成されているため、データベースサーバーにコンテンツを格納しません。 PHP 5.4 以上が動作するウェブサーバーがあれば(あるいは、あなたのパソコン上でも!)、すぐに使いはじめることができます。
データベースを使わないという選択は、すべてのコンテンツ(ページや記事の本文も)を、 Git などバージョン管理ツールで管理することを可能にします。 複数のステージング環境や、ローカルPC上での制作環境の構築を容易にし、 Gitと連動したデプロイシステムとの親和性も抜群です。
従来の一般的なCMSでは、コンテンツデータはデータベース・サーバーに格納されます。しかし、全てのデータが格納されるわけではありません。たとえば、記事に挿入した画像データはウェブサーバー上にファイルとして置かれたり、テーマやデザイン制御に関するコードも一部がファイルとして管理されています。通常、データベースはウェブサーバーとは別のデータベース・サーバーに置かれます。つまり、コンテンツデータは一箇所にまとめて管理されているわけではありません。
もう1つの特徴は、一般ユーザーに公開される領域の一部に管理画面が置かれており、公開サイトと管理画面が不可分な1つのアプリケーションとして実装されています。
CMSは大変便利なツールですが、よくありがちな問題や不便さは、この2つの特徴に起因するものが多いように思います。
このような、従来の一般的なCMSが抱えていた課題を解決すべく、Pickles 2 は "File Based CMS" というモデルを採用しました。
まず、コンテンツデータはデータベース・サーバーに格納しません。すべて、HTMLやCSV、Excel、PHPスクリプトなどのファイル形式で保存されます。 これにより、1つのサーバー(またはPC)のディスク内に、すべてのコンテンツデータを一元的に格納することができるようになりました。
「すべてのデータが一箇所にファイルとしてまとまっている」ということは、さらにもう1つのメリットをもたらします。それは、Git等のバージョン管理システムを用いて、全体としての世代管理ができるようになる、ということです。
Gitとの親和性は、世代管理だけではなく、ポータビリティの観点でも革新的な体験をもたらします。 ほんの幾つかのコマンドを実行するだけで、作業環境の複製やステージング環境の増強、本番環境の冗長化を可能にし、 バックアップも容易に残したり、戻したりすることができます。
もう1つの大きな特徴は、公開するウェブサイトと管理ツールが完全に分離されている ということです。
このことで得られるメリットの1つは、管理ツールを選択できることです。作業者各々の作業内容に合わせて、各々が自分の使いやすいツールを選択することができます。ちょうど、プログラマーが自分の好きなテキストエディタを選ぶ感じと同じです。
カスタマイズする場合も、既存のツールはそのままに、専用のツールを別に開発したり、併用することも容易にできます。 バージョンアップにかかるストレスも低減できるでしょう。
さらに、管理画面とつながっているウェブアプリケーションを一般ユーザーがアクセスできる場所に公開する必要がないという点もメリットです。 ネット上のどこかにいる攻撃者は、アプリケーションの不具合をついて攻撃し、データベースから情報を盗み出そうと企てます。アプリケーションを公開せずに済ませれば、攻撃できるスキを大幅に減らすことができます。
たとえば、どんなシチュエーションのときに、 Pickles 2 を選択してよかったと感じられるでしょうか? たくさんありますが、そのうちのいくつかを挙げてみたいと思います。
一般的なCMSでよく聞かれる課題の1つに、段階的なリリーススケジュールの問題があります。 同じURLの同じコンテンツを、明日、明後日、3日後、4日後と段階的なリリーススケジュールを組み、予め完成した内容をタイマー制御で自動的に公開したい、といった要求です。
データベース型の従来のCMSでは、データベースの設計を変更し、複数の時点の状態を管理できるように改造する必要があり、とても複雑な仕組みが必要です。
File Based CMS の Pickles 2 では、基本的にファイルをコピーするだけ。 何段階でも、無制限に予約配信が可能です。 Gitと連動した配信システムを活用することも容易にできます。
サイト全体に、一定の変更を加えたい場合があります。この要求は、特に初期構築時に発生しがちです。
例えば、ある商品名に誤植があることに気づかないまま、はじめに作ったページを複製して数百ページを生産したあとに気づいて、慌てて修正したい、といった場合です。
コンテンツがデータベース・サーバーに入っている従来のCMSでは、管理画面上にこのような機能があればよいですが、そうでなければ、これだけのためのSQLを書いてデータベースを直接書き換えることになります。当然、その都度、他の作業者の作業を停止し、大掛かりなバックアップをとり、置換スクリプトにミスがあればやり直し、その間誰も作業ができない・・・といったことになりがちです。
すべてがファイルに格納されている Pickles 2 なら、ローカルPC等、他の作業者とは別の環境で実施でき、一般的なテキストエディタの使い慣れた機能で置換処理をすることが可能です。もし、置換作業にミスがあっても、Gitを使ってすぐに戻すことができます。
データベース型のCMSのでは、環境の複製がとにかく面倒です。従って、新しいメンバーが参加したとき、いきなり本番環境で仕事の練習をすることになります。 CMSの種類にもよりますが、特に高機能なCMSでは、管理画面も複雑で、仕事を覚えるのに時間がかかります。最初は想定外のミスも頻発するでしょう。誰しも、はじめはそうやって、たくさんの失敗を経て学習していくものです。 問題は、それが本番環境に直結していること。
ファイルベースの Pickles 2 では、作業環境は容易に複製できます。作業者のローカルPC上にも。
自分だけのローカルPC環境に立てた複製環境なら、どんなに失敗して壊してしまっても問題になりません。どんどん壊して、安心してガシガシ練習できます。
稼働中のウェブサイトをフルリニューアルするときに問題になるのが、 "更新差分反映" です。
多くの場合、リニューアルプロジェクトは 数ヶ月から1年くらいの期間に渡りますが、その間、通常通りの更新を止めるわけにはいきません。なので、リニューアルプロジェクトの終盤に、 リニューアルにかかった数ヶ月から1年分の更新差分を取り込んで反映するという仕事が必要になります。
すべてがファイルに保存され、Gitで世代管理される Pickles 2 プロジェクトでは、 日々の更新用のブランチとフルリニューアル用のブランチとに分けて進め、最後は比較的容易にマージすることができます。
コンテンツの更新と並行してデザインを変更できます。
環境を複製できない従来型のCMSでは、万が一サーバーが重くなってダウンしたとき、手も足も出ません。サーバーが復旧するまで誰も作業ができない、ということもしばしば。
Pickles 2 も、「サーバーがダウンしません!」と言い切ることは難しいですが、もしもサーバーがダウンしたときは、Gitから複製を作って臨時的にローカルPCで作業を続行することなら可能です。 その日の全部の仕事が停止するような事態だけは避けることができるでしょう。