More Related Content
Similar to Lotus iNotes をカスタマイズしてみよう (20)
Lotus iNotes をカスタマイズしてみよう
- 1. テクてくLotus 技術者夜会
~Lotus iNotes をカスタマイズしてみよう~
2011/11/18
Yamato Software Development Lab
Lotus Product Development
Masashi Miyazaki (m1miyaza@jp.ibm.com)
Kouichiro Morinaka (morinaka@jp.ibm.com)
1
© 2010 IBM
Corporation
- 2. Lotus iNotes をカスタマイズしてみよう
Lotus iNotes は HTML, JavaScript や CSS といった Web
標準技術を採用しフレキシブルなアーキテクチャを実現し
ています。
カスタマイズについても同様に、CSS を使った外観の変更
や、JavaScript を使った動作の変更など様々な方法でカス
タマイズを行うことが可能です。また、8.5.1 以降のリ
リースでカスタマイズが行いやすいように様々な機能拡張
を行ってきました。
本日のハンズオンでは、Lotus iNotes カスタマイズの概要
や方法をご説明し、簡単なカスタマイズを実際に体験して
いただくことができます。
2
© 2011 IBM Corporation
- 3. Lotus iNotes アーキテクチャ
参照
Full Mode
iNotes/
Forms85.nsf
mail85.ntf
&ui=inotes (default)
HTML,
JavaScript,
CSS, Images
設
計
Lite Mode
&ui=dwa_lite
ビュー設計
mail/
user.nsf
iNotes Page
データ
Ultralite Mode
3
&ui=dwa_ulite
© 2011 IBM Corporation
- 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 は上書きされませんが、
事前の動作検証が必要です。製品コードの変更によりカスタマイズが動作
5
しない可能性もあります。
© 2011 IBM Corporation
- 8. ソースコードの Obfuscation (難読化)
Lotus iNotes では高速化のためにソースコードの
Obfuscation を行なっています。
空白や改行を削除
長い関数名、変数名を短いシンボル名に置き換え
DSq ← oScript
ELU ← com_ibm_dwa_ui_invokeAction
ESV ← com_ibm_dwa_ui_actionRefreshContent
EJs
AAA ← com_ibm_dwa_globals
BYp ← buildResourcesUrl
← oContext
変換テーブルが Forms85.nsf 内に ObfuscationList.txt として提
供されており、実際のシンボル名を確認することが可能です。
8
© 2011 IBM Corporation
- 9. Lotus iNotes をカスタマイズしてみよう
ハンズオンの環境について
IBM Lotus Domino Server 8.5.3 日本語版
IBM Lotus Domino Designer 8.5.3 日本語版
Web ブラウザ
Internet Explorer
http://windows.microsoft.com/ja-JP/internetexplorer/products/ie/home
IE Developer Toolbar (IE8/9 では不要)
http://www.microsoft.com/download/en/details.aspx?
id=18359
Google Chrome
http://www.google.co.jp/chrome/intl/ja/landing_ie.html
9
© 2011 IBM Corporation
- 11. A. 文字サイズを大きくしてみよう
1. iNotes/Forms85_x.nsf を作成
Forms85_x.ntf を使って Forms85_x.nsf を作成します。
データベースプロパティを変更します。
(テンプレートからの設計更新)
適切なアクセス権を設定します。
(-Default- が設計者になっています)
ハンズオン環境では作成済みです。
11
© 2011 IBM Corporation
- 12. A. 文字サイズを大きくしてみよう
2. 変更したい文字に適用されている CSS スタイルを確認
Internet Explore または Google Chrome を起動して
iNotes にログインします。
ユーザー名 – Test User
メールファイル – http://localhost/mail/tuser.nsf
パスワード – password
デベロッパーツールを起動します
IE6/7 の場合 – マウスカーソルのアイコン
IE8/9 の場合 – 歯車のアイコン → F12 開発者ツール
Chrome の場合 - スパナのアイコン → ツール → デベロッパー
ツール
12
© 2011 IBM Corporation
- 13. A. 文字サイズを大きくしてみよう
2. 変更したい文字に適用されている
CSS スタイルを確認
デベロッパーツールで「受信ボック
ス」に適用されている CSS スタイル
を確認します
IE の場合 – マウスカーソルのア
イコン → 「受信ボックス」をク
リック
Chrome の場合 – Elements タ
ブ → 左下の虫眼鏡アイコン →
「受信ボックス」 をクリック
→ s-outline-text というスタイ
ルが適用されていることが分かり
ます (右側のタブで変更も可能)
13
© 2011 IBM Corporation
- 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 サブフォームを保存し
て閉じます
14
© 2011 IBM Corporation
- 15. A. 文字サイズを大きくしてみよう
4. カスタマイズを反映させる
Domino サーバー上でカスタマイズ
コードを更新します。
tell http quit コマンドを実行し
て HTTP タスクを終了
load http コマンドを実行して
HTTP サーバーを再起動
ブラウザキャッシュをクリアします
。
IE の場合 – Developer Toolbar
の Cache – Always Refresh
from Server
Chrome の場合 – デベロッパー
ツールの右下の歯車アイコン →
Disable cache
15
© 2011 IBM Corporation
- 17. B. メール送信前に確認画面を表示してみよう
1. カスタマイズするアーキテクチャを
確認
Domino Designer を起動して
iNotes/Forms85_x.nsf を開きます
。
Custom_JS サブフォームに以下の
コードを追加します。
function
Custom_Scene_PreSubmit(s_
SceneName, o_Window,
s_SubmitAction) {
alert(“Custom_Scene_PreSub
mit(“ + s_SceneName + “, “ +
o_Window + “, “ +
s_SubmitAction + “)”);
return s_SubmitAction;
}
17
© 2011 IBM Corporation
- 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; を追加すると、スクリプトデバッガで
処理を中断することができます。
18
© 2011 IBM Corporation
- 19. B. メール送信前に確認画面を表示してみよう
2. カスタマイズを反映させる
Domino サーバー上でカスタマイズコードを更新します。
ブラウザキャッシュをクリアします。
Lotus iNotes に再度ログインします。
自分宛にメールを送信してみます。
→ Custom_Scene_PreSubmit_Lite と表示されたのでメールフォームは Lite
アーキテクチャと分かります
→ メールフォームの s_SceneName が memo であることが分かります
19
© 2011 IBM Corporation
- 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; でメール送信を続
20
行しています。
© 2011 IBM Corporation
- 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 );
}
}
23
© 2011 IBM Corporation
- 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();
}
24
© 2011 IBM Corporation
- 25. C. メールファイルを圧縮してみよう(上級者編)
2. メールファイルを圧縮するエージェントを作成
mail/tuser.nsf 内に compress エージェントを作成します。
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Call db.Compact()
Print "Content-Type:text/plain; charset=Shift_JIS"
Print "メールファイルを圧縮しました"
End Sub
ヒント
実行時トリガーを 「スケジュール」「なし」に変更します
NotesDatabase.Compact を実行するために 「制限付き
LotusScript/Java エージェントの署名または実行」のアクセス権が必要に
なります
25
© 2011 IBM Corporation
- 27. 参照情報
テクてくLotus トピック – iNotesカスタマイズQ&A
https://www.ibm.com/developerworks/mydeveloperworks/groups/service/forum/topicThrea
d?topicUuid=5ed7438a-68f3-4630-ae51-f2b39d6b7ae4&communityUuid=b9fc1613-1e5e4fe7-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
27
© 2011 IBM Corporation
- 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.の米国およびその他の国における商標です。
他の会社名、製品名およびサービス名等はそれぞれ各社の商標。
28
© 2011 IBM Corporation