Drupal

**Drupal**（）は、プログラミング言語PHPで記述されたフリーでオープンソースのモジュラー式フレームワークであり、コンテンツ管理システム (CMS) である。昨今の多くのCMSと同様に、Drupalはシステム管理者にコンテンツの作成と整理、提示方法のカスタマイズ、管理作業の自動化、ウェブサイトへの訪問者や寄稿者の管理を可能にする。

その性能が、コンテンツ管理から幅広いサービスや商取引を可能にすることにまで及ぶことから、Drupalは時々「ウェブアプリケーションフレームワーク」であると評される。Drupalは洗練されたプログラミングインタフェースを提供するものの、基本的なウェブサイトの設置と管理はプログラミングなしに成し遂げることができる。Drupalは一般に、最も優れたWeb 2.0フレームワークの一つであると考えられている。

DrupalはWindows、macOS、Linux、FreeBSD、OpenBSD、Solaris 10、
OpenSolarisを始め、WebサーバApache（1.3以上）またはIIS（IIS5以上）、及びPHP（4.3.3以上）をサポートするあらゆる環境で動作する。Drupalはコンテンツや設定を格納するために、MySQL、PostgreSQL、SQLite、MongoDBのようなデータベース管理システムを必要とする。

## 歴史
DrupalはもともとDries BuytaertがBBSシステムとして書いたもので、2001年にオープンソース・プロジェクトとなった。*Drupal*の綴りは、"drop"（滴）を意味するオランダ語の単語 "Druppel" を、英語に翻字したものである。この名称は、現在は閉鎖されたウェブサイトDrop.orgから取られたもので、ここで使われていたコードがゆっくりとDrupalに発展した。Buytaertはこのサイトを "dorp"（そのコミュニティの様相を指す「村」のオランダ語）と呼びたかったが、ドメイン名をチェックするときにタイプミスをし、それがより良いと考え "drop" を採用した。

2006年5月から2007年4月まで、Drupalは公式サイトから600,000回以上ダウンロードされた。現在では大きなコミュニティがDrupalの開発を支えている。

バージョン8から、開発スピード・コード品質・セキュリティ・保守拡張性の向上を目的として、Symfony を開発フレームワークとして採用している。

## Drupalコア
"Drupal core" として知られるDrupalの公式リリースは、ほとんどのCMSに共通する基本的な機能を備えている。これらには個々のユーザ・アカウントの登録と維持、管理メニュー、RSSフィード、カスタマイズ可能なレイアウト、柔軟なアカウント権限、ログ機能、ブログ作成システム、フォーラムなどを含み、典型的な企業サイト（*[[:en:Brochureware|brochureware]]*）でも、インタラクティブなコミュニティサイトでも構築することができる。

ウェブサイトのコンテンツは、管理者の裁量で登録・匿名ユーザが寄稿することができ、様々な基準（日付、カテゴリー、検索など）で訪問者に対してアクセスさせることができる。Drupalコアはさらに、コンテンツの分類や、アクセスしやすいキーワードで「タグ付け」することができる、階層的なタクソノミー (taxonomy) システムを備えている。

Drupalはバージョン単位のコア機能のアップデートについて、詳細な変更履歴を保持している。

### コア・モジュール
Drupalコアはさらに、コアのみで作成したウェブサイトの標準の機能性を、管理者が拡張することのできる「コア・モジュール」を備えている。

コアのDrupalディストリビューションは、以下を含む多くの機能を提供している。

* 複数ユーザによるコンテンツの作成・編集
* 高度な検索機能
* コメント、フォーラム、投票
* ユーザ・プロフィール
* 多層式のメニュー・システム
* RSSフィードとフィード・アグリゲーター
* 様々なアクセス・コントロール制限（ユーザロール、IPアドレス、電子メール）
* アクセス統計とログ記録
* 高負荷状態でのパフォーマンスを向上させるキャッシュと機能調整機能（スロットル）
* 説明的なURL（例えば "www.example.com/?q=node/432" ではなく "www.example.com/products" のようなもの）
* ワークフロー・ツール（「トリガ」と「アクション」）
* セキュリティ・リリースや新機能リリースのアップデート通知
* OpenIDのサポート

### コア・テーマ

Drupalコアは審美的なルック・アンド・フィールをカスタマイズできる、いくつかの「コア・テーマ」を備え、管理者はこれらのテーマを専用メニューから選ぶことができる。

Drupalコア5.0から導入された "Color" モジュールは、ウェブブラウザのインタフェースを通じて特定テーマの配色を変更できるようにする。この機能はプログラミングの知識を持たない普通のユーザでも、より高度なカスタマイズができるように追加された。

