C言語でCMSを書く その1 HTMLの最大の問題点

記事
IT・テクノロジー
CMSの話の前に
さて、前回のブログ↓は、とても気合をいれて長いものになってしまったので、内容も濃いし、ちょっと今回はリラックスして、短めに行きます。

まずCMSとは、Content Management System の略です。WEBページのコンテンツ、つまり、文書とか、画像、動画、音声、添付のデータファイルとかを管理する仕組みのことです。で、WEBページはまず基本的にHTMLで書かれているわけで、CMSがやることは、ページの内容(content)を管理して、その内容からHTMLファイルを生成して、ブラウザに送り返すことをします。
もちろん、CMSなんかなくても、HTMLでベタに書いておけば良いのですが、そうなると、内容を更新するときには、いちいちHTMLファイルを変更して、それをWEB サーバにアップロードする必要があって、ブラウザから簡単に内容を更新とか、画像を追加とかをすることはできません。だから、ページの更新とか内容の追加とか、そういうことを簡単にできるようにするには、CMSが必要だということになります。つまり、CGIを使ってページをアクセスできるようにして、ブラウザからのリクエストを処理して、ページをの内容を書き換えたりできないと行けないわけです。そのあたりのことは、最初のブログに書きました。
で、CMSは、実体としては、CGI + データベースサーバの形をとっていて、通常は、PHPなどで書かれていて、PHPがブラウザからのリクエストを読み込み、そしてデータベースにソケット通信でアクセスして、データベースの内容を取り出したり、あるいはデータベースの内容を更新したりして、その結果をHTMLファイルにして、ブラウザに送り返す、というわけです。

で、これを実現する場合に、やたら面倒になる理由というのが、実はHTMLができた当初からの、とんでもない二つのHTMLの仕様にあります。

HTMLのとんでもない仕様、二選
まず最初のトンデモ仕様は、HTMLで記述されたページは、かならず、<html> と </html>というタグ(要素かな)の中に書かれていなくてはならない、という話です。え?当たり前じゃん、と思うでしょうけれど、そうでもありません。プログラミング言語では、こんなことはありませんよね。プログラムを記述した最初の行に
begin{JavaScript}
最後の行に
end{JavaScript}
と書け、なんてことは有り得ないわけです。

そして、もう一つのトンデモ仕様は、ページ内に、イメージを貼り付けるには、<img ...>があって、動画を貼り付けるには、<video ..></video>があるのに、HTMLで記述されたページを貼り付ける方法がないのです。これは、最初のとんでもない仕様と関係しています。たとえば、<include ...></include>というタグがあって、その中で、
<include href="aFile.html"></include>
とか書いたとします。これがあったらとても便利です。
ところが、その aFile.htmlというファイルはHTMLファイルなので、最初のトンデモ仕様によって、<html>...</html>が書かれています。そうすると、この<include href="aFile.html" >の中身を展開した場合、<html> ... </html>が入ってるので、HTMLファイルとしては、<html>  .. <html> ... </html> </html>という形で入れ子になってしまって、HTMLファイルとして破綻しますよね。
実は、JavaScriptでは、これを実現する方法があります。<html> </html> の無い inner-htmlと呼ばれる形式のファイルをAjaxなどで取り寄せて、inner htmlファイルを書き出してしまう、という方法ですね。それと、WordPressでは、includeが使えるように拡張されています。

しかし、この <html></html>がないinner-htmlを、親のHTMLに貼り付けることができないのは、ほとんど大ボケなトンデモ仕様です。
その結果、1990年代前半にWEBページが普通の人も使えるようになってきたときに、ホームページにくっつけるアクセスカウンタが大変なことになっていたのです。カウンタの内容は単純にテキストで数字を出すだけですが、そのテキストの数字をHTMLで書かれたページ埋め込む方法がなかったのです。そこで、当時のアクセスカウンタは、全部<img>タグで画像でカウンタを表現するCGIを呼び出すようになっていました。後に、HTMLでも、<object>というタグが登場して、まあ、かなりincludeみたいなことができるようになってきたのですが、使い勝手悪いです。

ということで、仮に、<include> とか <inner-html>といったタグがあったとしたら、CMSはとても簡単に作れるようになるはずです。っていうのは、WEBページの型枠だけ書いておいて、その中身は、<include>タグで全部 CGI呼び出しで、中にいろいろ貼り付けるだけですから、たぶんPHPの記述もとても簡単。かつ、たいがいのことをするのに、JavaScriptでAjaxなんて使う必要もありません。たぶん、WEB制作が、WordPress一辺倒になってきた理由の一つは、こういう、include に相当するものがない、というのがかなり大きいと思うわけです。

まとめに変えて
というわけで、今回はこれだけです。たんなるグチで終わってしまった感じがしますが、次回から、C言語でCMSを書く、っていうのを本格的に始めます。まず最初は、WEBページを表現する構造体 element について書いて参ります。
それでは、また。







サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す