SlideShare a Scribd company logo
JJUGナイトセミナー
         オープンソースポータルLiferayの紹介と
        Liferay IDEを使った簡単ポートレット開発


                  2013年03月27日

                 株式会社イージフ 戸谷




                                    © 2013
2013年3月29日金曜日
自己紹介


     戸谷 剛(とたに たけし)


     •株式会社イージフでオープンソースプロダクトのコンサルティングを
     やっています
     •主にAlfrescoとLiferayの導入支援に従事

     •趣味
      •自転車   ... レース観戦
      •ボードゲーム ... 少しだけ

     •Javaとの出会い
      •大学のころJDK1.2

2013.3.27                  2            © 2013
2013年3月29日金曜日
Liferayとは




2013.3.27           3       © 2013
2013年3月29日金曜日
Liferay is Portal"

     ポータルの定義
     •インターネット利用の出発点となるサイト
     •さまざまな情報を集約して表示



     ポータル製品の特長
     •1つのポータルソフトウェアで複数のポータルサイトを管理できる。

     •アクセス権管理を含む各種管理をサイトごとに移譲できる。

     •ページ上に情報を表示/操作を行うためのコンポーネント(ポートレッ
     ト)を追加/編集する仕組みを持っている。



2013.3.27              4                 © 2013
2013年3月29日金曜日
Liferayポータルの歩み


 2000年                                         2012年

            非営利団体向けのポータルとして開発される

                      Liferay社として法人化

                            Version 4リリース

                                     Version 5リリース

                                            Version 6リリース


                                                       Version 6.1リリース




2013.3.27                        5                               © 2013
2013年3月29日金曜日
Liferayポータルの現在のポジション

  Gartner社のポータル製品の評価におい
  て、高い評価を獲得


   Liferayポータルは比較的軽量でありなが
  ら、セキュリティ・管理のしやすさ・プ
  ラットフォーム非依存などJavaの長所を
  製品の強みに生かしている。Liferayの相互
  運用性やさまざななアプリケーションサーバ
  上での動作性により、他社のJava資産を簡単
  に活用することができる。顧客からのレポー
  トによると、Liferayは簡単にインストールし
  使うことができ、他のJavaベースのポータル
  製品の購入/保守と比べて、低コストである。




2013.3.27                    6   © 2013
2013年3月29日金曜日
Liferayポータルのエディション

 Community Edition
   •無償で利用可能
   •Enterpriseに先行してリリースされ、試験的に機能が追加される



 Enterprise Edition
   •サブスクリプションを購入することで利用可能
   •深刻なバグに対するホットフィックスの提供
   •スケーラブルなシステム構成を実現するための追加機能あり




2013.3.27               7                © 2013
2013年3月29日金曜日
Liferayアーキテクチャ




2013.3.27             8          © 2013
2013年3月29日金曜日
アーキテクチャ: ユースケース


            イントラサイト    カスタマーポータル       パートナーポータル

                       ビジネスアアプリケーション
      コラボレーションサイト
                            ポータル



      Webコンテンツ管理       コラボレーション        パーソナライゼーション


             文書管理        ユーザ管理          ポータル管理


        ドキュメントライブラリ         Wiki          掲示板


            Webコンテンツ      ステージング        サイトテンプレート


2013.3.27                     9                     © 2013
2013年3月29日金曜日
アーキテクチャ: ドメイン


                    サイト
                    サイト
                     サイト
                                   ユーザ

                 Web
                ページ(s)       ロール


                                   グループ
            ページ
             ページ
              ページ
               ページ

                           ポート
                           レット



2013.3.27                    10           © 2013
2013年3月29日金曜日
アーキテクチャ: コンポーネント


             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日金曜日
アーキテクチャ: サービスレイヤ(パッケージ)




            portal-web                 JSP                       javascript




            portal-service          ServiceUtil                 Service(I/F)




                             ポータル
            portal-impl       本体
                                             Embedded Portlet   ServiceImpl




2013.3.27                                    12                                © 2013
2013年3月29日金曜日
アーキテクチャ: 配置




                                  RDBMS


            Webサーバ     Appサーバ
             (Proxy)



                                NAS Storage




2013.3.27                 13                  © 2013
2013年3月29日金曜日
ポートレット標準と動作モデル




2013.3.27              14        © 2013
2013年3月29日金曜日
ポートレット標準


     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日金曜日
