Liferay

Liferay（ライフレイ）とは、短時間でWebシステムを構築するためのオープンソースのフレームワーク及びそのフレームワークで開発されたポートレット（機能部品）の名称。または、前述ソフトウエアの有償版サプスクリプションを提供している会社の名称。無償のコミュニティ版のフレームワーク及びポートレットのセキュリティパッチ、バッグフィックスなどはコミュニティによって管理／改善されている。
Javaで開発された当ソフトウェアはJBoss, Apache Tomcat, WebSphereなど多くのアプリケーションサーバ上で動く。
従来のWebシステムはWebページ単位で開発されていた。それと比較してポートレットによりWebシステムは1Webページ及びWebページ間で共通機能を1機能部品とする。コンテンツ管理システム (CMS)、SNS、グループウェア用のポートレットが提供されているが文書管理、アンケート、スケジュール管理など90以上の機能部品（ポートレット）が既に実装されている。これらのポートレット及び新機能を開発するためのツールとしてLiferay IDEやService Builderも用意されているため、従来のJava Servlet、Ruby on Rails、PHPよりも安価かつ短期で柔軟なWebシステムの開発ができる。世界中で350,000以上の導入実績がある。
Liferayをカスタマイズして高度なWebサイトを構築することもできるが、IT技術に詳しくないWebデザイナーでも、①ファイルをダウンロードして、②ダウンロードしたファイルを解凍して、③実行するだけで自分のWebシステムを立ち上げることができる。Webブラウザに表示されるHTMLエディタを使ってページを作成することも出来る他にも、ユーザ管理、Webページ管理、セキュリティ設定などもWebブラウザから行うことができる。
提供者によって企業ポータル、CMS、SNS、文書管理システムなどのように用途毎にポートレットをバンドルして配布されている。
概要.
Liferayは、2000年にBrian Chanにより非利益団体が安価にWebシステムを構築／運営できるソフトウエアとして米国で開発された。2004年にLiferay, Inc. が米ロサンゼルスに会社が設立された後に欧州、APAC、南米なので支社が設立された。
近年ではクラウド上での利用が増え、ポータルというより、クラウド上の開発フレームワークとして利用され始めている。
クラウド上のフレームワークとしてliferayを利用するメリットとしては以下が挙げられている：
アーキテクチャ.
Liferayには基本的に3つのレイヤーがある：①業務処理を実装したポートレット、②ポートレットが動作する基盤、③基盤を動作するWebサーバ及びデータベース。
開発.
Liferayはプラグインフレームワークである。プラグインフレームワークの場合は、エンドユーザが要求している機能をプラグイン単位に分割する。プラグインとEJBやWeb Serviceとの大きな違いは、エンドユーザがEJBやWeb Serviceの機能を利用する場合は更にプログラムが必要なことだ。プラグインの場合は表示、ビジネスロジック、エンティティインターフェース定義を3要素を含めることができるため、プラグインをインストールするとエンドユーザがその機能を使うことができる。
アプリケーションサーバを停止しなくても、プラグインは随時にインストール／更新／削除することができるため、アジャイルScrum開発手法でシステムを継続的に開発することができる。その場合は、ユーザストリーがプラグインに該当する。
プラグイン.
Liferayは保守性を向上するため、コミュニティから提供される基盤とユーザ毎に変更されるファイルを区別できるように設計されている。ユーザ差分はプラグインと言うWARで作成できる。コミュニティから新しいリリースが提供された場合は、このWARファイルを新しいリリースに展開（デプロイ）すればよい。
大きく分けて、プラグインは新規に機能を追加するポートレットと、Liferay本体の機能を上書き（クラス及びプロパティのオーバーライド）するテーマ、テンプレート、フック、extプラグインに分けることができる：
サービス指向アーキテクチャ.
Liferayフレームワーク基盤はSOAとして成功しているAmazonのSOA基盤に類似している。フレームワークで使うすべてのエンティティをサービス化している。Liferay上のアプリケーションはこれらのサービスを組み合わせて作成する。なお、これらのサービスはXML定義ファイル (service.xml) から生成される。service.xmlからJavaクラス、WSDL、JSONの他にもデータベース用のSQL文も生成される。SQL文はポートレットをLiferayにデプロイされた時に自動的に実行され、データベースにテーブルが生成される。
それらエンティティサービスを組み合わせて業務サービスを作成する。業務単位でポートレットを設計しておくと、ポートレットを入れ替えることで、業務を変えることができる。従来のコンポーネント化やweb serviceによるSOAはIT処理単位で業務処を行えるようにするには別のソフトウエアを必要としていた。そのため業務処理を変更した場合は数ヵ所の変更が必要とされていたが、ポートレットフレームワークの場合は、各業務で必要とされる機能がポートレット毎に分割できるため、業務ロジックが変更されたとしても、業務処理を行うのに利用される、Webページに配置されているポートレットを差し替えることで対応できるような構成が可能となる。
ツール.
Liferay IDE.
Liferay IDEとは、各種のLiferayのプラグインプロジェクトの開発を支援するEclipseプラグインである。Eclipseバンドル版もあり、Javaがインストールされている環境では、ダウンロードしてから直ぐに利用できる。現在はLiferayのサブプロジェクトとしてMyEclipseの開発をしてきたGregory Amersonによってliferayの中国オフィスで開発が進められている。
Service Builder.
Service Builderとは、サービスインターフェース定義ファイル（service.xml）からJavaクラス及びSQLを生成するスクリプトである。ポートレットがアプリケーションサーバにデプロイされると、SQL文が実行され、Liferay用のデータベースにテーブルが作成される。
サービスインターフェース定義ファイル（service.xml）はデータベースのテーブルも作成するため、エンティティ定義と勘違いされる場合もあるが、実際にはインターフェース定義である。
生成されたJavaクラスにメソッドを追加すると、Java API、WSDL、JSONなど各インタフェースが生成される。LiferayフレームワークのポートレットすべてはService Builderを利用して開発されることが推奨されている。
日本ユーザ対応.
日本では、2012年に日本ライフレイ株式会社が設立され、日本市場においてEE（商用版）製品と付随サービスの提供を行っている。
野村総合研究所は独自に無償のLiferay 5コミュニティ版（MITライセンス）を元に日本ユーザ向けに改良してOpenStandia/Potalとして日本ユーザへ提供している。