zowのプログラムな日々

日々のプログラミングとか

CMSについて思うこと

ちょっとしたサイトを作ろうと思うと何かとCMSを頼ってしまう傾向が世の中に蔓延してると思う。いや、それをダメだとは言わないけども「それCMS使う必要ある?」ってサイトも、大掛かりなCMSをインストールして構築してたりする。数ページのサイトなのにwp入れたりするのが典型で、サイトを頻繁に構築する立場からしてみれば、重くなるだけでいい事なんて無いと思う。それでもCMSを入れたくなってしまう気持ちは判らないでもない。

CMSってのはコンテンツ管理のシステムでお手軽サイト作成ツールじゃない、と思ってる。恐らく何でもCMSで作ってしまう人達は「お手軽サイト作成ツール」だと思ってて、インストールすれば見栄えの良いサイトが出来上がって、あとは記事を書くだけというお手軽さに惹かれてるんだと思う。

クラウドソーシングのサービスでwpのプラグインを作って稼いでた事もあったのだけど、その時にほんとそう思った。相談が来る案件はほとんどがCMSで作る必要の無いサイトばかりなのだ。プラグインというプログラムを書いているにも関わらず、そう思うってのはかなりのもんだと思う。

例えば、「某WebAPIからデータを引っ張ってきて、それを一覧表示にしてください」なんて依頼が頻繁に来るのである。管理画面にボタンを付けて、そこをクリックしたらAPIからデータを引っ張ってきて一覧表示するだけ、である。しかも更新は都度手動でボタンをクリックする(自動更新が前提ではない)らしい。サイトを見てみると動的要素は一切無く、その一覧にしても手動更新なので、はっきり言ってwpなんて全く必要ない。プログラムを書いて納品してる側からすれば、これ書いて金貰えるとか、なんて楽なんだと思うんだけども、そういった人がCMSのユーザの大半を占めているのである。

でも実際に自分が使う側に立ってみると、やはり楽なのである。設置するだけでサイトが出来上がっているというのは本当に楽だ。それがたとえ動的要素が無いサイトだとしても、管理運用する上で楽なのである。実際に自分でhtml書いてサイトを作ると、ページを追加する度に各ページに設置してあるメニューを更新する必要があるし、非常に面倒くさい。

話をまとめると、静的サイトなのに動的CMSを使うのに凄い矛盾を感じるのだ。一度作ったらそんなに更新しない様なサイトなのにも関わらず、DB使ってわざわざ重くなるCMSを使うのが腹立たしい。でもCMSを使うと楽だ。ならば静的サイトに向いた静的CMSを作るべきじゃなかろうか、と思ったのがこのCMSを作ろうと考えたきっかけになる。

さて、話は変わって、今回は前回の記事で書いた通り、SQLiteに処理を詰め込んでいる。これには理由があって、このSQLiteのDBファイルがあればどこでもサイトを簡単に作れるようにしたいからである。SQLiteのトリガで大体の処理を書いてしまえば、どのプログラミング言語から扱ったとしても同じサイトを作れるようになる(予定)。あとはサイトを生成する時に、DBから取り出したデータをテンプレート側で加工してやるだけにしたいのだ。プログラミング言語側でやることはCRUD処理だけにしたい。CRUDをトリガにして細かい処理をDB内でおこなってもらう形が理想だ。なんでこんな事を考えたのかと言うと、自分が多言語を扱っているからである。PHPでもRubyでもPythonでも一つのDBファイルから生成されるサイトは同じものになるようにしたい。

そこで問題になるのがテンプレートである。各言語でテンプレートは違う。ところが、Djangoのテンプレートを元にして作られているテンプレートが各言語に結構あるのだ。Pythonだとjinja2でPHPだとTwigになる。ここまで言えば判るだろうけど、このCMSで使うテンプレートはどのプログラミング言語でも認識出来るものにしたい(と思ってる。でも差異を確認してないので、若干違いが出てしまうのかもしれない・・・)。

まとめると、DBとサイトのテンプレートは各言語間共通で、DBへのCRUD処理部分を各言語で実装する形にしたい。こうすれば複数言語で実装できるCMSになることが出来る。それに意味があるのか?なんて質問は野暮だからしないで欲しいが、一応言っておくと、意味は無いのかもしれないが「作りたい」のである。自分が欲しいから作る、って事が今回の裏テーマなのだ。