Drupalを用いたOSSプロジェクトコミュニティ活動の活性化

 私がHaikuプロジェクトのマーケティングリーダに就任した2006年当時における最優先の課題は、同プロジェクトのWebサイトを刷新することであった。Haikuのサイトではカスタムコードを使用していたが、そのままではプロジェクトおよびコミュニティのサイズ的な成長に追いつけなくなっていたのである。管理者サイドからの要望はコンテンツの追加と管理の行いやすい新規サイトへの移行というもので、可能であれば実績のあるオープンソース系コンテンツ管理システム(CMS:Content Management System)の使用が望ましいとされていた。これを受けてWebチームが選択したのが Drupal 4.7である。

 こうして私はWebチームのメンバおよびその他数名の協力者とともに、数カ月がかりでコンテンツキャパシティを増量させたHaikuプロジェクト用の新規Webサイトを構築したのだが、むしろこの件に関してより重要なのは、コミュニティメンバによる参加を活性化できたことであろう。そしてこれも数カ月前の話だが、サンフランシスコの湾岸地区におけるHaikuユーザグループの立ち上げをサポートした際にも、Drupal 5.0を使用したNORCAL-HUG Webサイトの構築を行った。この2つの事例を通じて私が学べたのは、プロジェクトを支えるコミュニティ活動をより活性化するツールとしてのDrupalの利用法である。

 Drupalでのパブリッシュ(コンテンツの公開)はすべてノードという単位を介して行う。各ノードは特定のコンテンツタイプに属し、各コンテンツタイプは一連のフィールド(タイトル、ボディ、アンカーなど)、設定(メニュー、パス、コメントの有無など)、ワークフロー(パブリッシュ済み、フロントページに移動済みなど)と関連づけられている。デフォルトのコンテンツタイプは、ブログエントリ、ページ(固定ページ用)、ストーリ(記事用)である。こうしたコンテンツタイプの追加は、デフォルトでインストールされるモジュール群(フォーラムトピック用のForumモジュールなど)を有効化するか、あるいは追加モジュール(Eventモジュールなど)を新たにインストールして有効化することによって行える。またユーザ独自のコンテンツタイプをカスタムのフィールド群とデフォルトの設定およびワークフローを付けて作成することも可能であり、例えばWebサイトにFAQページを追加したい場合はFAQというコンテンツタイプを作成し、そこにQuestion、Answer、Categoryフィールドを設けておけばいいだろう(実際にはこうした用途を想定したFAQモジュールが既に用意されている)。

 Drupalは強力な機能群をコアに据えた非常に高度なシステムであるが、これをコミュニティベースでのWebサイト構築に適した選択肢の1つとしているのは、豊富な機能拡張用のモジュールの存在と運用面での柔軟性と言っていいだろう。例えばGoogleにあるDrupal Tech Talkの説明(ビデオの再生)によると現状で1,200以上のモジュールが使用可能だとされている。

Drupalにおけるコンテンツ管理の機構

 Drupalは、コミュニティ指向のサイトにおいて参加メンバによるコンテンツ投稿を活性化させるための実績あるツールというだけでなく、ユーザプロファイルのカスタマイズを通じてサイトコンテンツの監視役を安全に増やしていけるようにも配慮されている。

 ここでの登録ユーザに期待される貢献とは、フォーラムでの発言やコメント投稿だけでなく、ニュース記事の執筆や開発者/ユーザ用ドキュメントおよびRFCの整備などの活動である。そしてその種の活動をサポートするにあたっては、コンテンツタイプに必要なカスタマイズを施した上で独自のカテゴリを設け(コンテンツのタグ付け用)、関連するヘルプテキストやワークフローをそれぞれ用意しておけばいい。こうしておくと例えばニュース記事を投稿しようとする登録ユーザは、単一のフォーム内にて、タイトル、タグ、本文(ボディ)テキストを入力するだけで済むようになる。またここでは基本的なHTMLタグによるテキスト装飾および、Image Assistモジュールを利用したテキスト中へのグラフィックの挿入とアップロードに対応させることもできる。

 登録ユーザの投稿するコンテンツは、そのまま直ぐにパブリッシュ(公開)される訳ではない。Drupalにはユーザアクセス制御を目的とした高度な機能が装備されていて、サイト管理者の定義するユーザロールに基づいて誰が何をできるかを細かく規制することが可能であり、例えば特定の登録ユーザに対してはニュース記事の執筆とそのコンテンツ編集は許可するが、それをパブリッシュする権限までは与えないという指定ができるのだ。この場合に投稿されたニュース記事はいったん管理用のキューに入れられ、その後でエディタとしての権限を与えられたユーザによる確認と編集作業を経てから、最終的にパブリッシュするという流れになる。これによりWebサイト管理者は、個々のコンテンツに気をそがれることなく、本来行うべきシステム全体の保守作業に集中できるのである。

 デフォルトのユーザロールとしてはAnonymousおよびAuthenticatedユーザが用意されているが、コアやモジュールでのアクセス制御機能を組み合わせたカスタムロールも独自に定義できるので、事実上無限のユーザロールを使い分けられるようになっている。私たちのシステムの場合はデフォルトのユーザロールに加えて、SuperAdmin(全権限を所有)、Admin(一部のシステム通知を除きその他はSuperAdminと同様)、Dev(あらゆるコンテンツタイプに対する作成/編集権をすべて所有)、Editor(ドキュメントコンテンツタイプに対する作成/編集権をすべて所有)、Bloggerという独自のロールを使用している。

 ユーザアクセスの制御については様々な方式が考えられる。例えばHaikuのWebサイトでは、Haiku開発者および権限を与えられた一部のコミュニティメンバが集うBlog-O-SphereというHaiku関連のブログを運営している。このBlog-O-Sphereに対する投稿ユーザの規制で行っているのが、Devロールはデフォルトでブログへのフルアクセスを許可し、Bloggerロールはプロジェクト運営部の信頼を得たDev以外のユーザというユーザロールの使い分けである。本来このBlog-O-SphereはコアとなるHaiku開発者限定のブログを意図していたのだが、例えば昨年夏のGoogle Summer of CodeにてHaiku関連の作業に従事してくれた学生など、積極的に活動する一部のコミュニティメンバにも門戸を広げていったという経緯を有しているため、こうした態勢にて運用することになったのだ。

 個々のユーザロールにて何を許可し何を禁止するかは、コンテンツタイプとモジュールに対するアクセスと管理の権限を含めて、DrupalのAdministerエリアにあるAccess control画面で行える。こうしたアクセス制御に関するより細かな調整が必要であれば、Content Accessモジュール(ロールおよび執筆者別による個々のコンテンツタイプに対するカスタムビュー、編集、削除)、Forum Accessモジュール(プライベートフォーラムの作成)、Image Gallery Accessモジュール(プライベートギャラリの作成)などを使用すればいい。

