Drupal とは何だろう? Drupal のコミュニティでコンセンサスが得られているものとしては、
である。 最初の CMS については、疑いない。Drupal の入り口としては、私も Movable Type の再構築に辟易し、ブログの置き換えを狙っていた。要は簡単にサイトが作れるというものである。
ところが、私自身も最近まで気づいていなかったのだが、Drupal は CMS というよりも2番目のウェブアプリケーションフレームワークと考えた方がよいと思うになった。上に挙げたリストのうち、最初の CMS とは、2番目のウェブアプリケーションフレームワークを使って作られたものに過ぎないのだ。私はDrupal のモジュールを初めて作ってみたのがちょうど1年前であるが、そのときすら Drupal の強力なフレームワークの潜在能力にはあまり気づいていなかった。
昨今では Ruby on Rails (ROR) がとかく話題になる。要はこのフレームワークを使うとウェブアプリが簡単に作れるのだという。ROR は私も少し触ってみたことがあって、ROR には決めうち、割り切りの美学みたいな部分がある。その意味では Drupal も ROR に酷似している。決めうちの命名規則、決めうちのディレクトリ、決めうちの URL。モジュール開発における hook のコンセプトに至っては決めうちの API (命名規則)だ。
Drupal を触っていると「なんだ、そんなこと最初から言ってくれればいいのに!」 ということがたくさんある。つまり最初はかなりの(きつい)学習カーブがあるのだ。それは今思えば Drupal 自体がフレームワークだったのであり、どんなフレームワークでも最初は学ぶことがたくさんあるはずだ。そう思うと Drupal は入り口が CMS で少し慣れるとフレームワークを覚えることとなるので、とっつきやすいが長く付き合うには苦労するものなのだと思う。しかし裏返せば、そういう意気込みで Drupal に接するのであれば、こんなに生産性の高いツールはないだろう。
折りしも Drupal のメーリングリストでは、英語版 Wikipedia の Comparison of web application frameworks の項で、Drupal がリストに入っていることが話題となった。ここにある表では○×をつけると Drupal も ROR も、そうたいした差はないように見えるのだが、Drupal は自身が CMS であるが故、セキュリティフレームワークやモジュール管理、そしてテンプレート(テーマ)の管理などがすべてブラウザ上から行えるようになっているところが ROR よりも一歩先を行くといってよいだろう(これは日本語版 Wikipedia のフレームワークの項でも触れられていた)。ROR はスクラッチから作るのはいいが、Drupal の登場によってもうそんな時代じゃなくなっている。Java の世界では Struts → Spring というのがあった。そして一方で ROR があり、その進化は自然な流れなのかもしれないが、Drupal は Struts や ROR の2歩も3歩もリードするものである。
これはつまり家を建てるときのことを考えるとわかりやすい。ROR はプレハブの骨組みだけを提供するが、Drupal は(そのままでも使えるような半)完成品を提供するのである。ROR が骨組みだけというのは、結局は最終製品にする場合はプレハブの外装(=ウェブのデザイン)を作らねばならないから、Drupal は予めテーマとして外装が用意されているということである。もちろん、大きなビルを建てるのにはプロジェクト管理などの要素も入ってくるので、言語としては Drupal の PHP に対して Java の方が適しているものもあるだろう。しかしそれとて、業務アプリでさえ Drupal も十分に対応できる範囲だろう。Drupal / オープンソースで業務アプリのモジュールが少ないのは、その部分だけは利益の源泉であり、外には出てこないからだ(しかしあと10年くらいしたら業務アプリもフリーで提供する人が出てきて状況は変わってくるかもしれない)。
このあたりはなかなか理解されにくい部分であるのかもしれないが、Drupal は明らかに SaaS のプラットフォームになり得るし、次世代のウェブアプリケーションフレームワーク、すなわちウェブ 2.0 時代のサーバ側 OS であるといってよいだろう。