SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
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日金曜日

Más contenido relacionado

La actualidad más candente

[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Akihiro Kuwano
 
Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723
Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723
Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723
Takaki Kawamura
 
ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術
Drecom Co., Ltd.
 
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
guestc4549
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選
Drecom Co., Ltd.
 

La actualidad más candente (20)

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

Destacado

20130801 alfresco study17customizemap
20130801 alfresco study17customizemap20130801 alfresco study17customizemap
20130801 alfresco study17customizemap
Takeshi Totani
 
Alfresco onlineeditbywebdav 2013
Alfresco onlineeditbywebdav 2013Alfresco onlineeditbywebdav 2013
Alfresco onlineeditbywebdav 2013
Takeshi Totani
 
20130925 alfresco study18performancetuning
20130925 alfresco study18performancetuning20130925 alfresco study18performancetuning
20130925 alfresco study18performancetuning
Takeshi Totani
 
Alfresco勉強会#25 ワークフロー入門
Alfresco勉強会#25 ワークフロー入門Alfresco勉強会#25 ワークフロー入門
Alfresco勉強会#25 ワークフロー入門
Takeshi Totani
 

Destacado (20)

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

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

20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回
Keiji Kamebuchi
 
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Insight Technology, Inc.
 
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介
Yukihiro Kikuchi
 
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
Hiroki Kondo
 
Ride on Azure! 詳細編
Ride on Azure! 詳細編Ride on Azure! 詳細編
Ride on Azure! 詳細編
Keiji Kamebuchi
 

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

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

Último

Último (12)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

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日金曜日