28
1 テクてくLotus 技術者夜会 © 2010 IBM Corporation ~Lotus iNotes をカスタマイズしてみよう~ 2011/11/18 Yamato Software Development Lab Lotus Product Development Masashi Miyazaki ([email protected]) Kouichiro Morinaka ([email protected])

Lotus iNotes をカスタマイズしてみよう

Embed Size (px)

DESCRIPTION

2011年のテクてくで使用した資料です。かなり古いのですが需要があるような気がしたので公開しておきます。

Citation preview

Page 1: Lotus iNotes をカスタマイズしてみよう

1

テクてくLotus 技術者夜会

© 2010 IBM Corporation

~Lotus iNotes をカスタマイズしてみよう~

2011/11/18 Yamato Software Development Lab

Lotus Product DevelopmentMasashi Miyazaki ([email protected])

Kouichiro Morinaka ([email protected])

Page 2: Lotus iNotes をカスタマイズしてみよう

2

Lotus iNotes をカスタマイズしてみよう Lotus iNotes は HTML, JavaScript や CSS といった Web

標準技術を採用しフレキシブルなアーキテクチャを実現しています。

カスタマイズについても同様に、CSS を使った外観の変更や、JavaScript を使った動作の変更など様々な方法でカスタマイズを行うことが可能です。また、8.5.1 以降のリリースでカスタマイズが行いやすいように様々な機能拡張を行ってきました。

本日のハンズオンでは、Lotus iNotes カスタマイズの概要や方法をご説明し、簡単なカスタマイズを実際に体験していただくことができます。

© 2011 IBM Corporation

Page 3: Lotus iNotes をカスタマイズしてみよう

3© 2011 IBM Corporation

mail85.ntf

mail/user.nsf

設計

iNotes/Forms85.nsf

iNotes Pageビュー設計

データ

HTML, JavaScript,

CSS, Images

Lotus iNotes アーキテクチャ

&ui=dwa_ulite

Ultralite Mode

&ui=inotes (default)

Full ModeFull Mode

&ui=dwa_lite

Lite ModeLite Mode

参照

Page 4: Lotus iNotes をカスタマイズしてみよう

4© 2011 IBM Corporation

mail85.ntf

mail/user.nsf

設計

iNotes/Forms85.nsf

iNotes Pageビュー設計

データ

HTML, JavaScript,

CSS, Images

Lotus iNotes アーキテクチャ+カスタマイズ

参照iNotes/

Forms85_x.nsf

カスタム JSカスタム CSS

カスタムイメージ

Page 5: Lotus iNotes をカスタマイズしてみよう

5

Lotus iNotes カスタマイズの概要 iNotes/Forms85.nsf

Lotus iNotes 本体のコード (HTML, JavaScript, CSS, 画像等) が含まれています。

Lotus iNotes は AJAX アプリケーションです。データ・デザイン情報・追加コード等は必要に応じてバックグラウンドでロードされます。

iNotes/Forms85_x.nsf 8.5.1 から新規導入された Forms85_x.ntf を使って作成します。 Forms85.nsf から Forms85_x.nsf 内のカスタマイズコードが呼び出され

、Lotus iNotes の動作をフック、またはオーバーライドすることが可能です。

Hotfix, Fixpack を適用しても Forms85_x.nsf は上書きされないためカスタマイズ再適用の必要がありません。ただし事前の動作検証を推奨します。

メンテナンスリリース適用時にも Forms85_x.nsf は上書きされませんが、事前の動作検証が必要です。製品コードの変更によりカスタマイズが動作しない可能性もあります。

© 2011 IBM Corporation

Page 6: Lotus iNotes をカスタマイズしてみよう

6© 2011 IBM Corporation

サブフォーム名 アーキテクチャ 説明

Custom_Banner Classic「IBM Lotus iNotes」ロゴを置き換える

Custom_Banner_Lite Lite

Custom_common_Utils Classic/Lite 各サブフォームから呼び出される共通機能を定義可能

Custom_CSS Classic/Lite CSS を使用したカスタマイズ

Custom_CSSPortal Classic/Lite CSS を使用したカスタマイズ (Portal 用)

Custom_JS ClassicJavaScript を使用したカスタマイズ

Custom_JS_Lite Lite

