進化を続けるDrupal 6

  Drupal はモジュール型のCMS(コンテンツ管理システム)だ。DrupalではPHPやデータベースを使ったことがほとんど(あるいはまったく)ないユーザでも使えるフレームワークが提供されていて、一人または複数のユーザでウェブサイト、ブログ、フォーラムなどを構築することができる。Drupalはリリースの度により簡単に使うことができるようになっているので、リリースの度に人気が上がっている。最近、Drupal 6.0(と6.1)が1年間の開発を経てリリースされた。それらの新機能と改良点のおかげでDrupalは素晴らしいCMSになっている。

 Drupalの特長は非常に高度にカスタマイズ可能であるところだ。ユーザがPHPを使うことができれば、Drupalはさらにパワフルになる。しかしPHPをまったく使うことができないユーザでも、Drupalの数多くの組み込みモジュールやコントリビュートモジュールや多彩なテーマを活用することによって、素晴らしい見掛けのウェブサイトを構築/運営することができる。なおDrupalはWarner Brothers RecordsPopular ScienceThe Onionなどのサイトでも利用されている。手助けが必要になったときにはDrupalのウェブサイトに行けば、たくさんの便利な文書や、親切なユーザフォーラムを利用することができる。

 私はバージョン3.1からDrupalを使用してきたのだが、メジャーバージョンのアップグレードのことを考えるといつも不安を感じていた。これまでは、アップグレードのたびにデータベースのテーブルの変更に関して必ず問題が起きて、このお決まりの問題を修正する方法についてはDrupalのフォーラムやその他の情報源をインターネットで探すしかないこともあった。しかし新リリースの度にアップグレード作業は次第に簡単になっていて、Drupal 6.0はこれまででもっとも簡単だと言われている。そこで試してみることにした。

新規インストール

 まず最初に、新規にインストールしてみた場合にバージョン3.1からどれほどの向上が見られるのかを確認してみようと考えた。そこでバージョン3.1をインストールした当時と同じように、まずはtarファイルをダウンロードして、ApacheのDocumentRootディレクトリで展開した。次に、これも当時と同じようにコマンドラインで(あるいはphpMyAdminなどの何らかのグラフィカルな管理パネルを使用しても良い)最初のデータベースを作成した。コマンドラインを使うと言ってもこの作業は簡単で、MySQL(またはバージョン7.4以降のPostgreSQL)にログインして、「create database データベース名;」、「GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON database.データベース名 TO 'ユーザ'@'ホスト名'IDENTIFIED BY 'パスワード';」と入力すれば良いだけだ。以前はこの後、データベース内のテーブルの作成、settings.phpファイルと .htaccessファイルの編集、新しいサイトにアクセスして管理者アカウントの作成という作業をしていた。Drupal 6.0では、新しいサイトにアクセスするだけで良い。

drupal1_thumb.jpg
Drupalのインストールウィザード

 サイトにアクセスすると、インストール用のウィザードが表示される。最初の画面では、インストール時とインストール後のサイトで利用するための言語ファイルをインストールすることができる。私の場合は「英語でDrupalをインストールする」をクリックした。するとインストールスクリプトがシステムの要求条件を確認した。次にデータベース名とユーザ名とを入力した。その次の手順では、管理者アカウントの設定と、タイムゾーンやClean URL(記事のページ向けの、暗号のような数字とダッシュで構成される長い文字列ではなく、プレーンテキストのアドレス)を使用するかどうかなどサイト用のいくつかの設定とを行う。基本的なインストールのための作業は以上だ。

 この時点でサイトの見掛けと動作についてのカスタマイズを始めることができる。最初の画面には、作業手順の一覧とそれらに対応する(新しいサイトの管理用セクションの中にある)各設定用ページへのリンクとが表示されて、「ウェブサイトを設定する」、「(モジュール経由の)追加機能を有効にする」、「ウェブサイトのデザイン(テーマ)をカスタマイズする」、「コンテンツの投稿を開始する」などを選択することができる。また文書やヘルプオプションへのリンクも表示される。すべてに関して私の場合は特に問題なく動作した。

アップグレード

 アップグレードのための作業はそれほど簡単ではないが、今回のリリースではかなり改善されている。まずは作業を始める前に、データベースとファイルの新しいバックアップがあることを確認しておこう。次に、ユーザID 1(管理者)としてログインして、サイトをオフラインモードにして、テーマをデフォルト(BluemarineまたはGarland)に戻して、サードパーティ製のモジュールとカスタムコードをすべて無効にする。ここでウェブサイトのDocumentRootディレクトリから既存のDrupalファイルのすべてを削除する必要があるのだが、私の場合はうっかり間違った削除をしてしまわないように、今あるapache2ディレクトリをapache2.bakに名称変更して新しくapache2ディレクトリを作成するようにした。それが終われば、DocumentRootディレクトリで新しいDrupalファイルを展開してから、自分のファイル/画像やサイトのサブディレクトリなどを元に戻せば良い。