ポートレットのリクエスト処理

                 Portlet          ポートレットA       ポートレットB   ポートレットC
                コンテナ


                      processAction(...)


                           render(...)



                           render(...)



                           render(...)




2013.3.27                                  16                   © 2013
2013年3月29日金曜日
Liferayのカスタマイズパターン




2013.3.27               17           © 2013
2013年3月29日金曜日
Liferayのカスタマイズ方法

     カスタマイズ手段と目的


            カスタマイズ手段           カスタマイズ目的


            設定(ファイル)変更           UI変更


                モジュール追加         “機能”追加


            モジュール差し替え          “機能”差し替え


             ソースコード修正




2013.3.27                 18              © 2013
2013年3月29日金曜日
Liferayのカスタマイズ方法

     Liferayのカスタマイズ手段


            カスタマイズ手段           カスタマイズ目的


            設定(ファイル)変更           UI変更


                モジュール追加         “機能”追加


            モジュール差し替え          “機能”差し替え


             ソースコード修正




2013.3.27                 19              © 2013
2013年3月29日金曜日
Liferayのカスタマイズ方法

     Liferayプラグインの種類


            ポートレット


                        JSP差し替え, アクションイベントの追加, サービス
                 フック    の差し替え


                 テーマ    WebページのLook&Feel (Velocity, freemarkerで記述)



                レイアウト   ページ内のレイアウト


                        特殊なプラグイン
                 Ext    クラス定義の差し替え




2013.3.27                   20                                  © 2013
2013年3月29日金曜日
デモ: ポートレットを作ってみよう




2013.3.27               21          © 2013
2013年3月29日金曜日
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日金曜日
serveResourceを使ったAjax読み込み

     serveResourceの動作
     •JSR-286で追加
     •ポートレットごとにリクエストを処理可能


                 Portlet        ポートレットA     ポートレットB
                コンテナ


                      serveResource(...)




2013.3.27                              23             © 2013
2013年3月29日金曜日
ポートレット完成への道筋



        •VIEW以外のモード(EDITなど)の実装

        •日本語ロケールのメッセージバンドル化

        •Porletカテゴリの設定

        •Alloy UI読み込みの最適化 ( Liferay.provideの使用)

        •完成!




2013.3.27                       24                © 2013
2013年3月29日金曜日
Liferayプラグイン動作の内側




2013.3.27               25          © 2013
2013年3月29日金曜日
プラグインポートレットはなぜ動く?①

     プラグインポートレットのデプロイ
    •プラグインはwebアプリケーションとしてwebapps以下に展開される
                <LIFERAY_HOME>

                     deploy

                          プラグインポートレット.war


                     tomcat


                              webapps

                                  ROOT


                                   プラグインポートレット
2013.3.27                                26      © 2013
2013年3月29日金曜日
プラグインポートレットはなぜ動く?②

          プラグインはポータル本体とは別のアプリケーションとして
        デプロイされるが、ポータル本体の一部として動作するのはなぜか?



                  ROOT             ポートレットAアプリの
                コンテキスト               コンテキスト
                  Portlet                 ポートレットA
                 コンテナ


                            render(...)




2013.3.27                     27                    © 2013
2013年3月29日金曜日
プラグインポートレットはなぜ動く?③
                  ROOT             ポートレットAアプリの
                コンテキスト               コンテキスト
                  Portlet                 ポートレットA
                 コンテナ


                            render(...)




                  Portlet                 ポートレットA
                                                      ポートレットA
                 コンテナ                     サーブレット


                      ポートレットA.include()
                                                render(...)




2013.3.27                     28                                © 2013
2013年3月29日金曜日
liferay-serviceパッケージの存在理由
                     逆に、プラグイン(ポートレット)から
                Liferay本体のサービスを呼び出せるのはなぜか?



        プラグイン                     Porlet


 ①アプリケーションサーバ全体で参照可能
                                                      ②ポータル本体のクラスローダを使用


        portal-service          ServiceUtil                   Service(I/F)




                         ポータル
        portal-impl       本体
                                           Embedded Portlet   ServiceImpl




2013.3.27                                     29                             © 2013
2013年3月29日金曜日
まとめ




