PDF:

WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
WebSphere Portal 8.0 で導入されたモジュラー・アーキテクチャーへの
テーマの移行方法
David Nixon
Chief Programmer Workplace Services Express and
WebSphere Portal Express
IBM
2014年 4月 11日
IBM WebSphere Portal 8.0 では、テーマの開発を容易にするモジュラー・アーキテクチャーが
導入されました。Portal 8.0 へのマイグレーションの完了後、Portal サイトに新規フィーチャー
を追加するにあたって最初にすべきことは、通常、カスタム・テーマをモジュール化すること
です。この記事では、Portal 6.1.5 のテーマをモジュラー・アーキテクチャーに移行するステッ
プを順を追って説明します。テーマ移行の計画に役立つヒントや見積もり時間も記載されてい
ます。
このシリーズの他の記事を見る
はじめに
WebSphere Portal のあるバージョンから別のバージョンへ移行する際のベスト・プラクティス
は、テーマ内でその Portal のマイグレーションを Portal の新機能の追加と切り離すことです。そ
の目的は、Portal の旧バージョンから現行バージョンにカスタム・テーマを現状のまま移行し、
マイグレーション中にテーマへの新規追加を行わないようにすることです。Portal の新規フィー
チャーの多くは Portal 8.0 のテーマを通じて出現するため、通常、フィーチャーの追加はテーマの
開発アクティビティーとなり、全体的なマイグレーションが正常に完了した後に行われます。
さまざまなユーザーが異なる方法でフィーチャーをテーマに追加しています。
• その 1 つは、個々のフィーチャーをカスタム・テーマに追加する方法です。例えば、既存の
テーマ・スキンで Dojo タグ付け/評価ウィジェットを公開することにより、タグ付け/評価を
追加することができます。
• もう 1 つの方法は、開始点として Portal 8.0.0.1 テーマを使用してゼロから始めることです。
まったく新しいルック・アンド・フィールの Web サイトを望む一部のユーザーは、この方法
を選択しています。
© Copyright IBM Corporation 2014
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
商標
ページ 1 / 18
developerWorks®
ibm.com/developerWorks/jp/
• この 2 つのアプローチの折衷案が既存のカスタム・テーマをモジュール化する方法です。こ
のアプローチの利点は、既存サイトの基本的なルック・アンド・フィールを維持しながら最
小限の労力でフィーチャーを追加できることです。この記事では、このアプローチについて
詳しく説明します。
前提条件
IBM WebSphere Portal
この記事は WebSphere Portal バージョン 8.0 に基づいており、8.0.0.1 フィックスパックを必
要とします。8.0.0.1 にマイグレーションした後は、「enable-new-8001-features」構成タス
クを使用して新規フィーチャーを有効にする必要があります。インストール手順について
は、WebSphere Portal の文書 を参照してください。enable-new-8001-features タスクの実行手順に
ついては、README を参照してください。
Web ブラウザー
Firebug 拡張機能をインストールした Mozilla Firefox の最新バージョンを使用することをお勧めし
ます。ただし、CSS3 をサポートするブラウザーはすべて利用できます。最近のほとんどのブラウ
ザーには独自の開発ツールが組み込まれていますが、この記事の例では Firebug に基づきます。
WebDAV クライアント
WebSphere Portal テーマを更新するには WebDAV クライアントが必要です。ここでは Linux の
davfs2 を使用します。WebSphere Portal がサポートしているすべての WebDAV を使用できます。
詳細については、「Connecting to the Portal WebDAV with 8.0 」を参照してください。
Linux
テーマの開発はどのプラットフォームでも実行できますが、この記事ではほとんどの Linux ディ
ストリビューションで利用できるツールに基づきます。同様のツールは Windows などのオペレー
ティング・システムにも存在します。
基礎知識
WebSphere Portal のインフォメーション・センターでは、テーマのモジュラー・フレームワーク
の利点とその仕組みについて説明されています。このフレームワークでは、テーマのコード自
体からフィーチャーのイネーブルメントが切り離されています。そのため、フィーチャーの基本
コードの仕組みについて詳しく知らなくても、テーマを容易に開発できます。実行時にモジュー
ルが、テーマへのデータのコントリビューションを行うことがトできる論理ポイントが提供さ
れます。可能な場合は、これらのコントリビューションを組み合わせて最適化することができま
す。複数の異なるリモート・ソースをパフォーマンス改善という 1 つの要求に統合できます。
任意のテーマで開始できますが、この記事では例として使いやすい「Tab Menu – Page Builder」
テーマを使用します (このテーマがデプロイされる EAR ファイルの名前に因んで「Enhanced」
テーマとも呼ばれます)。この記事の最後で、このテーマのモジュール化されたバージョンをダウ
ンロードすることができます。
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 2 / 18
ibm.com/developerWorks/jp/
developerWorks®
1. Portal 8.0.0.1 テーマをコピーする
このステップを完了するには、インフォメーション・センターの操作手順(「Create a copy of the
theme」 ) に従います。8.0.0.1 テーマのこのコピーは、「Modular Tab Menu」テーマの開始点と
なります。
この手順では、以下の作業を必要とします。
a. テーマの静的リソースをコピーする
b. スキンの静的リソースをコピーする
c. テーマの動的リソースをコピーする
d. テーマの静的リソースを動的リソースにリンクする
e. テーマの動的リソース参照を変更する
f. スキンの動的リソース参照を変更する
1a. テーマの静的リソースをコピーする
themelist WebDAV から 8.0.0.1 テーマ・リソースをコピーする操作手順に従います。この記事の例
では、次のように themelist がマウントされました。
リスト 1. WebDAV による themelist のマウント
mount.davfs http://example.com:10039/wps/mycontenthandler/dav/themelist/ /mnt/portal/dav/themelist
インフォメーション・センターの指示に従って、好みのメソッドで localized_en.properties ファイ
ルを編集します。多くの言語ファイルがあるため、ここでは sed スクリプトを編集に使用しまし
た。
リスト 2. sed によるテーマ名の設定
cd /tmp/ModularTabMenu/metadata
find . -name "localized_*.properties" | xargs -n 1 sed -i "s/title=.*\$/title=Modular Tab Menu/g"
これにより、ブラウザーのロケール設定に関係なく、テーマ名は「Modular Tab Menu」となりま
す。通常、この名前は Portal 管理者にのみ表示されますが、翻訳が必要な場合は、該当するロー
カライズ・プロパティー・ファイルに翻訳を追加できます。例えば、localized_fr.properties でタ
イトルを「Modulaire Menu Tab」に設定することもできます。
ヒント: 一部のエディターとツールでは、正しく削除されない一時ファイルが WebDAV に作成さ
れます。長さがゼロのこれらのファイルをクリーンアップしてください。
リスト 3. find を使用した WebDAV からの一時ファイルのクリーンアップ
find /mnt/portal/dav/themelist/ModularTabMenu -type f -size 0 -delete
ヒント: ローカル・システムから WebDAV へのコピーが正常に完了したことを確認します。
リスト 4. diff を使用した WebDAV コンテンツの確認
diff -rq /tmp/ModularTabMenu /mnt/portal/dav/themelist/ModularTabMenu
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 3 / 18
developerWorks®
ibm.com/developerWorks/jp/
報告された差異を確認して修正します。
1b. スキンの静的リソースをコピーする
skinlist WebDAV から 8.0.0.1 「隠し」スキンをコピーする操作手順に従います。この記事の例で
は、次のように skinlist がマウントされました。
リスト 5. WebDAV による skinlist のマウント
mount.davfs http://example.com:10039/wps/mycontenthandler/dav/skinlist/
/mnt/portal/dav/skinlist
この記事の例では、skinlist ディレクトリーで作成されたディレクトリーの名前として
「ModularTabMenuStandard」を使用します。上述の手順と同様に sed スクリプトを使用して
localized*.properties ファイルを編集し、タイトルを「Modular Tab Menu Standard」に設定しまし
た。WebDAV にコピーされたファイルを確認します。
1c. テーマの動的リソースをコピーする
このステップを完了するには、インフォメーション・センターの操作手順 (「Copy the dynamic
resources for your theme」) に従います。
この記事の「ダウンロード」セクションに、このステップの EAR ファイルがあります。
ヒント: EAR ファイルの Web アプリケーションおよび下記の例では、「/wps/ModularTabMenu」
のコンテキスト・ルートを使用していますが、各自の環境に適切な任意のコンテキスト・ルート
を使用できます。例えば、「/yourco/ModularTabMenu」や「/yourco/theme」、あるいは単に「/
theme」のコンテキスト・ルートを使用することもできます。
1d. テーマの静的リソースを動的リソースにリンクする
このステップを完了するには、インフォメーション・センターの操作手順(「Binding your theme
to the context root of the web app」 ) に従います。
この記事の「ダウンロード」セクションに、output.xml の編集手順を単純化する xslt ファイルが
あります。
リスト 6. output.xml ファイルのトリミング
xsltproc CustomOnly.xslt output.xml > bindTheme.xml
処理後のbindTheme.xmlファイルは、元のoutput.xmlと比べてかなり小さくなり、より明確になっ
ています。
リスト 7. サンプルの bindTheme.xml
<?xml version="1.0" encoding="utf-8"?>
<request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" build="wp8001CF05_001_18" type="update"
version="8.0.0.1"
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 4 / 18
ibm.com/developerWorks/jp/
developerWorks®
xsi:noNamespaceSchemaLocation="PortalConfig_8.0.0.xsd">
<portal action="locate">
<skin context-root="/wps/defaultTheme80" uniquename="YOUR-UNIQUENAME-HERE"
objectid="ZK_J15213K0J0EPD0IVLFLIDO1SG0"
resourceroot="Hidden" action="update" active="true" default="false" domain="rel" type="default">
<!--Set the context-root!-->
<!--Set the uniquename to something meaningful-->
<!--Set the resourceroot to the directory name of your skin-->
<!--Use the skin OID ZK_J15213K0J0EPD0IVLFLIDO1SG0 in the allowed-skin tag in your theme-->
</skin>
<theme context-root="/wps/defaultTheme80" uniquename="YOUR-UNIQUENAME-HERE" action="update" active="true"
default="false"
domain="rel" objectid="ZJ_J15213K0J0EPD0IVLFLIDO10G7" resourceroot="dynamicSpots">
<!--Set the context-root!-->
<!--Set the uniquename to something meaningful-->
<!--Set the allowed skin to your new custom skin!-->
<allowed-skin skin="YOUR-SKIN-OID-HERE" update="set"/>
</theme>
</portal>
</request>
リスト 8. Modular Tab Menu テーマの編集後のサンプル bindTheme.xml
<?xml version="1.0" encoding="utf-8"?>
<request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" build="wp8001CF05_001_18" type="update"
version="8.0.0.1"
xsi:noNamespaceSchemaLocation="PortalConfig_8.0.0.xsd">
<portal action="locate">
<skin context-root="/wps/ModularTabMenu" uniquename="com.ibm.skin.modtabmenu.standard"
objectid="ZK_J15213K0J0EPD0IVLFLIDO1SG0"
resourceroot="ModularTabMenuStandard" action="update" active="true" default="false" domain="rel"
type="default">
<!--Set the context-root!-->
<!--Set the uniquename to something meaningful-->
<!--Set the resourceroot to the directory name of your skin-->
<!--Use the skin OID ZK_J15213K0J0EPD0IVLFLIDO1SG0 in the allowed-skin tag in your theme-->
</skin>
<theme context-root="/wps/ModularTabMenu" uniquename="com.ibm.theme.modtabmenu" action="update"
active="true" default="false"
domain="rel" objectid="ZJ_J15213K0J0EPD0IVLFLIDO10G7" resourceroot="dynamicSpots">
<!--Set the context-root!-->
<!--Set the uniquename to something meaningful-->
<!--Set the allowed skin to your new custom skin!-->
<allowed-skin skin="ZK_J15213K0J0EPD0IVLFLIDO1SG0" update="set"/>
</theme>
</portal>
</request>
1e. テーマの動的リソース参照を変更する
このステップを完了するには、インフォメーション・センターの操作手順(「Modifying the
dynamic resource references for your theme」) に従います。
この記事の例では、ConfigEngine タスクを使用して WP DynamicContentSpotMappings REP のカス
タム・プロパティーの作成を単純化しました。
リスト 9. カスタム・プロパティーの作成
ConfigEngine.sh modify-theme-dynamic-resource-references-80
-DCustomThemePrefixName=modularTabMenu
-DCustomThemeContext=/wps/ModularTabMenu
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 5 / 18
developerWorks®
ibm.com/developerWorks/jp/
modify-theme-dynamic-resource-references-80 タスクは、Portal 8.0.0.1 の累積フィックス 7 以降で
利用できます。
注: このタスクはすべてのカスタム・プロパティーに対してデフォルト値を使用するため、Portal
のコンテキスト・ルートが /wps でない場合は、/wps/themeModules への参照を更新して、使用シ
ステムの該当する値にする必要があります。
theme*.html ファイルの更新では、fs-type1 ディレクトリーをマウントし、sed スクリプトを使用
してファイルを更新しました。
リスト 10. WebDAV による fs-type1 のマウント
mount.davfs http://example.com:10039/wps/mycontenthandler/dav/fs-type1/ /mnt/portal/dav/fs-type1
リスト 11. sed スクリプトによるカスタム・プロパティー参照の更新
find . -name "theme*.html" | xargs -n 1 sed -i "s/80theme_/modularTabMenu_/g"
1f. スキンの動的リソース参照を変更する
このステップを完了するには、インフォメーション・センターの操作手順 (「Modifying the
dynamic resource references for your skin」) に従います。
ここでも、sed スクリプトを使用して skin*.html ファイルを編集しました。
リスト 12. sed スクリプトによるカスタム・プロパティー参照の更新
find . -name "skin*.html" | xargs -n 1 sed -i "s/80theme_/modularTabMenu_/g"
2. テーマにフィーチャーを追加する
新しいテーマが機能しているので、ページを作成し、新規の「Modular Tab Menu」テーマをその
ページに適用します。この時点では、このテーマは Portal 8.0.0.1 テーマとまったく同じに見えま
す。ここから、本当の作業が始まります。
ここに至るまでの作業時間は約 4 時間です。これには、xslt または新しい ConfigEngine タスクの
作成に要した時間は含まれていません。独自のカスタム・テーマの開発コストを見積もるのに役
立つように、時間的な制約は課さずに続けていきます。
開発モードをオンにする
今はテーマの開発 モードをオンにすべきときです。このモードでは、サーバーを再起動してサー
バー側のキャッシュをクリアしなくても済むため、変更をより早く確認できます。
開発モードを有効にするには、WP ConfigService リソース環境プロバイダー (REP) 内で
resourceaggregation.development.modeプロパティーを true に設定します。WAS コンソールで
WP ConfigService REP を見つけるには、「リソース」 > 「リソース環境」 > 「リソース環境プロバ
イダー」の順にナビゲートします。
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 6 / 18
ibm.com/developerWorks/jp/
developerWorks®
カスタム・テーマをパーツにスライスする
元の「Tab Menu – Page Builder」テーマは Default.jsp に多くのコードを保有していたので、取り組
みやすい開始点となります。ここでの目標は可能な限り Portal 8.0.0.1 テーマを使用することです
が、古いテーマに適合するようにスタイルを変更します。切り取ってモジュールとして定義する
のに適した 3 つの基本パーツを見つけるために、私は Default .jsp を調べました。
最初に、私は jsp パーツを探しました。これらのパーツは、8.0.0.1 テーマでは jsp として実装され
ています。ナビゲーションやテーマのヘッダーおよびフッターのようなものは jsp として定義され
ています。元の「Tab Menu – Page Builder」では、これらはすべて Default .jsp に格納されていま
した。しかし、8.0.0.1 テーマではこれらは別々に存在し、はるかに論理的で保守しやすいパーツ
となります。Portal 文書ではこれらの論理パーツを動的コンテンツ・スポットと呼んでおり、従
来の jsp パーツよりもはるかに柔軟性に富んでいます。動的コンテンツ・スポットの詳細な説明を
お読みください。
次に、私は JavaScript パーツを探しました。元のテーマは、外部の JavaScript ファイルへの参照と
Default.jsp 自体のインライン JavaScript への参照をともに備えていました。
最後に、新しいテーマで必要とされる css ファイルを探しました。
jsp ファイル
必要とされた最大の変更はナビゲーションに対するものでした。元のテーマのナビゲーションは
豊富な Dojo 機能を持ち、子ページ用のドロップダウン・メニューを備えています。表示モード
では、8.0.0.1 テーマは Dojo をまったく使用しないため、Dojo モジュールをテーマに追加する必
要もありましたが、それについては後で詳しく述べます。ログイン、ログアウト、ヘルプなどの
「一般的なアクション」を処理する Default.jsp のスライスも見つけました。私はその jsp のスラ
イスを「commonActions_pb.jsp」へ移しました。このファイルは、テーマの残りの要素とともに
この記事の「ダウンロード」セクションで入手できます。元のテーマの鉛筆アイコンを使用可能
にするために、pageModeToggle.jsp に微調整を施しました。
図 1 にはトップ・ナビゲーションを形成する「ホーム」、「管理」、「アプリケーション」な
どが表示されています。「ようこそ」、「はじめに」などはプライマリー・ナビゲーションの部
分です。右端には、ページの表示モードと編集モードを切り替える鉛筆アイコンと一般的なアク
ションが表示されています。この図には、私が元のテーマからあえてコピーしなかった検索入力
ボックスも表示されています。元のテーマの検索ボックスは 8.0.0.1 テーマの新しいボックスと非
常に似ていたため、新しいほうを保持しました。
図 1. テーマのパーツ
ナビゲーション jsp ファイル
Portal 8.0.0.1 テーマには非常にクリーンで分かりやすい navigation.jsp がありますが、これを完全
に再利用することはできませんでした。トップ・ナビゲーションとプライマリー・ナビゲーショ
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 7 / 18
developerWorks®
ibm.com/developerWorks/jp/
ンを処理するために jsp ファイルを 2 つ新規に作成しました。topNav.jsp と primaryNav.jsp を作成
するために、元の Default.jsp からコードとスタイルをコピーしました。
これらの新しい jsp ファイルを指すように、対応する動的コンテンツ・スポットを変更しました。
詳細については表 1 を参照してください。
表 1. 新しい動的スポット
動的スポット
新しいマッピング
modularTabMenu_topNav
mvc:res:/wps/ModularTabMenu/themes/html/dynamicSpots/
topNav.jsp,smartphone@,tablet@
modularTabMenu_primaryNav
mvc:res:/wps/ModularTabMenu/themes/html/dynamicSpots/
primaryNav.jsp?startLevel=1,smartphone@,tablet@
modularTabMenu_commonActions
mvc:res:/wps/ModularTabMenu/themes/html/dynamicSpots/
commonActions_pb.jsp,smartphone/tablet@res:/wps/ModulaTabMenu/
themes/html/dynamicSpots/commonActions.jsp
動的コンテンツ・スポットについて理解を深めてください。
動的コンテンツ・スポットと他の領域にスマートフォンやタブレットへの参照があることに気づ
いたかもしれません。このシリーズの以降の記事ではこうしたトピックについても扱い、この
テーマをレスポンシブにする方法を示します。
新しい動的スポットをすべて定義したら、今度は新しいテーマの theme_en.html に目を向けると
きです。私はこのファイルを編集し、元のテーマと一致するように新しいテーマをレイアウトし
ました。例えば、元のテーマでは鉛筆アイコンが検索バーの横に表示されています。全体のレイ
アウトがまとまるように html を調整しましたが、時間はそれほどかかりませんでした。ただし、
この時点では JavaScript と css が欠けているため、新しいテーマの機能や外観は不十分です。
JavaScript パーツ
関連する JavaScript ファイルを元のテーマで見つける作業は、このプロセスで最も単調かつエ
ラーが起きやすい箇所でした。1 つの jsp ファイルにいくつかの JavaScript ファイルが含まれて
おり、jsp ファイルの 1 つで数ビットがインライン化されているにすぎませんでした。Firebug の
「ネットワーク」タブを使用して、元のテーマによってロードされたすべての JavaScript ファイル
を確認しましたが、Dojo 関連のファイルはすべて無視しました。元のテーマの古いバージョンの
Dojo はあえて使用しませんでした。Portal 8.0.0.1 テーマでは Dojo 1.7.2 が使用されているため、
新しいテーマでも引き続きこれを使用しました。
新しいテーマでは 4 つの新規 JavaScript ファイルが使用されています。元のテーマから 2 つのファ
イルを直接コピーしました。作成したファイルの 1 つは、元のテーマのインライン JavaScript に基
づいています。もう 1 つのファイルは、IBM 提供のファイルを変更したものです。詳細について
は表 2 を参照してください。
表 2. 新しい JavaScript ファイル
ファイル
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
詳細
ページ 8 / 18
ibm.com/developerWorks/jp/
developerWorks®
menu_service.js
Portal 6.1.5 の wp_profile/installedApps/CELLNAME/wps.ear/wps.war/
menu/menu_service.js から新しいテーマの WebDAV のロケーションに
コピー
PageBuilderTheme.js
wp_profile/installedApps/CELLNAME/Enhanced_Theme.ear/
wp.theme.enhancedtheme.war/themes/html/Enhanced/js/
PageBuilderTheme.js から新しいテーマの WebDAV のロケーションにコ
ピー
ibmPortalEnhancedTheme-nodojo.js
ibmPortalEnhancedTheme.js の変更バージョン。Portal 8.0.0.1 の
PortalServer/theme/wp.theme.dojo/installedApps/dojo.ear/dojo.war/com/
ibmPortalEnhancedTheme.js に保管
modularTabMenu.js
このファイルは元のテーマにあるインライン JavaScript を保持
これらの JavaScript ファイルすべてに対してモジュールを定義し、テーマの contributions フォル
ダーの WebDAV にモジュールを配置しました。
リスト 13. modularTabMenu.json – JavaScript コントリビューション
{
"modules":[
{
"id":"wp_modular_tabmenu",
"contributions":[{
"type":"config",
"sub-contributions":[
{
"type":"js",
"uris":[{
"value":"/js/menu_service.js"
},
{
"value":"/js/menu_service.js.uncompressed.js",
"type":"debug"
}]
},
{
"type":"js",
"uris":[
{
"value":"/js/ibmPortalEnhancedTheme-nodojo.js"
},
{
"value":"/js/ibmPortalEnhancedTheme-nodojo.js.uncompressed.js",
"type":"debug"
}]
},
{
"type":"js",
"uris":[{
"value":"/js/modularTabMenu.js"
},
{
"value":"/js/modularTabMenu.js.uncompressed.js",
"type":"debug"
}]
},
{
"type":"js",
"uris":[{
"value":"/js/PageBuilderTheme.js"
},
{
"value":"/js/PageBuilderTheme.js.uncompressed.js",
"type":"debug"
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 9 / 18
developerWorks®
ibm.com/developerWorks/jp/
}]
}]
}]
}]
}
次に、この新しいモジュールを新規プロファイルに追加しました。この新規プロファイル
は、profile_full.json のコピーに上述のモジュールを追加して新たなプロファイル名を付けたもの
です。
このプロファイルはまた、テーマのデフォルト・プロファイルに設定する必要
があります。WebDAV themelist/ModularTabMenu/metadata.propertiesを編集
し、resourceaggregation.profileを新規プロファイルに設定します。
リスト 14. デフォルト・プロファイルの設定
resourceaggregation.profile=profiles/profile_modulartabmenu.json
CSS パーツ
スタイルを正しく整える作業は、このプロセスで 2 番目に時間のかかる箇所でした。Firebug で
は、ブラウザー・ウィンドウで元のテーマと新しいテーマを切り替えて、違いを探して修正する
ことに多くの時間を費やしました。Portal 8.0.0.1 に付属しているスタイルは変更しないというの
が基本方針でした。代わりに、スタイルを追加して 8.0.0.1 のスタイルをオーバーライドしまし
た。元のテーマから 4 つの css ファイルを直接コピーし、新規の css ファイルを 1 つ作成しまし
た。
表 3. 新しい CSS ファイル
ファイル
詳細
base.css
Portal 6.1.5 の wp_profile/installedApps/CELLNAME/
Enhanced_Theme.ear/wp.theme.enhancedtheme.war/themes/html/
Enhanced/css/base/framework/base.css の変更バージョン
layoutTheme.css
wp_profile/installedApps/CELLNAME/Enhanced_Theme.ear/
wp.theme.enhancedtheme.war/themes/html/Enhanced/css/
defaultTheme/framework/layoutTheme.css から新しいテーマの WebDAV
のロケーションにコピー
default.css
Portal 6.1.5 の wp_profile/installedApps/CELLNAME/
Enhanced_Theme.ear/wp.theme.enhancedtheme.war/themes/html/
Enhanced/css/defaultTheme/defaultTheme.css の変更バージョン
modpb.css
新規のファイル。ここでは、テーマの体裁を整えるために各種のオー
バーライドを保持
反復: JavaScript、CSS、theme.html
微調整や再ロードなどを繰り返し、多くの時間を Firebug で費やしました。ここはコーヒーでも飲
みながら、Alt + Tab のキーボード・テクニックを駆使して上質の時間を過ごすことを計画してく
ださい。この作業にはおよそ 6 日かかりました。ヘッダーなどのエレメントを適切なサイズにす
るために、画面上のピクセル・ルーラーにも時間を要しました。
デバッグ・トレースをオンにすると、反復中に個々の要求を確認するのに役立ちます。
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 10 / 18
ibm.com/developerWorks/jp/
developerWorks®
リスト 15. デバッグ用のトレース・ストリング
com.ibm.wps.resourceaggregator.CombinerDataSource.RemoteDebug=all
このトレースをオンにすると、個々の JavaScript ファイルと css ファイルを Firebug で確認できま
す。このストリングを設定するには、「管理」 > 「ポータルの分析」 > 「トレースを使用可能に
する」の順に選択します。「これらのトレース設定を追加」でストリングを設定し、「+」アイコ
ンをクリックします。あるいは、WebSphere Application Server の管理コンソールで「ロギングお
よびトレース」 > 「WebSphere_Portal」 > 「診断トレース・サービス」の順にナビゲートして、
このストリングを設定することもできます。
プロジェクト・メニュー
Portal 8 の新規フィーチャーの 1 つに、一連の変更を 1 つのプロジェクトにまとめる機能がありま
す。このプロジェクトには、Web コンテンツ管理の変更や Portal ページの変更など、さまざまな
変更を収めることができます。このフィーチャーは Portal 8 テーマのヘッダー領域に表示される
ため、新しいテーマにこのフィーチャーを追加しましたが、Modular Tab Menu テーマの体裁に合
うようにスタイルを変更しました。
プロジェクト・メニューのマークアップは、theme*.html ファイルの動的コンテンツ・スポット
を介してページに挿入されます。theme_en.html ファイル (「ダウンロード」セクションを参照)
には、このスポットが組み込まれています。このスポットは元の 8.0.0.1 テーマのものと同じです
が、このテーマ向けに微調整が施されています。
リスト 16. theme_en.html 内のプロジェクト・メニューの動的コンテンツ・スポッ
ト
<!-- displays the state of the current page -->
<div class="wpthemeRight modpbPageTools">
<arel="dynamic-content"href="dyn-cs:id:modularTabMenu_projectMenu"></a>
</div>
プロジェクト・メニュー (図 2) を使用すると、サイト作成者は、現在公開されているサイトの表
示と特定の変更が適用されたサイトの表示を切り替えることができます。
図 2. プロジェクト・メニュー
編集モード
元のテーマは、スタイルの設定やページ・レイアウトの変更などを可能にする独自の編集モード
を備えていました。このモードを移行させる気はありませんでした。代わりに、新しいテーマの
編集モードを使用する方針を立てました。新しい編集モードには Portal 8.0.0.1 のフィーチャー
がすべて組み込まれていたため、これは各フィーチャーを利用可能にする最適な方法でした。プ
ロジェクト・メニューの場合とは異なり、元のテーマの体裁に合うようにシェルフをデザインし
ようとはほとんどしませんでした。これはオーサリング・モードであり、サイト訪問者用の表示
モードではないため、シェルフが元のテーマのように見えるかどうかは重要でないと考えまし
た。
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 11 / 18
developerWorks®
ibm.com/developerWorks/jp/
上述のプロジェクト・メニューと同様に、編集モードは元の 8.0.0.1 テーマにある動的コンテン
ツ・スポットです。
リスト 17. theme_en.html 内の編集モード (汎用ツールバー) の動的コンテンツ・ス
ポット
<!-- inserts the universal toolbar -->
<a rel="dynamic-content" href="dyn-cs:id:modularTabMenu_toolbar"></a>
図 3 は、Portal 8.0.0.1 テーマの編集モードがトップ・ナビゲーションとプライマリー・ナビゲー
ションの間でどのように表示されるかを示しています。Modular Tab Menu テーマでも同様の処理
を施します。
図 3. Portal 8.0.0.1 テーマの編集モード
編集モードのシェルフは、Portal 8.0.0.1 テーマと同様にグレーのスタイルです。スペースに微調
整を加えてシェルフが正しく適合するようにしました (図 4 参照)。
図 4. Modular Tab Menu テーマの編集モード
編集モードの各タブの内容を容易にカスタマイズすることもできます。例えば、元のテーマの
「スタイル」タブには、Portal 8.0.0.1 テーマとは異なる色の選択リストがあります。そのため、
元のテーマにある色と一致するように system/styles.json を更新しました。
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 12 / 18
ibm.com/developerWorks/jp/
developerWorks®
テーマ・スタイルの作成について理解を深めてください。
3. 整理
期待どおりにテーマが機能していることを確認した後、私は丸 1 日を割いて最終的な各種作業に
取り組み、環境を整理しました。Dojo ShrinkSafe を使用して、必要とされた JavaScript をすべて
圧縮しました。さらに、追加した css ファイルも圧縮しました。theme_en.html の最終完成版に基
づいてすべての theme_*.html ファイルを更新しました。diff ツールを使用して、言語固有の部分
を上書きしないように注意しながら theme_en.html の変更を他の言語バージョンにマージしまし
た。さらに、デバッグ・トレースをオフにしてテスト・スイートを再度実行しました。
変更の全リスト
表 4. WebDAV: WebDAV/fs-type1/themes/Portal8.0 と WebDAV/fs-type1/themes/
ModularTabMenu の比較
ファイル
変更内容
ModularTabMenu/contributions/modularTabMenu.json
JavaScript コントリビューションを定義する新規モジュール
ModularTabMenu/css
複数のフォルダーを削除
(black、blue、gold、green、orange、purple、white)
ModularTabMenu/css
複数のフォルダーを追加。Portal 6.1.5 の wp_profile/installedApps/
CELLNAME/Enhanced_Theme.ear/wp.theme.enhancedtheme.war/themes/
html/Enhanced/css/
からコピー
(blueTheme、greenTheme、greyTheme、lightGreenTheme、lightGreyTheme、orang
ModularTabMenu/css/default/default.css*
本体のスタイルを削除
/ModularTabMenu/css/default/icon.gif
元のテーマと一致するように変更
ModularTabMenu/css/default/modpb_mobile.css*
プレースホルダー
ModularTabMenu/css/images
Portal 6.1.5 から多くのイメージをコピー
ModularTabMenu/css/pagebuilder
新規の css ファイル。一部は Portal 6.1.5 からコピーして微調整
ModularTabMenu/css/widgets
ModularTabMenu/css/master.css*
新規の JavaScript への参照を追加
ModularTabMenu/images/favicon.ico
元のテーマのファビコンを使用
ModularTabMenu/js/ibmPortalEnhancedTheme-nodojo.js*
Portal 8.0.0.1 の PortalServer/theme/wp.theme.dojo/installedApps/
dojo.ear/dojo.war/com/ibmPortalEnhancedTheme.js の変更バージョン
(Dojo の参照を削除)
ModularTabMenu/js/menu_service.js*
Portal 6.1.5 からコピー
ModularTabMenu/js/PageBuilderTheme.js*
Portal 6.1.5 からコピー
ModularTabMenu/js/modularTabMenu.js*
Portal 6.1.5 の Default.jsp から派生
ModularTabMenu/nls/sidenav/*
動的スポットの参照を更新
ModularTabMenu/profiles/profile_modulartabmenu.json
テーマの新しいデフォルト・プロファイル。profile_full.json からコ
ピーして名前を変更
ModularTabMenu/system/styles.json
元のテーマと一致するように編集モードのスタイル・タブを更新
ModularTabMenu/nls/theme_*.html
元のレイアウトと一致するように HTML を変更
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 13 / 18
developerWorks®
ibm.com/developerWorks/jp/
表 5. EAR: ModularTabMenu.ear と PortalServer/theme/wp.theme.themes/default80/
installedApps/DefaultTheme80.ear の比較
ファイル
変更内容
themes/html/dynamicSpots/commonActions.jsp
新しいテーマでは不使用
themes/html/dynamicSpots/commonActions_pb.jsp
一般的なアクションを実装
themes/html/dynamicSpots/crumbTrail.jsp
クラス名をエスケープするための退屈な微調整
themes/html/dynamicSpots/mobileNavigation.jsp
新しいテーマでは使用されないが、微調整を加えて blank.gif への参照
を削除
themes/html/dynamicSpots/pageBuilderModularConfig.jsp
テーマの初期化に必要なロジックを保持する新規 jsp。元の Default.jsp
の部分からコピー
themes/html/dynamicSpots/pageModeToggle.jsp
鉛筆アイコンを表示するために微調整
themes/html/dynamicSpots/primaryNav.jsp
プライマリー・ナビゲーションの生成に使用する新規 jsp。元の
Default.jsp の部分からコピー
themes/html/dynamicSpots/status.jsp
blank.gif への参照を削除
themes/html/dynamicSpots/topNav.jsp
トップ・ナビゲーションの生成に使用する新規 jsp。元の Default.jsp の
部分からコピー
themes/html/bootstrap.jspf
ナビゲーションに必要な変数を追加
パフォーマンスの比較
元のテーマとモジュール化された新しいテーマの完全なパフォーマンス比較は実施しませんでし
た。ただし、ブランク・ページを対象に要求およびダウンロード・サイズを 2 つのテーマ間で比
較しました。
表 6. 部分的なパフォーマンスの比較
Portal 6.1.5 の元のテーマ
モジュール化された Tab Menu テーマ
要求
38
25
合計バイト数
2.5 MB
1.5MB
ModularThemeExploit.zip
「ダウンロード」セクションで入手可能なこの zip 内には 3 つのファイルがあります。グラフィ
カルな diff ツール (Beyond Compare または meld both work) を使用して、zip のコンテンツを
WebDAV 内のコンテンツと比較しました。
リスト 18. WebDAV と ModularTabMenu-webdav.zip のコンテンツの比較
unzip ModularTabMenu-webdav.zip -d /tmp/ModularTabMenu
bcompare /mnt/portal/dav/themelist/ModularTabMenu/ /tmp/ModularTabMenu/themelist/ModularTabMenu/
bcompare /mnt/portal/dav/skinlist/ModularTabMenuStandard/ /tmp/ModularTabMenu/skinlist/
ModularTabMenuStandard/
bcompare /mnt/portal/dav/fs-type1/themes/ModularTabMenu/ /tmp/ModularTabMenu/fs-type1/themes/ModularTabMenu/
検出された重要な相違は解決してください。
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 14 / 18
ibm.com/developerWorks/jp/
developerWorks®
まとめ
私はこの作業に計 9.5 日を費やしました。その時間内に Portal 6.1.5 テーマをモジュール化
し、Portal 8 の新規フィーチャーを活用することができました。それと同時に、元のテーマのルッ
ク・アンド・フィールを維持することができました。余録として、新しいテーマはサイズが縮小
し、元のテーマよりもサーバー要求が減少しています。
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 15 / 18
developerWorks®
ibm.com/developerWorks/jp/
ダウンロード
内容
サンプル・テーマのモジュール化バージョン
ファイル名
ModularThemeExploit.zip
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
サイズ
3310KB
ページ 16 / 18
ibm.com/developerWorks/jp/
developerWorks®
参考文献
• • • • IBM WebSphere Portal 8.0 の概要
IBM WebSphere Portal 8.0 製品資料
Developing themes for WebSphere Portal 8.0
developerWorks シリーズ:WebSphere Portal を使用してレスポンシブ Web デザインを実装す
る
• developerWorks シリーズ:WebSphere Portal と IBM Worklight による卓越したモバイル Web
エクスペリエンスの提供
• developerWorks のモバイル開発のサイト:包括的な IBM MobileFirst 製品ポートフォリオで、
モバイル・アプリケーション開発者を対象とする最新のツールとテクノロジーをお試しくだ
さい。無料のソフトウェア・ダウンロード、クラウドの試用版、サンプル・コード、専門家
によるハウツー・アドバイス、動画、トレーニング、ディスカッションなどをご利用いただ
けます。
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 17 / 18
developerWorks®
ibm.com/developerWorks/jp/
著者について
David Nixon
David Nixon is the Chief Programmer for WebSphere Portal 8.0.0.1. David has worked
in Portal and Portal Express for many years and has contributed code in many areas
including theme development, virtual portal features, and deployment scenarios.
© Copyright IBM Corporation 2014
(www.ibm.com/legal/copytrade.shtml)
商標
(www.ibm.com/developerworks/jp/ibm/trademarks/)
WebSphere Portal テーマのモバイルへの移行: (パート1)
WebSphere Portal 6.1.x または 7.x テーマのモジュール化
ページ 18 / 18