ホーム  > X-plus >  XML & 開発

この記事を印刷する この記事を送る はてなブックマークに追加する
テキストリンクコードを取得する

XOOPSとオープンソースの可能性

2006年03月01日作成 


中山 幹敏

最近、本屋さんへ行くと、コンピューター関連の技術書コーナーで「XOOPS」という言葉の入った何種類もの書籍が、平積みされて売られている。XOOPSという言葉を見た第一印象は「いったいどう読むのか」ではないだろうか。それが何かよりも発音の仕方に注意がいってしまう。なかなか粋な命名である。XOOPSは「ズープス」と読む。「ウープス」でも、「エックス、ウープス」でも、「ゾープス」でもない。では、いったいXOOPSとは何者なのか。


XOOPS関連の書籍の書名に、そのヒントがある。幾つか上げてみると『オープンソース徹底活用XOOPSによるポータルサイト構築』1、『XOOPSでつくる! 最強のコミュニティサイト』2、『<多機能なコミュニティサイトを作ろう!> XOOPS独習マニュアル』3、『Customizing XOOPS~自由にデザイン・自在にHack』4などのタイトルがある。これらの書名から、XOOPSは、インターネット上でコミュニティサイトを構築するための強力なツールであり、自由・自在にカストマイズできるような仕組みを持っているであろうことを推察できる。
これらの書名の中で、もう一つ気がかりな言葉は「オープンソース」である。オープンソースとは、プログラムコード(ソースコード)が公開され、無償で利用できるプログラムのことである。改変や機能追加は自由にできるが、再配布には条件がつく場合が多い。オープンソースとXOOPSとの関連も気になるところである。

では、これからXOOPSの技術的な特徴、オープンソースとの関連から見たXOOPSの意義について考察を進めていこう。

XOOPSとは何か

XOOPSは簡単にいうと「コンテンツ管理システム(CMS、Contents Management System)」に分類できるソフトウェアである。コンテンツとは、Web上で提供される様々なデータのことである。コンテンツには、メール、掲示板、リンク集、画像・写真・動画、文書、その他のファイルなどがある。最近ではブログが注目されているが、それもコンテンツといえる。XOOPSは登録されたユーザが、これらのコンテンツを系統的に利用できるような環境と、ブラウザを使ったインターフェイスの画面を提供するソフトウェアである。