Custom_JS_Edit Classic/Lite リッチテキストエディタにフォントを追加

Custom_Masthead Classic/Lite マストヘッド用 HTML のカスタマイズ

Custom_Page_Dictionary Classic/Lite ここで定義した変数を Custom_CSS 内で参照可能

Custom_Welcome Classic/Lite ウェルカムページに選択肢を追加

カスタマイズ用設計要素 (8.5.1)

※ Custom_CSS と Custom_JS_Lite についてはハンズオンで取り上げます。 ※ 8.5.3 現在、メールフォーム (Full/Lite)、会議招集フォーム (Lite のみ) とすべてのフォル

ダ・ビューが Lite アーキテクチャです。それ以外はすべて Classic アーキテクチャです。

Page 7: Lotus iNotes をカスタマイズしてみよう

7© 2011 IBM Corporation

カスタマイズ用設計要素 (8.5.2 で追加)

サブフォーム名 アーキテクチャ 説明Custom_AppointmentDictionary Classic Appointmentフォーム用のカスタム

変数定義Custom_AppointmentDictionary_Lite LiteCustom_ContactDictionary Classic Contantフォーム用のカスタム変数

定義Custom_ContactDictionary_Lite LiteCustom_Logout Classic/Lite ログアウト時に実行される@関数な

どを定義可能Custom_MailMemoDictionary Classic MailMemoフォーム用のカスタム変

数定義Custom_MailmemoDictionary_Lite LiteCustom_TodoDictionary Classic Todoフォーム用のカスタム変数定義Custom_TodoDictionary_Lite Lite

※ 8.5.3 現在、メールフォーム (Full/Lite)、会議招集フォーム (Lite のみ) とすべてのフォルダ・ビューが Lite アーキテクチャです。それ以外はすべて Classic アーキテクチャです。

Page 8: Lotus iNotes をカスタマイズしてみよう

8

ソースコードの Obfuscation (難読化) Lotus iNotes では高速化のためにソースコードの Obfuscation を行なっています。 空白や改行を削除 長い関数名、変数名を短いシンボル名に置き換え

AAA ← com_ibm_dwa_globals DSq ← oScript ELU ← com_ibm_dwa_ui_invokeAction ESV ← com_ibm_dwa_ui_actionRefreshContent EJs ← oContext BYp ← buildResourcesUrl

変換テーブルが Forms85.nsf 内に ObfuscationList.txt として提供されており、実際のシンボル名を確認することが可能です。

© 2011 IBM Corporation

Page 9: Lotus iNotes をカスタマイズしてみよう

9

Lotus iNotes をカスタマイズしてみよう ハンズオンの環境について

IBM Lotus Domino Server 8.5.3 日本語版 IBM Lotus Domino Designer 8.5.3 日本語版 Web ブラウザ

Internet Explorerhttp://windows.microsoft.com/ja-JP/internet-explorer/products/ie/home

IE Developer Toolbar (IE8/9 では不要)http://www.microsoft.com/download/en/details.aspx?id=18359

Google Chromehttp://www.google.co.jp/chrome/intl/ja/landing_ie.html

© 2011 IBM Corporation

Page 10: Lotus iNotes をカスタマイズしてみよう

10

Lotus iNotes をカスタマイズしてみよう ハンズオンで行うカスタマイズ

A. 文字サイズを大きくしてみよう (Custom_CSS) B. メール送信前に確認画面を表示してみよう (Custom_JS_Lite) C. メールファイルを圧縮してみよう (Custom_JS_Lite +

LotusScript)

© 2011 IBM Corporation

Page 11: Lotus iNotes をカスタマイズしてみよう

11

A. 文字サイズを大きくしてみよう1. iNotes/Forms85_x.nsf を作成 Forms85_x.ntf を使って Forms85_x.nsf を作成します。 データベースプロパティを変更します。

(テンプレートからの設計更新) 適切なアクセス権を設定します。

(-Default- が設計者になっています) ハンズオン環境では作成済みです。

© 2011 IBM Corporation

Page 12: Lotus iNotes をカスタマイズしてみよう

12

A. 文字サイズを大きくしてみよう2. 変更したい文字に適用されている CSS スタイルを確認 Internet Explore または Google Chrome を起動して