コミュニティメンバを活性化させるための方策

 今日Webサイトの利用者は、オンラインコミュニティをターゲットとする各種のWebベースサービスを用いることで、様々な情報の流通に対してより積極的に関わるようになっている。HaikuのWebサイトの場合もService linksモジュールを用いて、Slashdot.org、del.icio.us、Digg、Technoratiなど様々なソーシャルブックマーキング、ブログ検索、ニュースサイトへのリンクの作成をしているが、私はこのモジュールに手を加えて、Haikuプロジェクトに関係深いニュースサイトであるOSNews.comへのニュース記事投稿もできるようにしておいた。更にユーザによる情報伝播を促進させる一環としてHaikuのWebサイトで実装したのが、Forwardモジュールを用いたサイト投稿記事のメール転送機能である。その他に使用しているのがSubscriptionモジュールをベースとした通知システムであり、これにより個々のユーザは各自が関心のある分野でのニュース記事やコメント投稿をフォローできるようになっている。

 一般にオンラインコミュニティは、その参加メンバが地球上のどこに居住しているかとは無関係に運営できるものである。その一方で、個々のメンバの所在地を把握しておいた方が運営がスムースに進むというケースも各種存在し、オープンソース系ソフトウェアコミュニティの例で言えば、特定の国内ないしはローカルで運営されるユーザグループを発足する場合などにこの種の情報が役立つことになる。

 そうした観点でDrupalに用意されているのがGMapモジュールであり、これを用いるとユーザおよびコンテンツノードに関する地理的情報を、グラフィカルないしテキストインタフェースでの住所や座標の入力にて処理できるのである。このモジュールを有効化した後には、個々のユーザによる各自のプロファイルへの住所登録を行ってもらう必要があるが、そうした準備が終了すると各ユーザの所在地が投影された地図が使用可能となる。またGMapモジュールはコンテンツタイプ別の有効化にも対応しているので、例えばイベントノードにロケーションフィールドを設けておけば、イベント開催地が一目で確認できるようになるはずだ。実際HaikuのWebサイトではConference Mapとしてこの機能を利用しているが、ここでの地図作成においてはGMapモジュールだけでなく、クエリによく似た方式でコンテンツビューをカスタマイズするDrupalのViewsモジュールも併用している。

 本稿で触れたDrupalについての概要およびコミュニティ関連の機能説明は、表面をひっかいた程度の解説にしかなっていない。しかしながらこれから新たにオンラインコミュニティを立ち上げようとしている者、あるいは既存コミュニティを活性化させるためのテコ入れ策を考えている者がいれば、Drupalの導入が大いに役立つはずだ。

Jorge G. Mareは、コンピュータに造詣の深いマーケッティングコンサルタントとして活動している。アルゼンチン生まれの同氏は、第2の祖国とも言える日本にてJapan BeOS NetworkというBeOSユーザグループを立ち上げた創立メンバでもあり、現在情熱を傾けているのはHaikuプロジェクトのマーケティングと広報活動である。

Linux.com 原文