2013.3.27        30   © 2013
2013年3月29日金曜日
ポートレット標準の理想と現実


     ポートレットの互換性


                理想             現実

     ポートレットクラスの互換性は定義   実際には、ポータル固有のサービス
     されているので、どのポータルへも   を呼び出す必要があるため、結局は
     デプロイできるはず          ポータル固有のポートレットとなっ
                        てしまう。




2013.3.27               31                 © 2013
2013年3月29日金曜日
ポータル採用の判断基準
     採用のチェックポイント
     •複数のサイトを提供
     •管理の移譲
      •サイトごとの管理者設定
      •GUIからのサイト/ページ設定
     •パブリックサイト + ユーザ限定サイト
      •操作権限のコントロール
      •パーソナライズ
     •共通のUI部品の利用

     失うかもしれないもの
     •ページレイアウトやLook&Feelの自由度
     •フロントエンドのjavascriptライブラリの選択:分離の限界
      •LiferayだとAlloy UIを基本使う
2013.3.27               32               © 2013
2013年3月29日金曜日
ポータルを使う理由

     僕にはそれが楽しかったから
     •アプリケーションパッケージは敷居が高いと思われて敬遠されがちだ
     が...
      •どのようにカスタマイズすべきかの見定め(コアのコード修正、プラ
      グイン、設定ファイル変更?)自体が結構楽しい


     •オープンソースなら最後はソースコードまで追いかけられる
     •Liferayそのものの進化: よりクリーンにより拡張性高く



     (not ステ)マ
     •Liferayの導入で困っておられるならお気軽に相談下さい!


2013.3.27              33               © 2013
2013年3月29日金曜日
2013年3月29日金曜日

More Related Content

PDF
osc_tokyo20100226
PDF
Summary of Ruby
PDF
osc_tokyo20100910
PPTX
できる!KickstartとAnsible!
PDF
Osc2008 Opensuse Moonlinx
PPTX
DevOps on azure 高品質クラウドデザインを求めて
PDF
20180123 power shell
PDF
LXC入門 - Osc2011 nagoya
osc_tokyo20100226
Summary of Ruby
osc_tokyo20100910
できる!KickstartとAnsible!
Osc2008 Opensuse Moonlinx
DevOps on azure 高品質クラウドデザインを求めて
20180123 power shell
LXC入門 - Osc2011 nagoya

What's hot (20)

PPT
[大図解]ピグライフはこう動いている
PDF
Java用O/Rマッピングソフトについて私が知っている二、三の事柄
PPTX
Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723
PPTX
Microsoft azure
PDF
Java EEを補完する仕様 MicroProfile
PDF
ログ解析を支えるNoSQLの技術
PPT
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
PPTX
スケーラブルMoodle@Moodle Moot 2017JP
PDF
Lxc で始めるケチケチ仮想化生活?!
PDF
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
KEY
実録!Railsのはまりポイント10選
PDF
20101214 NetCommons Night
PPTX
20120512 第5回Zabbix勉強会LT
PPTX
クラウドでの大規模Moodleの構築方法とモデルケース
PDF
Firefox と Mozilla のテクノロジー
PPTX
今さら聞けない! Windows Server 2016 Active Directoryドメインサービス入門
PDF
少しでもセキュリティを向上させたい! Mauticの運用方法
PDF
Firefox 3.1 In Depth (?)
PDF
WordPressサイトのバージョン管理
PDF
Mizuno buddypress-plugin
[大図解]ピグライフはこう動いている
Java用O/Rマッピングソフトについて私が知っている二、三の事柄
Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723
Microsoft azure
Java EEを補完する仕様 MicroProfile
ログ解析を支えるNoSQLの技術
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
スケーラブルMoodle@Moodle Moot 2017JP
Lxc で始めるケチケチ仮想化生活?!
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
実録!Railsのはまりポイント10選
20101214 NetCommons Night
20120512 第5回Zabbix勉強会LT
クラウドでの大規模Moodleの構築方法とモデルケース
Firefox と Mozilla のテクノロジー
今さら聞けない! Windows Server 2016 Active Directoryドメインサービス入門
少しでもセキュリティを向上させたい! Mauticの運用方法
Firefox 3.1 In Depth (?)
WordPressサイトのバージョン管理
Mizuno buddypress-plugin
Ad

Viewers also liked (20)

