« 「視線を導く」方法あれこれ | メイン | MP4/3GPP/3GPP2ファイルフォーマットの基礎知識 »

「サーバサイドCSS」という選択
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

miyakeです。突然ですが、CSSって書くの面倒ですよね。何らかのプログラミング言語を知っている人間から見ると、CSSというのは言語としてはかなり貧弱です。

もちろんCSSはプログラミング言語では無いので、それを貧弱だと言われてもCSSもいい迷惑かも知れません。でも、

div#content { ~ }
div#content div.entry { ~ }
div#content div.entry p { ~ }
div#content div.entry ul { ~ }

こういう大したことをしていないのに、コードがどんどん長くなっていくのを見ると、もう少し何とかならないものかと思ってしまいます。

コピペするにしても、

  1. コピー元にカーソルを移動
  2. 範囲選択してコピー
  3. コピー先にカーソルを移動
  4. ペースト

という操作が必要になります。数が増えてくるとコピペのミスも発生しかねませんし、idやclass名が変わった時の対応も面倒です。まとめて置換して、想定外の部分が書き換わってしまわないとも限りません。

それに、変数も使えないので同じテキストを何度も何度も書く(コピペする)ことになります。プロパティの定義ならまだしも、画像のパスやカラーコードは変数に書けたらなぁと思ったことのある人も少なくないのではないでしょうか。

そもそもCSSの利点として「再利用性が高く、メンテナンスコストを抑えられる」というのがあるはずです。確かに外部CSSファイルにすることで、CSS以前に比べれば随分と効率化されました。しかし、CSSそのものの記述の効率化については今まで目を向けられて来なかった分野ではないかと思います。

サーバサイドCSS

CSSはブラウザが解釈するものなので、最終的にブラウザが読み込むCSSの仕様と挙動そのものを変えることは出来ません。そこで、CSSをサーバサイドで出力するというアプローチを採ります。こういった「サーバサイドCSS」といったようなアプローチはアイデアとしてはありがちだと思うのですが、あまり世の中にはないようです。

div#content { ~
    div.entry { ~
        p { ~ }
        ul { ~ }
    }
}

こんな感じで書けたらいいと思いませんか?

という訳で、手前味噌で恐縮ですが個人で公開している物のご紹介です。

Smart*CSSは、mod_rewrite+php+Smartyで動作するCSSのプリプロセッサです。技術的にはこれといって見所の無いものですが、自分ではなかなか便利に使えています。

今のところ、出来ることと言えば、

  • CSSの構造化(入れ子による記述)
  • 変数の使用

ぐらいで、まだまだなのですが、他にも

  • ブラウザを判定して、最適化したCSSを出力(自動CSS Hack)
  • ブラウザ毎のCSSをキャッシュ or 静的ファイル書き出しに対応
  • ありがちなパターン(Image Replacementなど)をモジュール化

といったところを実装して行けたらいいなと考えています。

普及していないのは何故?

個人的にはこういうツールはもっと普及していていいんじゃないかと思うのですが、現実はそうはいかないようです。

あくまで推測でしかないのですが、世の中のCSSを書く人は

  • Cドライブに保存して動かない物はいらない
  • Dreamweaverでそういう書き方出来ないし
  • 憶えるの面倒だからコピペするよ

みたいな感じなのかも知れません(Dreamweaverでどうなのかはよく知りませんが…)。とは言え、Ajaxの登場などもあり、エンジニアがHTMLやCSSを書くことも増えてきていると思われる昨今、サーバサイドでCSSを拡張するというのはもう少し日の目を浴びていいように思います。エンジニアたる者、生産性の低いキータイプは極力避けたいところです。もっと楽をするためのツールが出て来て欲しいと思いませんか?

まだまだ自分自身煮詰められていませんが、「サーバサイドCSS」というアプローチに可能性を感じて頂ければ幸いです。

最後に

という感じでこの記事を書いてから、ふと「サーバサイド css」でGoogle検索すると、こんな記事を見付けました。

こちらでCSS Server-side Pre-processorというツールが紹介されていました。今し方見付けたばかりで、中は見ていないのですが、どうやら自分が作った物と同様のコンセプトで作られているようです。あまり知られてはいないようですが、海外にはあるんですね… まぁ、自分もせっかく作ったから、もう少し育ててみますか…

トラックバック

このエントリーのトラックバックURL:
http://www.unoh.net/mt32/mt-tb.cgi/952

この一覧は、次のエントリーを参照しています: 「サーバサイドCSS」という選択:

» サーバサイドCSS、Smart*CSSを試してみた from RedLine Magazine
こちらの記事を拝見して興味津々で試してみました。 >>ウノウラボ Unoh Labs: 「サーバサイドCSS」という選択 >>S... [詳しくはこちら]

» CSSとインデントとか from おそらくはそれさえも平凡な日々
F氏のエントリーに反応してみた。 CSSだってインデントした方が可読性が高いのは... [詳しくはこちら]

コメント

『あくまで推測でしかないのですが、世の中のCSSを書く人は
Cドライブに保存して動かない物はいらない
Dreamweaverでそういう書き方出来ないし
憶えるの面倒だからコピペするよ

みたいな感じなのかも知れません』

お前さ、CSS書く人バカにしてんの?

上の方が言ってるのに同意。
少し残念です・・・。

一般的なサーバーだったらファイルをアップするだけで動くというのが基準だと思うのですよ。
個人でされる分に関しては結構ですけどね。

上の上の人。

>お前さ、CSS書く人バカにしてんの?

こんなコメント書くからバカにされてもしかたない。
CSS書く人は程度が低いと思われるのでこんな発言やめてくれ。

Smart*CSS に触発されて…いやインスパイヤされまして、
僕もCSSのSmarty利用にはかなりの可能性があるかと思ってます。

仕様は変わりますが、
手前味噌(弊社の開発者さんに土台を用意してもらった)のフレームワークを公開しています。
http://d.hatena.ne.jp/monta31/20080827#p1

Smart*CSSがDLできず、残念ですがこれからも刺激的なエントリー期待しています!

CSSは簡素に書けば書くほど利便性が上がります。

本来なら、フィックスの部分はid、その他のよく使う雛形はclassを使うことによって、また継承という理念を用いることによって
指定した色を一気に変えることができます。

CSSはとてもよく考えられた規格であると私は思います。
私が思うに、殆どのphp、perlのプログラマーはW3Cの勧告についてやCSSの使い方を知らないのではないでしょうかね?

XMLとノードの概念が頭にあると世界が広がりますよ。
あとなんだかんだサーバーに負荷かけますからね。

と二年前の記事にうっかりコメントしちゃいました。

コメントを投稿


画像の中に見える文字を入力してください。

SaaS提供の高性能CMS RCMS
SaaS提供の高性能CMS
ウノウラボはウノウ株式会社のエンジニア/デザイナーによる大小のアウトプットを行っていく場です。

現在ウノウは絶賛人材募集中です。詳細は求人ページへ。

About

2007年9月10日 17:36に投稿されたエントリーのページです。

ひとつ前の投稿は「「視線を導く」方法あれこれ」です。

次の投稿は「MP4/3GPP/3GPP2ファイルフォーマットの基礎知識」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

ウノウサービス