たとえば、XOOPSで作成したサイトの例を見てみよう。ここでは、(株)KG情報が東武東上線沿線で発行している「イーノ」というクーポン誌の「イーノweb」を例として取り上げる。まずはトップページ(http://www.ino-web.jp)で、たとえば「グルメ」のボタンをクリックしてクーポン情報のページに移ると、図1の画面が出てくる。この画面はXOOPSで作られたものである。
図1の画面を見ても通常のWebページと変わらない。しかし、詳しく見ると幾つかの特徴がある。グルメ情報のメインページの右側には、幾つかの項目が並んでいる。「街ネタで盛り上がろう!BBS」というコーナーは、XOOPSの「フォーラム」機能を利用している。「みんなで作る画像アルバム」のコーナーは、「写メール」機能を使ったものだ。「プチ投票」のコーナーはXOOPSの「投票」機能を使っている。このサイトにアクセスして、いろいろな機能を試してみるとよいだろう。

こうしたWebを一から自前で開発すると、多大の労力を要することはすぐに分かると思う。しかし、このWebはXOOPSをベースに作成したので、わずか2ヵ月程度で完成できたそうである。後述するように、XOOPSはオープンソースのデータベースMySQLを使っているので、お店の情報の管理も便利であるようだ。
本来のXOOPSは、ユーザの登録や認証を行う機能が標準で入っているが「イーノweb」では、それらの機能を外し、だれでもコンテンツを見ることができるようにしている。コミュニティサイトとして使うなら、ユーザのIDとパスワードを管理したり、ユーザの識別に使える画像や写真という「アバター」の登録も可能にしたりする必要があるだろう。それらもXOOPSに標準で入っている機能である。


図1:「イーノweb」グルメのクーポン情報の画面

このようにXOOPSを使うと、高機能のWebの構築をカストマイズという手段で迅速に行うことができる。しかも、基本的なソフトウェアを無償で使えるのであるから、今後さらに人気が上昇するであろうことが予測できる。
XOOPSはそもそも、コンテンツ管理システムであるPHPNukeの改良版myPHPNukeの次世代バージョンを開発していたメンバーが、2002年1月に立ち上げたプロジェクトである。開発メンバーは当初、日本、中国、台湾、ノルウェー、アルゼンチン出身者だったそうである。XOOPSの命名の由来は「オブジェクト指向的(Object Oriented)」という点に加え、「X」を付けると「格好良い」という程度だったと、開発者の一人の小野和巳氏は語っている。(『XOOPSコミュニティサイト構築ガイド』小野和巳監修、高井守・インフォリグ著、2004年、技術評論社、p.ⅳ~ⅴ)

XOOPSはその後、国際的なプロジェクトとしてさらに拡大して、日本語対応の面で問題が生じてきたため、2005年10月より、日本において、日本語にしっかり対応したXOOPS Cubeという分離プロジェクトが立ち上げられた。XOOPS Cubeのダウンロードや情報提供が行われている日本の公式サイトはhttp://xoopscube.jp/である。本家のXOOPSの公式サイトはそのまま有効であり、URIはhttp://www.xoops.org/である。


図2:XOOPSを動かすのに必要な環境

Cubeとは文字どおり「立方体」である。Secure、Simple、Scalableを3本の柱として発展していくことを期待して命名されたそうである。日本のXOOPS Cubeと国際版のXOOPSの今後の展開に注目していく必要があるが、今のところ日本でサイトを構築するのであれば、XOOPS Cubeを使ったほうがよいだろう。しかし、この記事では、XOOPSとXOOPS Cubeを区別する必要がない場合は、両方を総称してXOOPSという用語を使用する。


図3:一般的な初期画面

XOOPSの技術的な特徴

XOOPSの技術的な特徴に話を移そう。XOOPSはWebサーバー上で、MySQLをデータベースとして使う。またXOOPSのプログラムはPHP言語で書かれているため、PHPの稼働環境も必要である。Webサーバーとしては、一般にApacheを想定しているが、XOOPSでは他の幾つかのサーバーにも対応している。それで、XOOPSを動かすためには図2の環境が必要である。ちなみにApacheもMySQLも、PHPもオープンソースのソフトウェアである。
こうした環境ができたなら、XOOPSのサイトからXOOPSコアパッケージをダウンロードして解凍し、それらをWebサーバーにアップロードする。

ブラウザでアップロードしたディレクトリーにアクセスすると、XOOPSのインストール画面が現れる。インストールの指示画面やウィザードに従って操作していくと、XOOPSのインストールを無事に完了できる。
XOOPS Cubeのサイトには、環境がそろっていれば「5分でインストールできる」とうたわれている。本当に5分でできるのだろうか。実際に、弊社のスタッフが行ってみた。ダウンロードからインストールまでは、確かに5分程度だったそうである。
しかし、そのスタッフが言うにはApache、MySQL、PHPがそろっている環境があったので、簡単にできたが、その環境を一から作るとしたら大変だろうとのことである。参考にしていただきたい。
では、XOOPSの基本機能には何があるのだろうか。その幾つかを紹介する。

まず「ユーザ」の管理である。ユーザの様々な情報の登録、グループ化ができる。XOOPSのサイトは、「イーノweb」のようにユーザ管理をほとんど行わずに一般に公開することも、ユーザとして新規登録をすれば自由に参加することもできる。また、管理者がユーザを登録する形式にして限定されたコミュニティ(ソーシャルネットワークサイトつまりSNS)として運営することも可能である。ユーザはIDとパスワードで認証される。ユーザにとっての一般的な初期画面を図3に示す。このようにXOOPSはサイトのプラットホームを提供するだけで、その上にどのような形態のサイトやコミュニティを構築するかは、運営者のカストマイズにかかっている。


図4:XOOPSのブロックの配置

XOOPSは、Webページのブロックに何を配置するかを指定することにより、Webページの構成を変更できる。これを行うのが「ブロック管理」である。XOOPSのブロックの配置は図4のようになっている。たとえば、XOOPSコアパッケージの標準的なメインページに何を配置できるかは図5の「ブロック管理」画面で推察できる。「イーノweb」の場合、「左サイド」ブロックは使用していない。
次に、XOOPSに標準で入っているコミュニケーション機能の幾つかを概観しよう。まずは「フォーラム」である。フォーラムは、いわゆる「電子掲示板」である。この掲示板に掲載できる発言は、大分類である「カテゴリ」、カテゴリに含まれるテーマに分かれた「フォーラム」、テーマについての発言とそれに関連したやり取り全体を指す「スレッド」、個々の発言である「投稿」に分かれている。フォーラムは比較的自由に発言できるようになっており、モデレータも置けるようになっている。

さらに、フォーラムに似た機能に「ニュース」がある。ニュースは「メイントピック」、「サブトピック」の分類のもとに「ニュース記事」が置かれ、記事に対する「コメント」も付けることができる。フォーラムと異なり、ニュースの記事やコメントの掲載には、管理者による「承認」手続きが必要である。また「掲載日時」と「有効期限」も設定される。記事やコメントの投稿から、その承認、そして掲載までをXOOPSがサポートしている。
「イーノweb」には「プチ投票」というコーナーがあり、「○○の秋と言えば」で連想されるものを投票できる機能が付いていたが、この「投票」機能もXOOPSの基本機能である。「投票」とはいえ、実態はアンケートの収集と集計機能である。問題文と選択肢を設定できる。選択肢に答えがない場合はコメントを返せるようにもできる。
他にも、XOOPSには「FAQ」「ヘッドライン」「リンク集」「ダウンロード」「お問い合わせ」などの機能が備わっており、コミュニティサイトを構築するための基本機能がそろっている。

しかし、今流行の「ブログ」を実現しようと思うと、これらの機能では足りない。こうしたときに活用できるのは、「外部モジュール」である。外部モジュールをダウンロードしてインストールすれば、機能を簡単に拡張できる。XOOPSの場合、外部モジュールも「オープンソース」でなければならないので、無償である。XOOPSは、外部モジュールを作成するための技術情報を公開しており、XOOPS開発者でなくても、第三者が外部モジュールを構築できるようにしている。どんな外部モジュールを使えるかについては、XOOPS Cubeのサイトを参照していただきたい。
「ブログ」に話を戻そう。上田修子著『XOOPSによるポータルサイト構築』の第5章では、例として「weBlog+TrackBack」モジュール(http://r286.com/xoops/)を導入して「ブログ」を実装している。このモジュールでなくても、他にもブログのモジュールはあるので、自分の好みにあったモジュールを選択すればよい。

しばしば使用される外部モジュールに、「カレンダー」と「写メールBBS」がある。カレンダーで有名なものは、「piCal」(http://www.peak.ne.jp/xoops/)というモジュールである。XOOPSのWebページの中にカレンダーを表示したり、そのカレンダーの中にコミュニティに共通の行事や予定を表示させたりすることもできる。
「写メールBBS」(http://hypweb.net)は、画像を添付したメールによって掲示板に発言と画像(たいていは写真)を投稿できるようにするモジュールである。PCからだけでなく携帯電話からでも発言できる。写真をメインにした電子掲示板システムを構築できる。
他にも、たくさんの外部モジュールが世界中で作られ、オープンソースの理念にしたがって無償で公開されるところが、XOOPSの大きな技術的な特徴といえる。
では、画面のブロック構成だけでなく、デザイン全体を変更することはできるのだろうか。XOOPSは、コンテンツ管理システムとして、コンテンツとデザインを分離して管理している。コンテンツは、MySQLのデータベースで管理しているが、デザインは「テーマ」と、そのテーマに属する「テンプレート」として管理できる。

「テーマ」の実体は、「CSS」(Cascading Style Sheet)のファイル、つまりHTMLにスタイルを指定する外部ファイルである。CSSファイルのプロパティを変更するだけで、XOOPSのWebページに表示される色やフォントや文字サイズその他を変更できる。
一方「テンプレート」の実体は、「HTML」のファイルである。このHTMLには、通常のHTMLタグのほかに、PHPとの連携を図るためのSmartyタグが埋め込まれている。変数を指す簡単なSmartyタグは<{$変数名}>の形式をしており、このタグはPHPスクリプトによって外部の文字列に置き換わるようになっている。このテンプレートの修正には、HTML、Smartyタグ、そしてPHPについての知識が必要である。表示項目の簡単な修正であれば、前に述べた「ブロック管理」で対応できる。


図5:ブロック管理画面

こうしてXOOPSをカストマイズしていくなら、「イーノweb」のように、コミュニティ的な要素をもつWebサイトを短期間で立ち上げることが可能になる。
さらに既存の外部モジュールに、必要とする機能がない場合は、独自に「モジュール」を開発することが可能である。こうして作成される外部モジュールを再配布する場合は、ソースコードの公開が必要となる。

オープンソースとしてのXOOPSの持つ意義

「オープンソース」という考え方は、元々UNIX/Linuxの世界での開発経験から生まれたものである。Eric S. Raymondは、1997年に「伽藍とバザール(The Cathedral and the Bazaar)」という論文を発表し、大聖堂のような建物の中で賢者だけでものづくりをするよりは、市場のようなところで誰でも参加できるものづくりのほうが有効なことを論じた。Linuxの成功に基づく観察である。そして、そのRaymondを始めとするグループは1998年2月3日に「オープンソース」という概念を提唱し、WebブラウザであるNetscapeのソースコードの公開を支援したのである。

このようにして始まったオープンソースの流れであるが、その考え方は着実に浸透していった。XOOPSがオープンソースとして登場し、社会に認知されるようになったのも、オープンソースを受け入れる社会的な土壌が育成されていたからである。
では、オープンソースとしてのXOOPSの意義はどこにあるのだろうか。それは拡張可能性にあるといえる。XOOPSは、コミュニティサイトやWebサイトのための、カストマイズ可能なプラットホームを提供すると共に、モジュールというインターフェイスで必要に応じた機能拡張を可能にしている。こうした機構を持ち、オープンソースという形態で登場したことに、XOOPSの大きな意義があると思う。

これはつまり、XOOPSがWebベースのアプリケーションプラットホームとして成長していくなら、Linuxのように一般に広く受け入れられる可能性があることを意味している。また、XOOPSのモジュールとしてソフトウェアの部品化を進めることも可能になる。
しかし、オープンソースで心配な一つの点は、セキュリティである。個人情報の保護が重要になっている今、情報漏洩や外部からのサイトへの侵入には十分過ぎるほどの警戒が必要である。オープンソースのソフトウェアもその点でバグや脆弱性の改善が図られているが、実際の運用ではどのようなデータをWebに入れるかの配慮が必要となるだろう。また、修正のリリースアップやバージョンアップの情報も常に情報収集して、対応していく必要がある。
XOOPSはWebの公開で使用されることが多いので、実際の運営ではこうした注意が必要であるが、用途に注意さえすれば、将来性のある有効なソフトウェアである。読者にも、一度試してみることをお勧めする。

 


脚注
1.上田修子著、秀和システム、2005年。
2.小川晃夫・南大沢ブロードバンド研究会著、ソーテック社、2005年。
3.久岡貴弘著、日本実業出版社、2005年。
4. GIJOE・matchan著、毎日コミュニケーションズ、2005年。



この記事と関連の高い記事

なし



ページトップへ戻る