はじめてのLiferay─短時間で高度なWebシステム構築

第1回 Liferayとは

この記事を読むのに必要な時間:およそ 4.5 分

業務部品単位でプラグインを開発

LiferayのWebページは「ポートレット」と言う部品から構成されています。ポートレットはグラフィカルユーザインターフェースを構成する部品要素を含むっと言う考えではウィジェットと類似しています。ドラッグ&ドロップ操作でページに貼りつけたり,プロパティを設定することができます。しかし,ウィジェットはドロップダウンリスト,テキストボックス,ラベルなど粒度の小さいグラフィカル要素ですが,ポートレットは天気予報,株価情報,掲示板,チームスケジュール,テロップなどのように粒度が大きい業務機能単位での要素です。勿論,ポートレットのユーザインターフェースにウィジェットを使うこともできます。

図8 プラグインの例(選挙プラグイン)

図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 ワークフローエンジンの置き換え

図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 ポートレット間の呼び出し

図10 ポートレット間の呼び出し

開発者にとってポートレットのもう一つの特徴は,ポートレットはLiferayフレームワークと異なる技術を利用して開発することができます。たとえばポートレットでRubyやPHPを利用して開発することができます。検索機能などのようによく利用される機能のユーティリティクラスやJSPタグリブは用意されていますが,第三者の機能を利用することもできます。たとえば,Liferay6からはユーザインターフェースツールとしてAlloy UIが利用されていますが,ポートレットではjQueryを使うことができます。

著者プロフィール

小沢仁(おざわひとし)

株式会社オージス総研

米シカゴ育ち。シカゴ大学で物理を専攻。Oracle XDKを日本に紹介,Seasar英語ページを作成,ESB Muleコミッタとして同ソフトの日本ローカライズ/日本語サイト構築,WaveMakerの日本語ドキュメントを作成,Apache ManifoldCFコミッタ/日本語ページやMySQL対応を貢献。IEEE APSCC 2009などでSOAの研究発表も行っている。

Liferayに興味をもち,Liferay.comフォーラムでサポートしたりWikiページを作成している。Liferay6およびLiferfay IDEの日本語化や日本語資料も作成している。2012年にLiferay社からグローバルレベルでの「Liferay Community Contributor of the Year 2012」を受賞。

現在,米ナッシュビルで開催されるAgile2013カンファレンスでオフショア開発についての発表申請に時間を費やしている。