JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay...
-
Upload
takeshi-totani -
Category
Technology
-
view
5.771 -
download
5
description
Transcript of JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay...
株式会社イージフ 戸谷
2013©
JJUGナイトセミナーオープンソースポータルLiferayの紹介とLiferay IDEを使った簡単ポートレット開発
2013年03月27日
2013年3月29日金曜日
2013.3.27 2013©
自己紹介
2
戸谷 剛(とたに たけし)
•株式会社イージフでオープンソースプロダクトのコンサルティングをやっています•主にAlfrescoとLiferayの導入支援に従事
•趣味•自転車 ... レース観戦•ボードゲーム ... 少しだけ
•Javaとの出会い•大学のころJDK1.2
2013年3月29日金曜日
2013.3.27 2013©
Liferayとは
32013年3月29日金曜日
2013.3.27 2013©
ポータルの定義
Liferay is “Portal"
4
ポータル製品の特長
•インターネット利用の出発点となるサイト•さまざまな情報を集約して表示
•1つのポータルソフトウェアで複数のポータルサイトを管理できる。
•アクセス権管理を含む各種管理をサイトごとに移譲できる。
•ページ上に情報を表示/操作を行うためのコンポーネント(ポートレット)を追加/編集する仕組みを持っている。
2013年3月29日金曜日
2013.3.27 2013©
Liferayポータルの歩み
5
2000年
非営利団体向けのポータルとして開発される
2012年
Liferay社として法人化
Version 4リリース
Version 5リリース
Version 6リリース
Version 6.1リリース
2013年3月29日金曜日
2013.3.27 2013©
Liferayポータルの現在のポジション
6
Gartner社のポータル製品の評価において、高い評価を獲得
“Liferayポータルは比較的軽量でありながら、セキュリティ・管理のしやすさ・プラットフォーム非依存などJavaの長所を製品の強みに生かしている。Liferayの相互運用性やさまざななアプリケーションサーバ上での動作性により、他社のJava資産を簡単に活用することができる。顧客からのレポートによると、Liferayは簡単にインストールし使うことができ、他のJavaベースのポータル製品の購入/保守と比べて、低コストである。”
2013年3月29日金曜日
2013.3.27 2013©
Community Edition
Liferayポータルのエディション
7
Enterprise Edition
•無償で利用可能•Enterpriseに先行してリリースされ、試験的に機能が追加される
•サブスクリプションを購入することで利用可能•深刻なバグに対するホットフィックスの提供•スケーラブルなシステム構成を実現するための追加機能あり
2013年3月29日金曜日
2013.3.27 2013©
Liferayアーキテクチャ
82013年3月29日金曜日
2013.3.27 2013©
アーキテクチャ: ユースケース
9
Webコンテンツ管理 コラボレーション パーソナライゼーション
文書管理 ユーザ管理 ポータル管理
ドキュメントライブラリ Wiki 掲示板
Webコンテンツ ステージング サイトテンプレート
イントラサイト カスタマーポータル パートナーポータル
コラボレーションサイト ビジネスアアプリケーションポータル
2013年3月29日金曜日
2013.3.27 2013©
アーキテクチャ: ドメイン
10
サイト
ユーザ
グループ
サイトサイト
ロールWebページ(s)
ページページページページ
ポートレット
2013年3月29日金曜日
2013.3.27 2013©
アーキテクチャ: コンポーネント
11
Spring Hibernate Lucene
StrutsVelocity Freemarker
JackRabbit JCRApache ChemistryAxis
JSP/Servlet
alloy UI
JavaMail JNDi
jDBC jTS ...
2013年3月29日金曜日
2013.3.27 2013©
アーキテクチャ: サービスレイヤ(パッケージ)
12
portal-web
portal-service
portal-impl
JSP
ServiceUtil Service(I/F)
javascript
ServiceImplポータル本体 Embedded Portlet
2013年3月29日金曜日
2013.3.27 2013©
アーキテクチャ: 配置
13
Webサーバ(Proxy)
RDBMS
NAS Storage
Appサーバ
2013年3月29日金曜日
2013.3.27 2013©
ポートレット標準と動作モデル
142013年3月29日金曜日
2013.3.27 2013©
ポートレット標準
15
JSR-168: Java Portlet Specification
•ポータル、ポートレットの定義•ポートレットのライフサイクル•ポートレットのリクエスト処理 → later!•ポートレットAPI
JSR-286: Java Portlet Specification Version 2.0•ポートレットのイベント処理•複数のポートレット間で協調した動作を実現できる•リソース供給(Resource Serving)•etc
2013年3月29日金曜日
2013.3.27 2013©
ポートレットのリクエスト処理
16
Portletコンテナ ポートレットA ポートレットB ポートレットC
processAction(...)
render(...)
render(...)
render(...)
2013年3月29日金曜日
2013.3.27 2013©
Liferayのカスタマイズパターン
172013年3月29日金曜日
2013.3.27 2013©
Liferayのカスタマイズ方法
18
カスタマイズ手段と目的
ソースコード修正
モジュール差し替え
モジュール追加
設定(ファイル)変更
“機能”差し替え
“機能”追加
UI変更
カスタマイズ手段 カスタマイズ目的
2013年3月29日金曜日
2013.3.27 2013©
Liferayのカスタマイズ方法
19
Liferayのカスタマイズ手段
“機能”差し替え
“機能”追加
UI変更
カスタマイズ手段 カスタマイズ目的
ソースコード修正
モジュール差し替え
モジュール追加
設定(ファイル)変更
2013年3月29日金曜日
2013.3.27 2013©
Liferayのカスタマイズ方法
20
Liferayプラグインの種類
フック
ポートレット
テーマ
レイアウト
Ext
JSP差し替え, アクションイベントの追加, サービスの差し替え
WebページのLook&Feel (Velocity, freemarkerで記述)
ページ内のレイアウト
特殊なプラグインクラス定義の差し替え
2013年3月29日金曜日
2013.3.27 2013©
デモ: ポートレットを作ってみよう
212013年3月29日金曜日
2013.3.27 2013©
Liferay SDKとLiferay IDE
22
•antによるビルド環境の提供•antコマンドにより自動的にプロジェクトのひな形を生成
Liferay SDK
Liferay IDE•Eclipseベース•最新版は1.6.2•Liferay IDEをGUIから利用できるようにしたもの
2013年3月29日金曜日
2013.3.27 2013©
serveResourceを使ったAjax読み込み
23
serveResourceの動作•JSR-286で追加•ポートレットごとにリクエストを処理可能
Portletコンテナ ポートレットA ポートレットB
serveResource(...)
2013年3月29日金曜日
2013.3.27 2013©
ポートレット完成への道筋
24
•VIEW以外のモード(EDITなど)の実装
•日本語ロケールのメッセージバンドル化
•Porletカテゴリの設定
•Alloy UI読み込みの最適化 ( Liferay.provideの使用)
•完成!
2013年3月29日金曜日
2013.3.27 2013©
Liferayプラグイン動作の内側
252013年3月29日金曜日
2013.3.27 2013©
プラグインポートレットはなぜ動く?①
26
•プラグインはwebアプリケーションとしてwebapps以下に展開されるプラグインポートレットのデプロイ
<LIFERAY_HOME>
tomcat
deploy
webapps
プラグインポートレット.war
プラグインポートレット
ROOT
2013年3月29日金曜日
2013.3.27 2013©
プラグインポートレットはなぜ動く?②
27
プラグインはポータル本体とは別のアプリケーションとしてデプロイされるが、ポータル本体の一部として動作するのはなぜか?
Portletコンテナ ポートレットA
render(...)
ROOTコンテキスト
ポートレットAアプリのコンテキスト
2013年3月29日金曜日
2013.3.27 2013©
プラグインポートレットはなぜ動く?③
28
Portletコンテナ ポートレットA
render(...)
ROOTコンテキスト
ポートレットAアプリのコンテキスト
Portletコンテナ
ポートレットAサーブレット
ポートレットA.include()
ポートレットA
render(...)
2013年3月29日金曜日
2013.3.27 2013©
liferay-serviceパッケージの存在理由
29
逆に、プラグイン(ポートレット)からLiferay本体のサービスを呼び出せるのはなぜか?
プラグイン
portal-service
portal-impl
Porlet
①アプリケーションサーバ全体で参照可能 ②ポータル本体のクラスローダを使用
ServiceUtil Service(I/F)
ServiceImplポータル本体 Embedded Portlet
2013年3月29日金曜日
2013.3.27 2013©
まとめ
302013年3月29日金曜日
2013.3.27 2013©
ポートレット標準の理想と現実
31
ポートレットの互換性
理想 現実
実際には、ポータル固有のサービスを呼び出す必要があるため、結局はポータル固有のポートレットとなってしまう。
ポートレットクラスの互換性は定義されているので、どのポータルへもデプロイできるはず
2013年3月29日金曜日
2013.3.27 2013©
ポータル採用の判断基準
32
採用のチェックポイント•複数のサイトを提供•管理の移譲•サイトごとの管理者設定•GUIからのサイト/ページ設定•パブリックサイト + ユーザ限定サイト•操作権限のコントロール•パーソナライズ•共通のUI部品の利用
失うかもしれないもの•ページレイアウトやLook&Feelの自由度•フロントエンドのjavascriptライブラリの選択:分離の限界•LiferayだとAlloy UIを基本使う
2013年3月29日金曜日
2013.3.27 2013©
ポータルを使う理由
33
僕にはそれが楽しかったから•アプリケーションパッケージは敷居が高いと思われて敬遠されがちだが...•どのようにカスタマイズすべきかの見定め(コアのコード修正、プラグイン、設定ファイル変更?)自体が結構楽しい
•オープンソースなら最後はソースコードまで追いかけられる•Liferayそのものの進化: よりクリーンにより拡張性高く
(not ステ)マ•Liferayの導入で困っておられるならお気軽に相談下さい!
2013年3月29日金曜日
2013年3月29日金曜日