LiferayはWebシステムを構築するためのオープンソースのフレームワーク、およびそのフレームワーク用に開発されたポートレット(機能部品)の集まりです。JBoss, Apache Tomcat, WebSphereなど多くのアプリケーションサーバやWebコンテナ上で動作します。ユーザ/組織管理、Webページ管理、アクセス管理など一般的にWebサイトで使われる多くの機能が標準で搭載されていて、Webブラウザから設定を行うことができます。60以上のポートレットと呼ばれる部品を用意されていて、Webブラウザからコンテンツを編集することができます。
米調査会社であるガートナーは、ポータル市場領域で活動しているベンダ各社の相対的な位置関係を示すマジック・クアドラント でLiferayをIBM、Microsoft、Oracle、SAPのような大手企業と同じリーダ領域に位置づけています。Liferayはオープンソースポータルの世界市場シェアでは1位です。コミュニティには7万6千人以上のユーザが登録されており、平均毎月5万回ダウンロードされています。IEEE Computer Society 、セサミストリート 、米国海兵隊 、ユナイテッド・カラーズ・オブ・ベネトン 、オーストラリア政府 、アラブ首長連邦政府 などさまざまな分野のWebサイトでも使われています(図1 ) 。
図1 Liferayの導入事例
インターネットのサイトに限らず、イントラネットのWebサイトでもLiferayは利用されています。図2 は1つのLiferayサーバに社外、社内全社、プロジェクトチーム、個人ページを作成した例です。この他にもグループ企業ごとや組織ごとのページを作成することもできます。
図2 複数の用途のページを作成した例
本記事は、このように海外で急成長しているWebフレームワークLiferayとはどのようなソフトウェアなのかを知ってもらうために、導入および簡単なWebサイトの構築から、段階的により高度なWebサイト構築のための説明を行います。
Liferayの特徴
Liferayを使うメリットは「自由」と「安価」です。最近、SaaSのようなサービスも出はじめましたが、これらのサービスの多くは自由にソースコードを変更できません。基本的には提供されたものをサービス提供者が考えた風に利用するだけです。利用者が新しい機能を必要とした場合はサービス提供者にその機能の実装を依頼することになります。実際にその機能が実装されるか、実装されるとしても実装される時期はサービス提供者の判断になります。
このようなSaaSでも、定型業務で利用した場合はコスト削減を図ることができます。しかし、顧客満足度を上げることを目的にした戦略的WebサイトではLiferayのようなWebフレームワークの方が利用者の動向に合わせて何時でも自由にカスタマイズができるので有利になります。
「安価」とは、ソフトウェアを無償で入手することに限りません。Webサイトをセットアップ、カスタマイズ、保守するための、すべての費用を削減することができるっと言うことです。Liferayは既存の商用/無償ソフトウェアと接続することができるように設計されています。なお、データベースやアプリケーションサーバのような必須ソフトウェアは、すべて無償版のソフトウェアを利用することもできます。
サーバ設定やネットワーク設定に詳しくないユーザでもLiferayをセットアップして利用することができます。たとえば、jelastic のようなPaaSを使えば、1クリックでクラウド上にLiferayをインストールして使い始めることができます。VMware、Amazon EC2やMicrosoft Windows Azureの環境を利用する設備が用意されている場合は、BitNamiのLiferayパッケージ を使ってLiferayが必要とするべてのソフトウェアを纏めてインストールすることができます。
Liferayをインストールした後は、Webブラウザからユーザ及び組織の登録を行うことができます。Webページのコンテンツも図3 のようにWebブラウザに表示されるHTMLエディタを使って登録/編集することができます。
図3 HTMLエディタを使ってのコンテンツの作成(例)
ユーザ権限設定、ページ構成、ポートレットのインストール/アンインストール、ポータル設定、ポータル管理(図4 )もすべてWebブラウザから行えるきため、FTPやtelnetなどのツールは不要です。たとえば年に1回、ネット上でアンケートを実施したい場合は、このようにLiferayをクラウド上にセットアップして利用すること短時間かつ安価でWebサイトを立ち上げることができます。
図4 サーバ管理ページ(例)
Liferayを自分のパソコンにセットアップする場合でも、
①Liferayの配布ファイルをダウンロード
②ダウンロードしたファイルを解凍
③Liferayを起動
だけでWebサイトは立ち上げり、Webブラウザからサイトを開くと図5 のようなページが開かれます。
図5 日本語版Liferayの初期画面
Liferayに管理者としてログインした後は、図6 のようにマウス操作でポートレットをページに配置したり、HTMLエディタを使って内容を編集することができます。ユーザ登録、ユーザアクセス設定、サーバ管理もWebページから行うことができます。
図6 日本語版Liferayの初期画面
HTMLエディタを使って新規にWebコンテンツを登録する他に、既存システムのWebページをポータルのページに表示することもできます。SSOシステムと連動していれば、1回ログインするだけで他システムもポータルから利用できます。
これらの機能は、IBM WebSphere PortalやMS Sharepointなど商用製品でもサポートされていますが、Liferayコミュニティ版は無償で利用できるオープンソースソフトウェアです。誰でもインターネットからダウンロードして使うこともできる他に、自分でプログラムを修正することもできます。サーバのCPU/コア数やサーバ台数を増やす場合でもライセンス費を気にせずに増設することができます。
図7 システム構成(例)
無償だからっと言って機能が限られているわけではありません。コミュニティ版でもLDAP、CAS、Oracle Access Manager、OpenSSOやSiteminderと連動してユーザ管理および認証を行うことができます。ehcache共有キャッシュなどにも標準で利用されています。たとえばユーザが増加した場合でも、図7 のようにLiferayポータルサーバを増設して負荷分散させることができます。
グループ企業のポータル管理も効率的に行えるように、Liferayはマルチテナント機能にも対応しています。1つのLiferayサーバ(厳密には1つのLiferayインスタンス)に複数の仮想インスタンスを作成することができます。たとえば、異なるドメイン名をもつグループ会社のWebサイトを1つのLiferayサーバに載せることができます。この場合は、ドメインごとにドメインサイトの管理者やデータベースを設けることもできます。
必要とする機能が標準のLiferayに装備されていない場合は、コミュニティや第三者のプラグインを使うことができます。もしこれでも必要とする機能がない場合は、Liferay社に機能追加を依頼することができますが、もし緊急に必要な場合は自分で機能を実装することもできます。Liferayのすべてのソースコードはgithub から入手することができます。リポジトリをフォークして機能を追加したり変更することもできます。その後にLiferay社にプルリクエストを送り、追加/変更したソースコードをLiferayプロジェクトに貢献することもできます。
業務部品単位でプラグインを開発
LiferayのWebページは「ポートレット」と言う部品から構成されています。ポートレットはグラフィカルユーザインターフェースを構成する部品要素を含むっと言う考えではウィジェットと類似しています。ドラッグ&ドロップ操作でページに貼りつけたり、プロパティを設定することができます。しかし、ウィジェットはドロップダウンリスト、テキストボックス、ラベルなど粒度の小さいグラフィカル要素ですが、ポートレットは天気予報、株価情報、掲示板、チームスケジュール、テロップなどのように粒度が大きい業務機能単位での要素です。勿論、ポートレットのユーザインターフェースにウィジェットを使うこともできます。
図8 プラグインの例(選挙プラグイン)
ウィジェットはグラフィカルインターフェースに限った部品要素ですが、ポートレットは業務処理や永続エンティティも含みます。たとえば、Liferayにブログポートレットをインストールすると、jspページ、CSS、Javaクラス用のファイルがインストールされる他にブログに書き込まれてあコンテンツを保存するためにデータベースにテーブルも作成されます。
1つの業務を行うポートレットの集まりをプラグインを呼びます。Webサイト管理者はこのプラグイン単位をポータルにインストールします。Webページの作成者はインストールされてプラグインに含まれるポートレットをページに配置することができます。業務処理が変更した場合は当該するプラグインのみを変更して置き変えることができます。この作業もWebサイト管理者がWebブラウザから行うことができます。
エンドユーザ業務に共通した機能を1つのプラグインにした方がよい場合もあります。たとえば掲示板、Wiki、ブログ、文書ライブラリのすべての内容を一括で検索する場合はこれらのプラグイントとは別に検索プラグインを設けた方が便利です。後でスケジュール管理を追加した場合でも、スケジュール管理プラグインをインストールするだけで、この検索ポートレットでスケジュールの内容も検索することができます。
ワークフロー機能は、Liferayが標準化したプラグインの一つです。ワークフロー機能はWebコンテンツ、掲示板、Wikiなどを公開する前に承認を必要とする場合に使います。これらのポートレットはワークフロープラグインがインストールされている場合に利用するような仕様になっています。コンテンツが追加や変更された場合はワークフロー申請ポートレットで承認申請タスクが作成されます。承認者はコンテンツポートレットごとではなく、ワークフロー承認ポートレットで承認することができます。
お気づきになられたかも知れませんが、APIを合わせれば他ワークフローエンジンを利用したポートレットと置き変えることができます。Liferay社からは自社独自で開発したkaleoというワークフロープラグインが用意されていまが、図9 のように第三者か提供されているLiferay用のjBPMプラグインやActivitiプラグインを利用することができます。LiferayのワークフローAPIに対応していれば、自由にその他のワークフローエンジンを使うこともできます。
図9 ワークフローエンジンの置き換え
索引機能もワークフロ-と同様に置き変えることができます。検索機能とは、登録されたコンテンツの内容を検索する機能です。Webページに登録されたコンテンツの他に文書及びメディアライブラリに登録されたMS WordやPDFファイルの検索も行えるようにします。標準ではLiferayに同梱されたApache Luceneが使われますが、日本語辞書を使っていないために日本語で検索すると検索キーと一致していないコンテンツまで返されてしまいます。日本語検索を改善するために、Apache LuceneをApache Solrに置き変えることができます。Apache Solr3.6からは日本語トークナイザKuromojiが同梱されているため、デフォルトで日本語形態素解析を使うことができます。
図10 のようにポートレットは他ポートレットが提供しているサービスを呼び出すことができます。しかし、ポートレットの規格であるJSR168およびJSR268はポートレットの相互運用規格であり、ポートレットとポートレット・コンテナ(Liferayフレームワーク)間のAPIを定義しているだけであります。ワークフロー、ユーザ、組織のようにLiferayが既に提供している機能を利用する場合は、Liferayが提供しているAPIに合わせる必要があります。Liferayで提供されていないサービスを新規に作成する場合は、自由にAPIを設計することは出来ますが、多くの他開発者に利用して頂くためにできるだけ汎用的に設計することを推奨します。
図10 ポートレット間の呼び出し
開発者にとってポートレットのもう一つの特徴は、ポートレットはLiferayフレームワークと異なる技術を利用して開発することができます。たとえばポートレットでRubyやPHPを利用して開発することができます。検索機能などのようによく利用される機能のユーティリティクラスやJSPタグリブは用意されていますが、第三者の機能を利用することもできます。たとえば、Liferay6からはユーザインターフェースツールとしてAlloy UIが利用されていますが、ポートレットではjQueryを使うことができます。
開発ツール
Liferayとは、Hibernate、ehCache、SpringFramework、jQuery、Alloy UI、jFaces、Vaadinなどを使ったフレームワークです(図11 ) 。これらを直接利用してLiferayの機能を拡張/変更することもできますが、Liferay本体をより容易にアップグレードするために、Liferay本体のソースコードとカスタムコードを区別しておくことが推奨されています。
図11 Liferayのアーキテクチャ
ポートレット、フック、レイアウトテンプレート、テーマ、extプラグイン、Webの6種類のプラグインでLiferayの機能を拡張/変更することができます。これらの仕組みは元のLiferayのソースコードを直接修正するのではなく、Liferayの実行環境にプロパティファイル、CSSファイルおよびJavaクラスなどのファイルを追加してLiferayの既存設定及びクラスをオーバライドします。Liferay本体をバージョンアップした場合でも、作成したプラグインを再びインストールするだけで変更を再適用することができます。従来のように修正した箇所を新バージョンのソースコードに反映して、ソースコードをビルドする必要はありません。
Liferayにはこれらのプラグインの開発を支援するためにサービスビルダとLiferay IDEが用意されています。サービスビルダとはXMLファイルに定義されたサービスインターフェースを元にデータベーステーブル作成用のSQLスクリプト、Java API、WSDD、JSON、Hibernate用のJavaクラスを生成するツールです。Javaメソッドを追加したり、サービスインターフェース定義を修正した後に再ビルドすると関連してたファイルが更新されます。
LiferayプラグインはコマンドラインからAntやMavenでも生成することもできますが、環境のセットアップやコーディング、デバッグを考えるとLiferay IDEを利用した方が生産効率が良いです。Liferay IDEはLiferayプラグインの開発を支援するEclipse用のプラグインです。プロジェクトウィザードを使うとコーディングなしでデプロイできる簡単なプラグインを生成することができます(図12 ) 。また、Eclipseから生成したプラグインをLiferayサーバにデプロイすることができます。
図12 Liferay IDEの画面(例)
Liferay社の歴史
Liferayは2000年にBrian Chan氏によって米国で開発されました。最初は通っていた教会のWebサイトをより簡単に作成/保守するために開発されましたが、完成したシステムは一般ユーザにはまだ複雑すぎて採用されませんでした。ただし2004年に教会の仲間と米ロサンゼルスに会社を設立してLiferayポータルの販売を開始しました。当時はまだ開発者が足りないため、オープンソースにして多くの開発者が機能を追加することができるようにしたそうです。
簡単かつ安価にWebサイトを構築して運用することが評価され、今でも急成長しています。2013年1月現在ではロサンゼルス、シカゴ、オハイオ、ブラジル、ドイツ、スペイン、ハンガリー、イギリス、アイルランド、フランス、中国、日本、インドに事務所が設立され累計350人以上の従業員が365日24時間、開発とサポートを行っています。
Liferayの制限事項と対策
Liferay.comサイトからダウンロードできるLiferayおよびLiferay IDEは、残念ながら日本ユーザ向けの対応はされていません。Liferay IDEのメッセージはハードコードされているため、Pleiadesを使っていてもメッセージは翻訳されません。Liferay本体のメッセージは外部パロパティファイルへ切り出されていますが、機械翻訳された日本語メッセージが目立ちます。
日本ユーザ向け対応よりも重大な問題は、Liferay.comサイトからダウンロードできるコミュニティ版にはセキュリティパッチが当てられていないことです。個人や社内のみで利用する場合には問題はないかも知れませんが、インターネットで利用する場合はセキュリティリスクがありますので利用を推奨しません。
これらの問題に対応したのが日本語版Liferay IDEおよび日本語版Liferayです。日本版Liferay IDEのメッセージはプロパティファイルに抽出されているため、Pleiadesプラグインを利用するとメッセージは和訳されます。日本語版Liferayのメッセージは随時改善されています。Liferay社から公開されたセキュリティパッチも当てられています。このような理由から、日本版Liferay IDEおよび日本版Liferayを使うことを推奨しています。
まとめ
Liferayは自由かつ安価に使えるWebフレームワークです。オープンソースのため、自分でも新しい機能を追加したり、既存機能を変更することができます。LiferayにはWebシステムの総保有コスト(TCO)を低減するために効率的にセットアップ、開発、保守ができる仕組みとツールが用意されています。更に、既に多くの企業サイトや政府のサイトでの利用実績が豊富なため、安心して利用することができます。日本でもSCSK株式会社がオープンソースソフトウェアを格付けている「OSS Radar Scope 」で29位にランキングされて注目されています。
全世界のLiferayコミュニティにはすでに7万6千人以上のユーザが登録され、毎日活発な活動が行われています。無償なコミュニティ版に付いても、コミュニティに問い合わせると回答されることが多いです。日本語版Liferay、および日本語版Liferay IDEもSourceforge.jpに公開されていて 、随時日本語でも情報が公開されていますのでお試しください。