PDF
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
PDF
Liferayのパートナーの視点からみた オープンソースのこれから
PDF
機能追加せずに使える!concrete5の権限とワークフローについて
PDF
20130801 alfresco study17customizemap
PDF
20130509 alfresco study15permission
PDF
AlfrescoとSolr(後編)
PDF
Alfresco onlineeditbywebdav 2013
PDF
20140129 alfresco addons
PDF
20130606 alfresco study16audit
PDF
第7回Alfresco勉強会資料 カスタムのオンライン編集
PDF
20130925 alfresco study18performancetuning
PDF
concrete5の権限とワークフローについて
PDF
Alfresco勉強会#25 ワークフロー入門
PDF
Alfresco勉強会#28 メタデータテンプレート
PPTX
Alfresco study32 introducing5.1
PDF
Alfresco study29 activitymonitoring
PDF
Alfresco勉強会#33 Alfresco Solr Admin UI
PDF
Alfresco勉強会#34 Alfrescoをカスタマイズする時に知っておくと便利なこと
PDF
【第1.5回勉強会】後編 alfrescoの基本操作
PDF
Alfresco study37 alfresco_ng2_components
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
Liferayのパートナーの視点からみた オープンソースのこれから
機能追加せずに使える!concrete5の権限とワークフローについて
20130801 alfresco study17customizemap
20130509 alfresco study15permission
AlfrescoとSolr(後編)
Alfresco onlineeditbywebdav 2013
20140129 alfresco addons
20130606 alfresco study16audit
第7回Alfresco勉強会資料 カスタムのオンライン編集
20130925 alfresco study18performancetuning
concrete5の権限とワークフローについて
Alfresco勉強会#25 ワークフロー入門
Alfresco勉強会#28 メタデータテンプレート
Alfresco study32 introducing5.1
Alfresco study29 activitymonitoring
Alfresco勉強会#33 Alfresco Solr Admin UI
Alfresco勉強会#34 Alfrescoをカスタマイズする時に知っておくと便利なこと
【第1.5回勉強会】後編 alfrescoの基本操作
Alfresco study37 alfresco_ng2_components
Ad

Similar to JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay IDEを使った簡単ポートレット開発 (20)

PPTX
Azure DevOps で始めるスタートダッシュ
PPTX
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
PDF
『 イドラ ファンタシースターサーガ 』を支える GCP | Google Cloud INSIDE Games & Apps
PDF
20150704 MS Azure最新 - innovation egg 第4回
PPTX
Azure Functions あれこれ
PPTX
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
PDF
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
PDF
TOUA M2M Solutions powered by Cloudian (Cloudian Summit 2012)
PPTX
Fuel php活用事例
PDF
Azure App Service Overview
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
PDF
XDev2010 WindowsAzure
PDF
Container deployment on Azure
PDF
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介
PDF
Spath for enterprise
PDF
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
PDF
Azure activedirectoryの最新機能の概要紹介
PDF
Ride on Azure! 詳細編
PDF
Visual StudioやAzureからAzure DevOpsを使う
PDF
クラウド勉強会in北陸Azure資料
Azure DevOps で始めるスタートダッシュ
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
『 イドラ ファンタシースターサーガ 』を支える GCP | Google Cloud INSIDE Games & Apps
20150704 MS Azure最新 - innovation egg 第4回
Azure Functions あれこれ
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
TOUA M2M Solutions powered by Cloudian (Cloudian Summit 2012)
Fuel php活用事例
Azure App Service Overview
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
XDev2010 WindowsAzure
Container deployment on Azure
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介
Spath for enterprise
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
Azure activedirectoryの最新機能の概要紹介
Ride on Azure! 詳細編
Visual StudioやAzureからAzure DevOpsを使う
クラウド勉強会in北陸Azure資料

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日金曜日
  • 3. Liferayとは 2013.3.27 3 © 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日金曜日
  • 8. Liferayアーキテクチャ 2013.3.27 8 © 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日金曜日
  • 14. ポートレット標準と動作モデル 2013.3.27 14 © 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日金曜日
  • 17. Liferayのカスタマイズパターン 2013.3.27 17 © 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日金曜日
  • 21. デモ: ポートレットを作ってみよう 2013.3.27 21 © 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日金曜日
  • 25. Liferayプラグイン動作の内側 2013.3.27 25 © 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日金曜日
  • 30. まとめ 2013.3.27 30 © 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日金曜日