iNotes にログインします。 メールファイル – http://localhost/mail/tuser.nsf ユーザー名 – Test User パスワード – password

デベロッパーツールを起動します IE6/7 の場合 – マウスカーソルのアイコン IE8/9 の場合 – 歯車のアイコン → F12 開発者ツール Chrome の場合 - スパナのアイコン → ツール → デベロッパーツール

© 2011 IBM Corporation

Page 13: Lotus iNotes をカスタマイズしてみよう

13

A. 文字サイズを大きくしてみよう2. 変更したい文字に適用されている

CSS スタイルを確認 デベロッパーツールで「受信ボック

ス」に適用されている CSS スタイルを確認します

IE の場合 – マウスカーソルのアイコン → 「受信ボックス」をクリック

Chrome の場合 – Elements タブ → 左下の虫眼鏡アイコン → 「受信ボックス」 をクリック

→ s-outline-text というスタイルが適用されていることが分かります (右側のタブで変更も可能)

© 2011 IBM Corporation

Page 14: Lotus iNotes をカスタマイズしてみよう

14

A. 文字サイズを大きくしてみよう3. Domino Designer で

Forms85_x.nsf を変更 Domino Designer を起動して

iNotes/Forms85_x.nsf を開きます。

Custom_CSS サブフォームに以下の CSS を追加します。.s-outline-text {font-size: 95%;}

Custom_CSS サブフォームを保存して閉じます

© 2011 IBM Corporation

Page 15: Lotus iNotes をカスタマイズしてみよう

15

A. 文字サイズを大きくしてみよう4. カスタマイズを反映させる Domino サーバー上でカスタマイズ

コードを更新します。 tell http quit コマンドを実行し

て HTTP タスクを終了 load http コマンドを実行して

HTTP サーバーを再起動 ブラウザキャッシュをクリアします

。 IE の場合 – Developer Toolbar

の Cache – Always Refresh from Server

Chrome の場合 – デベロッパーツールの右下の歯車アイコン → Disable cache

© 2011 IBM Corporation

Page 16: Lotus iNotes をカスタマイズしてみよう

16

A. 文字サイズを大きくしてみよう5. 動作を確認する Lotus iNotes に再度ログインします

。→ 文字サイズが大きくなっていれば成功

ヒント s-page-title や s-label-light 等

の文字サイズも変更すると全体の統一感が出ます

© 2011 IBM Corporation

Page 17: Lotus iNotes をカスタマイズしてみよう

17

B. メール送信前に確認画面を表示してみよう1. カスタマイズするアーキテクチャを

確認 Domino Designer を起動して

iNotes/Forms85_x.nsf を開きます。

Custom_JS サブフォームに以下のコードを追加します。function

Custom_Scene_PreSubmit(s_SceneName, o_Window, s_SubmitAction) {alert(“Custom_Scene_PreSubmit(“ + s_SceneName + “, “ + o_Window + “, “ + s_SubmitAction + “)”);return s_SubmitAction;}

© 2011 IBM Corporation

Page 18: Lotus iNotes をカスタマイズしてみよう

18

B. メール送信前に確認画面を表示してみよう1. カスタマイズするアーキテクチャを確認 Custom_JS_Lite サブフォームに以下のコードを追加します。

function Custom_Scene_PreSubmit_Lite(s_SceneName, bInEditMode) {alert(“Custom_Scene_PreSubmit_Lite(“ + s_SceneName + “, “ + bInEditMode + “)”);return true;}

ヒント Custom_Scene_PreSubmit/Custom_Scene_PreSubmit_Lite は文書の保存または送信時に呼び出されます。

alert(“…”); の代わりに debugger; を追加すると、スクリプトデバッガで処理を中断することができます。

© 2011 IBM Corporation

Page 19: Lotus iNotes をカスタマイズしてみよう

19

B. メール送信前に確認画面を表示してみよう2. カスタマイズを反映させる Domino サーバー上でカスタマイズコードを更新します。 ブラウザキャッシュをクリアします。 Lotus iNotes に再度ログインします。 自分宛にメールを送信してみます。→ Custom_Scene_PreSubmit_Lite と表示されたのでメールフォームは Lite アーキテクチャと分かります→ メールフォームの s_SceneName が memo であることが分かります

© 2011 IBM Corporation