### 翻訳
2008年2月の時点で、Drupalインタフェース用の翻訳はデフォルトの英語に加え、44カ国語が利用可能となっている。いくつかの言語は右から左へと読まれる（例えばアラビア語やヘブライ語）。Drupal 6は多言語におけるコンテンツおよびコンテンツ管理に対し、より一層のサポートを提供する。

### 自動アップデート通知
バージョン6.0から、寄贈されたモジュールやテーマ、あるいはDrupalコア自体の新しいバージョンが利用可能になるとき、Drupalは自動的に管理者へ通知できるようになった。これはインストール済みのDrupalを、最新の機能やセキュリティ修正で最新式の状態に保つのを補助する機能である。

コア・リリースには含まれていないが、バージョン5.x用にも同等の機能を提供するモジュールがある。

## Drupalコアの拡張
Drupalコアは、APIを通じて内部的にアクセスされる「フック」と「コールバック」システムを備えた、モジュール式であるように設計されている。。この設計は、サードパーティーによる「寄贈された」（しばしば "contrib" と省略される）モジュールやテーマが、Drupalコアのコードを変更せずにDrupalのデフォルト動作を拡張したり、置き換えられるようにする。

コントリビュート・モジュールやテーマからDrupalコアのファイルを隔離するDrupalのモジュラー式設計は、柔軟性と安全性を増大し、Drupalの管理者がサイトのカスタマイズを上書きすることなく、Drupalコアの新しいリリースにきれいにアップグレードできるようにする。この分離を維持するため、Drupalの管理者はDrupalコアのソフトウェアを変更することは避けるよう指示されている。

### コントリビュート・モジュール
Drupalのコントリビュート・モジュールは、イメージ・ギャラリー、カスタムのコンテンツ・タイプやコンテンツ・リスト、WYSIWYGエディタ、プライベート・メッセージング、サードパーティー統合ツール等々、様々な機能を提供する。Drupalウェブサイトには、Drupalのコミュニティによって開発・寄贈された2147（2008年6月1日現在）のフリーなモジュールがリストされている。

典型的なDrupalの設置では、以下の2つのモジュールが特に重要となる：。

* **Content Construction Kit (CCK)** は、サイト管理者が動的にコンテンツ・タイプを作成することを可能にする。コンテンツ・タイプは、ウェブサイトのデータベースに格納されるあらゆる種類の情報を表現する。これらにはイベント、招待状、レビュー、記事、製品などが挙げられるが、これらに限定されるものではない。
* **Views** は、サイト訪問者へのコンテンツの検索と提示を容易にする。

CCK APIはDrupal 7でコア・モジュールに統合され、Views（ユーザインタフェース以外の部分）はDrupal 8でコアに統合された。

### コントリビュート・テーマ
コントリビュート・テーマは、Drupalで構築されたサイトのデフォルトのルック・アンド・フィールの適応や交換を行う。

Drupalのテーマは、一般的なサードパーティー製テーマデザイン・エンジンによってもたらされる、標準フォーマットを使用する。多くのDrupal用テーマは、PHPTemplateエンジンや、それほどでもないがXTemplateエンジンで書かれている。いくつかのテンプレートではハードコードされたPHPを使用する。

Drupalのテーマ・システムの初期バージョンは、MamboやJoomla!、あるいはPloneのテーマ・システムより設計指向型でなく、より複雑であるために批判されたが、PHPTemplateとXTemplateエンジンのDrupalへの統合ではこれらの懸案事項のいくつかに取り組まれた。新しいDrupal 6のテーマ・システムは、PHPからHTML / CSSをさらに分離しようとする試みでテンプレートエンジンを活用する。新しいDrupal開発モジュール "Devel" は、Drupal 6を使用するテーマ作成者へ支援を提供する。

## 批評
### オブジェクト指向の欠如とその後の改善
Drupalはもっぱら、オブジェクト指向プログラミング (OOP) ではなく、手続き型プログラミングが用いられる。DrupalはいくつかのOOPの特徴に近づけてはいるが、OOP自体の欠如は以下のことをもたらす。
* 基礎をなすプログラミング言語システムによって強化されたカプセル化がない。これはプライベート・データの使用を排除し、名前空間分離の存在しない実施をもたらす。名前空間の分離がないため、インストールされたモジュールやテーマでのあらゆる関数や変数が、その他のインストールされたモジュール、インストールされたテーマ、あるいはDrupalコアにおけるその他の関数や変数の名前と同じ場合、「死の白画面」（:en:white screen of death）を含む重大なエラーを起こす可能性がある。
* オブジェクトの継承が「弱い」ためコードの再利用があまり効率的ではなく、多態性はレンダリング層でのみ近づけられる。
*バージョン8でコアのバッグエンドにオブジェクト指向の Symfony ライブラリが導入された。

