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を利用するメリットとしては以下が挙げられている：
* 定期的にバージョンアップされて新技術が取りいられているため、数年後に開発したWebシステムをバージョンアップする場合でも継続的にLiferayを利用することができる。
* 活発に活動しているliferayオープンソースコミュニティが存在しているため、企業がプロジェクトから脱退してもプロジェクトとして継続して続けることができる。
* 機能をポートレットと言う**サービスコンポーネント**単位で開発して利用／置き換えができる。
* 業務アプリケーションの他に、ページスタイル（テーマ）、レイアウト、機能変更、バッグフィックスなどもWebブラウザからインストールできる（WARファイルにしてデプロイできる）。
* ポートレットはJavaの他にもRuby (JRuby)、PHP、Python (Jython)を使って作成することもできる。また、ポートレットフレームワークとして、liferay MVCの他にSpring MVC、JSF 2.0、Vaadinなどを使うこともできる。
* ユーザ管理、組織管理、セキュリティ（ロールによる管理）、Webページ構成管理なども標準で含まれている。また、Webブラウザから設定が行える。
* マルチテナント対応である。1つのliferayで複数の異なるドメイン名 (URL) 及びドメイン名毎に管理者を設けることができる。
* WebブラウザからHTMLエディタを使ってwebページの作成／編集ができる。ITに詳しくないユーザでもwebページを作成／編集することができる。

## アーキテクチャ
Liferayには基本的に3つのレイヤーがある：①業務処理を実装したポートレット、②ポートレットが動作する基盤、③基盤を動作するWebサーバ及びデータベース。

## 開発
Liferayはプラグインフレームワークである。プラグインフレームワークの場合は、エンドユーザが要求している機能をプラグイン単位に分割する。プラグインとEJBやWeb Serviceとの大きな違いは、エンドユーザがEJBやWeb Serviceの機能を利用する場合は更にプログラムが必要なことだ。プラグインの場合は表示、ビジネスロジック、エンティティインターフェース定義を3要素を含めることができるため、プラグインをインストールするとエンドユーザがその機能を使うことができる。

アプリケーションサーバを停止しなくても、プラグインは随時にインストール／更新／削除することができるため、アジャイルScrum開発手法でシステムを継続的に開発することができる。その場合は、ユーザストリーがプラグインに該当する。

## プラグイン
Liferayは保守性を向上するため、コミュニティから提供される基盤とユーザ毎に変更されるファイルを区別できるように設計されている。ユーザ差分はプラグインと言うWARで作成できる。コミュニティから新しいリリースが提供された場合は、このWARファイルを新しいリリースに展開（デプロイ）すればよい。

大きく分けて、プラグインは新規に機能を追加するポートレットと、Liferay本体の機能を上書き（クラス及びプロパティのオーバーライド）するテーマ、テンプレート、フック、extプラグインに分けることができる：
* ポートレット：新規に機能を追加する場合に使う。JSR168 ポートレット/JSR286に準拠した機能及びアプリケーション。JSP、WEB-INF、Javaクラス、CSSファイルなどを含むことができる。Liferayフレームワークに追加/削除（デプロイ/アンデプロイ）できる最小の機能単位である。
* テーマ：ページの外観の変更（CSS及びvelocity）
* テンプレート：ポートレットの配置（例：2列に表示）
* フック：JSPファイル、プロパティファイル、イベント処理の変更
* extプラグイン：Liferayフレームワーク本体のすべての機能を変更できる。ただし、インストール／アンインストールにはサーバの再起動が必要である。

## サービス指向アーキテクチャ
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として日本ユーザへ提供している。

## 標準ポートレット
### コミュニティ

* **サイトメンバーディレクトリ** - ポートレットが配置されたサイトのユーザ/組織/ユーザグループの一覧管理画面表示、検索機能。
* **フレンズディレクトリ** - LIFERAY PORTAL内で別のユーザーとのつながり（Facebookでの友達のような連携）を利用している場合に、つながりがあるユーザの一覧を表示。
* **ブックマーク** - 任意のURLをブックマークし、それを検索できる。
* **ページのおすすめ度** - このポートレットが配置されたページに、レーティング機能を追加する。
* **ページコメント** - このポートレットが配置されたページに、コメント機能を追加する。
* **ページフラグ** - このポートレットが配置されたページに、不適切な表現がある場合、ユーザが管理者に通報する仕組み。
* **ポータルディレクトリ** - ポータル内のユーザ/組織/ユーザグループを表示。
* **マイサイト** - 自分がアクセスできるサイトの一覧、検索が可能。
* **マイサイトディレクトリ** - 自分がアクセスできるサイト内のユーザ/組織/ユーザグループを表示。
* **招待** - 指定したメールアドレスに、自サイトにアクセスするためのリンクを含んだメールを一括送信する。