Page 20: Lotus iNotes をカスタマイズしてみよう

20

B. メール送信前に確認画面を表示してみよう3. Custom_JS_Lite をカスタマイズする Custom_JS サブフォームの変更を元に戻します。 Custom_JS_Lite サブフォームに以下のコードを追加します。

function Custom_Scene_PreSubmit_Lite( s_SceneName, bInEditMode ){

if (s_SceneName == “memo”) {if (!confirm(‘送信しますか?’))

return false; }return true;

} ヒント

s_SceneName が memo の時だけ処理することでメール送信時にのみカスタマイズを適用しています。

return false; でメール送信をキャンセル、return true; でメール送信を続行しています。

© 2011 IBM Corporation

Page 21: Lotus iNotes をカスタマイズしてみよう

21

B. メール送信前に確認画面を表示してみよう4. カスタマイズを反映させる Domino サーバー上でカスタマイズコードを更新します。 ブラウザキャッシュをクリアします。 Lotus iNotes に再度ログインします。 自分宛にメールを送信してみます。→ 送信しますか?」と表示されます→「キャンセル」を選択してメールが送信されなかったら成功です

© 2011 IBM Corporation

Page 22: Lotus iNotes をカスタマイズしてみよう

22

C. メールファイルを圧縮してみよう(上級者編)1. 受信ボックスにボタンを追加 Custom_JS_Liteサブフォームの以下のコメントを削除します。<NotesComment> → 削除// Expose this comment block to include actions helper routines for Lite mode<InsertNotesSubForm Name=API_ActionsHelper_Subform_Lite></NotesComment> → 削除

© 2011 IBM Corporation

Page 23: Lotus iNotes をカスタマイズしてみよう

23

C. メールファイルを圧縮してみよう(上級者編)1. 受信ボックスにボタンを追加 Custom_JS_Lite サブフォームの Custom_Scene_Actions_Lite を変更し

ます。 function Custom_Scene_Actions_Lite(s_MenuID) {

if (s_MenuID.indexOf(“mailview”) != -1) {var bLeftItems = true;var aAdd1 = [{

title:“圧縮”, find_id: “new”, id: “compress”, before: true,action:“actionCompress”,help_text:“メールファイルを圧縮します“

}];addActionsLite( s_MenuID, bLeftItems, aAdd1 );}

}

© 2011 IBM Corporation

Page 24: Lotus iNotes をカスタマイズしてみよう

24

C. メールファイルを圧縮してみよう(上級者編)1. 受信ボックスにボタンを追加 Custom_JS_Lite サブフォームに以下のコードを追加します。

function actionCompress() {var sUrl = location.href.split(‘.nsf’)[0]

+ ‘.nsf/compress?OpenAgent’;var oHttpRequest = window.XMLHttpRequest ?

new XMLHttpRequest :new ActiveXObject('Microsoft.XMLHttp');

oHttpRequest.open('GET', sUrl);oHttpRequest.onreadystatechange = function() {if (this.readyState == 4)

alert(this.responseText);}oHttpRequest.send();

}

© 2011 IBM Corporation

Page 25: Lotus iNotes をカスタマイズしてみよう

25

C. メールファイルを圧縮してみよう(上級者編)2. メールファイルを圧縮するエージェントを作成 mail/tuser.nsf 内に compress エージェントを作成します。

Sub InitializeDim session As New NotesSessionDim db As NotesDatabaseSet db = session.CurrentDatabaseCall db.Compact()Print "Content-Type:text/plain; charset=Shift_JIS"Print "メールファイルを圧縮しました"

End Sub ヒント

実行時トリガーを 「スケジュール」「なし」に変更します NotesDatabase.Compact を実行するために 「制限付き

LotusScript/Java エージェントの署名または実行」のアクセス権が必要になります

© 2011 IBM Corporation

Page 26: Lotus iNotes をカスタマイズしてみよう

26

C. メールファイルを圧縮してみよう(上級者編)3. カスタマイズを反映させる Domino サーバー上でカスタマイズコードを更新します。 ブラウザキャッシュをクリアします。 Lotus iNotes に再度ログインします。 圧縮ボタンを押してみます。→ 「メールファイルを圧縮しました」と表示されたら成功です。

© 2011 IBM Corporation

Page 27: Lotus iNotes をカスタマイズしてみよう

