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