### コラボレーション

* **Wiki** - 複数のWikiを作成可能で、全Wikiを管理する。
* **Wiki表示** - Wikiポートレットで作成されたWikiで、表示したいWikiを1つ選択して表示する機能。
* **カレンダー** - カレンダー機能。サイト毎に異なるカレンダーを管理することが可能。ただし1サイトで1つのカレンダーポートレットインスタンスしか生成できない。つまり、複数ページにカレンダーを配置しても、1サイト内では同じカレンダーの内容が表示される。
* **ブログ** - 複数のブログを作成することができる。
* **ブログの購読** - ユーザ、サイトと範囲を指定して、購読（サブスクライブ）する対象のブログの投稿を一覧で表示する。
* **動的データリストディスプレイ** - Microsoft Excelのような表データを作成し、各行毎にレコードとしてデータを登録、エクスポートすることができる。データベース上では実際にテーブルを作成しているわけではなく、複数の表。
* **掲示板** - 掲示板（フォーラム）機能。
* **最近参加したブロガー** - 最近ブログを作成したユーザ名を一覧表示する。

### コンテンツ管理
* **Webコンテンツの検索** - 作成したWebコンテンツを検索する。
* **Webコンテンツの表示** - 作成したWebコンテンツを1つ選択して表示させる。
* **アセットパブリッシャー** - Webコンテンツ、Wiki、掲示板、ブログ、ブックマーク、ドキュメントとメディア等、LiferayフレームワークのAssetを持つ機能のデータをフィルタリングして、一覧表示する。ページに複数配置することが可能で、配置するアセットパブリッシャー毎に表示テンプレートも変更できる。
* **アンケート** - ラジオボタン式のアンケートを取って、集計ができる。
* **カテゴリナビゲーション** - 作成した用語、カテゴリの内容を一覧表示する。
* **サイトディレクトリ** - 自分がアクセス可能なサイトの一覧を表示する。
* **サイトマップ** - サイトマップ（該当サイトの全ページ一覧）を表示する。
* **タグクラウド** - 作成されたタグを一覧として、タグ付けされている量が多いタグを大きく、そうでないものを相対的に小さく、タグクラウドを表示する。
* **タグナビゲーション** - タグの一覧を表示する（タグクラウドとは異なり、タグの使用頻度によって大きさがかわったりはしない。）
* **ドキュメントとメディア** - ドキュメントとメディアの編集用ウィンドウを、ページに配置するためのポートレット。
* **ドキュメントとメディアディスプレイ** - ドキュメントとメディアに格納されたデータを表示する。ADT(Application Display Template)を利用して、Wordpressのテーマのように、表示方法/デザインをカスタマイズすることができる。
* **ナビゲーション** - ナビゲーションポートレットを配置したページ以下の、サイトマップを表示する。
* **ネスティドポートレット** - 複数のポートレットを1つのグループとしてまとめられる。
* **パンくずリスト** - 現在のページの階層構造を示す、パンくずリストを表示する。
* **メディアギャラリー** - ドキュメントとメディアで管理しているデータを、該当フォルダを指定してそのフォルダ以下に保存されているデータフォルダを表示する。
* **一番評価されている項目** - レーティングの良いデータの一覧を表示する。
* **最もよく見れられている項目** - よく見られているデータを順に一覧表示する。
* **最近のダウンロード** - 直近でダウンロードされたデータを表示する。
* **関連するデータ** - ブログ、掲示板、Webコンテンツなど、LiferayフレームワークのAssetを持つデータを、手動で関連づけることができる。
* **IFrame** - IFrameをポートレットとして配置する。URLを指定すると、該当ページをIFrameポートレット内に表示する。

### ソーシャル
* **アクティビティ** - サイトのアクティビティ（ファイルのアップロード、ブログの編集等）を一覧で表示。
* **グループ統計** - サイトの統計データ（ブログのエントリー数など）指定したデータを一覧表示。

### ユーザー統計
* **リクエスト** - ソーシャルリクエスト（つながり申請）など、自分に送られてきているソーシャル関連の通知を表示。
* **通知** - メールアドレスを指定して、サイトにアクセスするためのリンクを送信する。