27

参照情報 テクてくLotus トピック – iNotesカスタマイズQ&A

https://www.ibm.com/developerworks/mydeveloperworks/groups/service/forum/topicThread?topicUuid=5ed7438a-68f3-4630-ae51-f2b39d6b7ae4&communityUuid=b9fc1613-1e5e-4fe7-9a9b-fabd0b5195f1

Lotus iNotes 8.5.1 新カスタマイズ機能解説http://www.ibm.com/developerworks/jp/lotus/ldd_tech/2010july09_inotes.html

Manipulating data in Domino Web Access(英語)http://www.ibm.com/developerworks/lotus/library/dwa-data/

Manipulating data in iNotes Lite forms (英語)http://www-10.lotus.com/ldd/dominowiki.nsf/dx/manipulating-data-in-inotes-lite-forms

iNotes customization changes for 8.5 (英語)http://www-10.lotus.com/ldd/dominowiki.nsf/dx/inotes-customization-changes-for-8.5

Customization updates for 8.5.1 (英語)http://www-10.lotus.com/ldd/dominowiki.nsf/dx/customization-updates-for-8.5.1

Customization updates for 8.5.2 (英語)http://www-10.lotus.com/ldd/dominowiki.nsf/dx/Customization_updates_for_8.5.2

© 2011 IBM Corporation

Page 28: Lotus iNotes をカスタマイズしてみよう

28

© IBM Corporation 2011. All Rights Reserved.

ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独自の見解を反映したものです。それらは情報提供の目的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助言を意図したものではなく、またそのような結果を生むものでもありません。本プレゼンeーションに含まれている情報については、完全性と正確性を帰するよう努力しましたが、「現状のまま」提供され、明示または暗示にかかわらずいかなる保証も伴わないものとします。本プレゼンテーションまたはその他の資料の使用によって、あるいはその他の関連によって、いかなる損害が生じた場合も、IBMは責任を負わないものとします。 本プレゼンテーションに含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかなる保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使用を規定する適用ライセンス契約の条項を変更することを意図したものでもなく、またそのような結果を生むものでもありません。

本プレゼンテーションでIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を行っているすべての国でそれらが使用可能であることを暗示するものではありません。本プレゼンテーションで言及している製品リリース日付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の決定権をもっていつでも変更できるものとし、いかなる方法においても将来の製品または機能が使用可能になると確約することを意図したものではありません。本資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上高の向上、またはその他の結果が生じると述べる、または暗示することを意図したものでも、またそのような結果を生むものでもありません。

パフォーマンスは、管理された環境において標準的なIBMベンチマークを使用した測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラミングの量、入出力構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。

記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使用したか、またそれらのお客様が達成した結果の実例として示されたものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。

IBM、IBM ロゴ、ibm.com は、世界の多くの国で登録されたInternational Business Machines Corporationの商標です。

他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。

現時点でのIBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。

Adobe, Adobeロゴ, PostScript, PostScriptロゴは、Adobe Systems Incorporatedの米国およびその他の国における登録商標または商標です。

IT Infrastructure Libraryは英国Office of Government Commerceの一部であるthe Central Computer and Telecommunications Agencyの登録商標です。

Intel, Intelロゴ, Intel Inside, Intel Insideロゴ, Intel Centrino, Intel Centrinoロゴ, Celeron, Intel Xeon, Intel SpeedStep, Itanium, Pentium は Intel Corporationまたは子会社の米国およびその他の国における商標または登録商標です。

Linuxは、Linus Torvaldsの米国およびその他の国における登録商標です。

Microsoft, Windows, Windows NT および Windowsロゴは Microsoft Corporationの米国およびその他の国における商標です。

ITILは英国Office of Government Commerceの登録商標および共同体登録商標であって、米国特許商標庁にて登録されています。

UNIXはThe Open Groupの米国およびその他の国における登録商標です。

Cell Broadband Engineは、米国およびその他の国におけるSony Computer Entertainment, Inc.の商標であり、同社の許諾を受けて使用しています。

JavaおよびすべてのJava関連の商標およびロゴは Sun Microsystems, Inc.の米国およびその他の国における商標です。

他の会社名、製品名およびサービス名等はそれぞれ各社の商標。

© 2011 IBM Corporation