drupal2_thumb.jpg
Drupalのアップグレード

 この時点で、「http://www.自分のサイト.com/update.php」を表示すればデータベースをアップデートすることができるようになっているはずだ。この作業はうまく行けばエラーが起こらずに完了する。私のデータベースの場合は約5分で完了して、特に重要でない通知が2、3個表示されたものの、サイトは完全に元に戻って正しく動いた。これは、以前に経験したような重大なエラーや壊れた状態のサイトと比べれば、ずっと良い。とは言ってもまだ作業は残っている。

 私のサイトで使用しているコントリビュートモジュールの多くはまだ6.xにポートされていないのだが、ポートされているものもあったので、それらをダウンロードした。なお6.xではコントリビュートのテーマやモジュールは、サイトのサブディレクトリに保存されるようになった。新しいモジュールを展開して有効にしたところ、これらのモジュールのためにデータベースをアップデートする必要があると新しい組み込みのUpdate Status(アップデートの状況)機能が報告したので、クリックしてそれを行った。カスタマイズしていた私のテーマは6.xでは使うことができなかったので、6.x用のテーマをいくつか試してみてその中から一つを選んだ。

 アップグレード作業では新規にインストールするよりも多くの手順がいくつか必要だったことに加えて、データベーステーブルのアップデートも行わなければならなかったのだが、Drupalのコアパッケージに関して実質的な問題は特に何も起こらなかった。ただし一部のサードパーティ製のモジュールについてはいくらか問題があって、update.phpスクリプトに不具合が出てしまっていた。この問題の原因はコード中のバグか非互換性だとのことで、おそらく近いうちに修正されると思うが、私の場合はモジュールをそのまま使用していても特に不都合はなかった。すべてに関して特に問題なく動いたので、次に新機能を少し調べてみることにした。

新機能

 新しいインストールウィザードやアップグレード作業の向上のほかにも、Drupal 6.0での最初の小さな変更点の一つとして、Update Status(アップデート状況)モジュールの統合がある。Update StatusモジュールはEarl Miles氏によって以前からコントリビュートされていたもので、Drupalやコントリビュートモジュールのアップデートがないかどうかをdrupal.orgで確認する。つまり今回のリリースから、Drupalコアのアップデートの確認機能とシステム統計情報の確認機能がDrupalコアの中に含まれるようになったということだ。このことの利点には、コードがよりクリーンになるということや、コアDrupal開発者がコードを監督するようになるということや、管理しなければならないパッケージの数が1つ減るということなどがある。

 言語サポートについて言えば、インストール時から言語を選択できるようになっただけでなくURLによって表示すべき言語を判断したり、動的な言語の選択が可能な組み込みのインターフェースや、新言語を追加した後に翻訳をインポートすることができる機能が追加されたりなど、複数の言語圏からのユーザを抱えるサイトにとって便利な機能が数多く追加された。これらの機能はオンラインの通販サイトやニュースサイトなどで重宝されるだろう。

 新たに追加された便利な機能の一つとして、メニュー/ブロック管理のためのドラッグ&ドロップインターフェースがある。以前は、ブロック(ページ脇コラムの各項目)とメニュー項目は、指定されたウェイト値(優先順位)によって配置されていた。この方法は、上位に置きたい複数の項目に対して十分に高い優先度となるようなウェイト値を指定しつつ、かつ、それらの項目間に多少の数字を残しておくことができるような先見の明のある管理者にとってはうまく行く。しかしそのような管理者でない場合――私の場合のように――には、メニューやページ脇コラムの順序を変更したり新しい項目を追加するのが厄介なことになってしまう恐れがあった。しかし今回のリリースで、項目を新たな位置にドラッグ&ドロップするだけで良くなった。

 また、性能の向上は常に嬉しいことだが、Drupalはバージョン6.xにおいて、コアのモジュールの機能をより小さな部分に分割して、システムが必要なコードのみをロードすることを可能にすることで、性能の最適化を実現している。それに加えて6.xでは、ページ脇のブロックをキャッシュシステムに含めるようになった。キャッシュ機構は、データベースサーバへの接続回数を削減することによりDrupalを使用しているサイトの高速化に非常に役立つことは実証済みなので、今回ブロックがサポートされたことによって私のサイトのようにブロックを多用しているサイトでは顕著な効果が現われるだろう。

 その他にも、組み込みのOpenIDのサポート、 パスワードの強度チェック、テーマの利用がより簡単になったことなどの興味深い変更点がある。また小さめの向上点としては、投票機能のコードの改良、テーマ化が可能になったユーザシグネチャ、匿名コメントについての情報が保存可能になったことなどがある。

まとめ

 Drupalについての私の最大の不満は今回のリリースでも改善されていなかった。あらゆるCMSにおいて、広告掲載機能はほぼ不可欠だと私は考えている。ところがDrupalでは、ユーザが自分で何とかするかコントリビュートモジュールを使用するしかない。広告掲載をネイティブにサポートしていないという点は、大きな欠点として残ったままだ。

 これまでDrupalについて尋ねられた際には、アップグレード作業のことを考えると、必ずしも勧めることができないこともあった。その理由は作業手順が複雑なためというよりは、エラーが出たりデータベースが壊れたりするためだ。しかしありがたいことに、リリースの度にDrupalの開発者たちはDrupalをさらに良いものへと進展させている。5.xへのアップグレードもその前のバージョンのアップグレードと比較すれば楽だったが、今回の6.xへのアップグレードにはまったく苦労はなかった。

 Drupalは非常に柔軟にカスタマイズでき、またスケーラビリティも非常に高い。ウェブサイトの機能や見掛けをきめ細かくコントロールしたいという人や、他のCMSのような型にはまった月並みな見掛けでは満足できないという人にとって、Drupalは申し分ないだろう。Drupalでは、まったく経験のないユーザから、自分ですべてのコードを書くこともできるが時間を節約したいプログラマまで、あらゆる人々のための基本となるパーツが提供されている。

 今回のDrupalのリリースには感銘を受けた。インストールウィザードからアップグレード作業や性能の向上にいたるまで、すべての点においてDrupalは屈指のCMSへと成長中だ。

NewsForge.com 原文