### ツール
* **Web フォーム** - 問い合わせフォームなどの任意のフォーマットのフォームを複数作成可能。
* **パスワード生成ツール** - パスワードを生成する。
* **ログイン** - ログインのためのユーザ名/パスワード入力フィールド、パスワードを忘れた時の再生成リンクなどを生成する。
* **検索** - サイト内部のデータを検索する機能を提供する。検索対象を任意のデータ種別（ブログ、掲示板など）だけに絞り込むことも可能。
* **言語設定** - LIFERAY PORTALで利用可能な表示言語を選択する。

### ニュース
* **RSS** - 任意のRSSフィードを複数読み込み、一覧表示する。
* **お知らせ** - 期間限定で告知用の情報を表示する。
* **警告** - サイト単位で通知用の対象を指定し、対象となるサイトのユーザに対して通知を送信する。
* **ワークフロー** - 企業などで使われる承認フローを実現する。Kaleo Workflowを利用しており、JavascriptやGroovyを利用して、ワークフロー内で外部のサービス等をコールすることも可能。
* **Kaleo Forms** - ワークフローをGUI上で編集する機能。

## 標準では搭載されていないが、Liferay Marketplaceから導入可能なツール
* **監査ログ(Audit Portlet)** - ユーザの活動（データ作成、削除、変更、閲覧やログイン、ログアウト等）を記録、一覧表示可能。(EE版のみ)
* **Social Networking Portlet** - いわゆる一般的なつながり申請や、ウォール機能など、SNS（ソーシャルネットワーク）的な機能をポートレット単位でLIFERAY PORTALに追加する。カスタマイズも可能。同様のツールにLiferay Social Officeと異なり、ポートレット単位で配置、デザインの変更が可能なので、カスタマイズがしやすい利点がある。
* **チャット Portlet** - Facebook やGoogle Messangerのように、チャットウィンドウが表示され、それを通してLIFERAY PORTAL上のユーザーとチャット可能。
* **Audience Targetting (オーディエンス・ターゲッティング) Portlet** - ユーザ属性を設定して、その属性に該当するユーザに対して、設定に従って表示させるコンテンツを切り分ける。
* **SAML 2.0連携** - 認証機構のSAMLを利用できる。LIFERAY PORTAL自体はIDPとしてもSPとしても設定可能。
* **Ehcache プラグイン** - LIFERAY PORTALクラスタを組む際に、キャッシュのクラスタリングに使用する。このプラグインを利用することで、キャッシュのクラスタリングが容易に行える。
* **Liferay Push** - LIFERAY PORTALをモバイルの開発基盤として利用した場合、Android / iOS両方でプッシュ機能を提供する。
* **Documentum Connector ** - ドキュメンタムとLIFERAY PORTALのドキュメントとメディアとの連携を行うためのプラグイン。
* **Sharepoint Connector EE** - Microsoft SharePointとLIFERAY PORTALのドキュメントとメディアとの連携を行うためのプラグイン。(EE版のみ)
* **Mail Portlet** - メーラーとしての機能（メール一覧、検索、作成、送信）を提供するポートレット。

## 歴史
* 2004年
** 非利益団体用にChief Software Architect Brian ChanがLiferay Portalを開発
** 米国にLiferay, Inc.を設立
* 2006年　独Liferay GmbHを設立
* 2007年　
** 中国大連にアジア事業所を設立
** スペインにLiferay SLを設立
** ICEsoft Technologiesとパートナー契約してAjax用部品を開発
* 2008年　
** SunがLiferay Portalを元にして開発したGlassFish Web Space Serverとして販売開始
** jQuery UIのリード技術者がJavaScriptライブラリを開発
* 2009年　IT Mill Ltd.と技術提携してVaadinユーザインターフェースライブブラを開発
* 2010年　日本代理店と契約　－　教育やコンサルティングサービスを開始
* 2012年
**　従業員数が350人になった
**　日本ライフレイ株式会社 設立
*2021年
**　従業員数が1,000人を超えた

## 受賞
* :en:Infoworld Bossie Awards Enterprise Portal (2007年・2008年)」
* ガートナーのマジック・クアドラント「Magic Quadrant for Horizontal Portals」において、2008、2010、2011、2012、2013、2014、2015、2016年に、「Magic Quadrant for Digital Experience Platforms」において、2018、2019、2020、2021年にそれぞれ、Liferayはリーダーに選出された。
*フォレスター・リサーチのレポート「The Forrester Wave™: Intranet Platforms, Q2 2020」において、Liferayは「強力なパフォーマー」として位置付けされた。

## 関連項目
* :en:Collaborative Application Markup Language
* ブログパーツ
* エンタープライズポータル

## 脚注

## 外部リンク
*