Drupalの擁護論者は、PHPのOOP言語機能は直接実装されていない（PHPバージョン4.xとの互換性を保証するため）にもかかわらず、OOPとアスペクト指向プログラミング（AOP）の原則がDrupalの設計には存在すると反証する。これはDrupalコアの将来のバージョンに移行するのに役立つが、それはバージョン7を皮切りに、PHP5によって提供されるOOPを活用し始めるであろう。Drupal 7は以前のPHPリリースと後方互換ではなくなるであろう。

## セキュリティ対策の記録
2008年1月から5月まで、Drupalコアで5つのセキュリティ脆弱性が報告され、修正された。また、ユーザから寄贈された2147のモジュールのうち、25のモジュールでセキュリティホールが発見され、修正された。

セキュリティホールが発見されるとともに、Drupalコアは規則的に新しいバージョンへと更新される。Drupalサイトの管理者は、“Update Status”モジュールによってこれらの新しいリリースを自動的に通知される。さらに、Drupal.orgは、セキュリティ告知メーリングリスト、全セキュリティ勧告の履歴、セキュリティ・マニュアル、最新のセキュリティ勧告のRSSフィードを保持する。

## ディストリビューション（配布パッケージ）
カスタマイズされたDrupalのディストリビューションには、いくつかの再パッケージ化されたサードパーティー製モジュールが含まれ、DrupalとvBulletinが統合されたvbDrupalを含むいくつかのディストリビューションでは、徹底的な変更が加えられている。

ハワード・ディーンの2004年のアメリカ大統領選挙戦を支援する、多くの独立したウェブサイトのホストとして機能したDeanSpaceには、Drupal 4.2が使用された。ディーンの選挙運動終了後、DeanSpaceは成長してCivicSpace（コミュニティの内部で集団行動をできるようにし、結束的に遠隔地の後援者グループを結ぶ、Drupalに基づく草の根組織化プラットフォーム）となった。このようにCivicSpaceは、もとはDrupal 4.2に基づいた派生ディストリビューションである。

CivicSpaceにおける多くの新機軸が、逆にDrupalプロジェクト自体に組み込まれた。非営利団体や政治運動に特に有用な機能は、Drupal 5.0以上で動作するCiviCRMモジュールで提供されている。

ディストリビューションは、サードパーティー製モジュールであらかじめカスタマイズされ、特定タイプのウェブサイト（例えば、オンライン・ストア、音楽レビューサイト、ブログサイトなど）向けに設定済みの、「あらかじめ作られた」Drupalインストレーションを頒布するために提案された。Drupal 5.xでは、特定の目的に合わせてある「インストール・プロフィール」のセットを提供し、この方向を目指している。

メニューなどの文字フォントを全て日本語表示に置き換えた「Drupal日本語ローカライズ版」もあり、初心者にも簡単に日本語環境を構築できます。

## コミュニティ
Drupalはユーザと開発者の大規模なコミュニティを所有する。Drupal.orgでは300,000を超えるユーザ・アカウントが作成され、2000人以上が開発者アカウントに登録した。。最近の大きなカンファレンスDrupalcon Boston 2008では800人以上を集めた。

多くの活動的なフォーラム、メーリングリスト、ディスカッション・グループがあり、さらに、Freenodeネットワーク上でいくつかのIRCチャネルを運営している。

## 関連項目
* コンテンツ管理システム
* オープンソース
* ポータルサイト
* ブログ

## 脚注

## より詳しい文献

* Douglass, Robert T., Mike Little, and Jared W. Smith. *Building Online Communities With Drupal, phpBB, and WordPress*. New York: Springer Verlag/Apress, 2005. ISBN 1-59059-562-9.
* Gillmor, Dan. *We the Media|We the Media: Grassroots Journalism by the People for the People*. Sebastopol, Calif.: O’Reilly, 2004. ISBN 0-596-00733-7.
* Graf, Hagen. *Drupal. Community-Websites entwickeln und verwalten mit dem Open Source-CMS.* Munich: Addison-Wesley, 2006. ISBN 3-8273-2321-5. 
* Mercer, David. *Drupal: Creating Blogs, Forums, Portals, and Community Websites*. Birmingham, England: Packt Publishing, 2006. ISBN 1-904811-80-9.
* Peacock, Michael. *Selling Online with Drupal e-Commerce*. Birmingham, England: Packt Publishing, 2008. ISBN 978-1-84719-406-0
* Shreves, Ric. *Drupal 5 Themes*. Birmingham, England: Packt Publishing, 2007. ISBN 1-84719-182-7.
* Trippi, Joe. *The Revolution Will Not Be Televised: Democracy, the Internet, and the Overthrow of Everything*. New York: ReganBooks, 2004. ISBN 0-06-076155-5.
* VanDyk, John K., and Matt Westgate. *Pro Drupal Development*. New York: Springer Verlag/Apress, 2007. ISBN 1-59059-755-9.

## 外部リンク

* 公式サイト（英語）drupal.org