1989年にグループウェアとして販売が開始されたNotes/Dominoは、かつて一世を風靡しました。

しかし、近年では一部の声として「Notes/Dominoは時代遅れ」と見なされることがあり、さらにはベンダー企業から「脱ノーツ」などといったフレーズで他社製品への移行を勧められることもあるのではないでしょうか。

もちろん、他社製品への移行を完全に否定するものではありません。

しかし、十分な検討を行わずに安易に移行を決断することは、かえってリスクを伴う可能性があります。

そもそも、本当にNotes/Dominoは時代遅れなのでしょうか?また、なぜそのように言われるのかを正しく理解することが重要です。

今回は、ノーツコンソーシアムの団体に参加している弊社が、「Notes/Dominoは時代遅れではない」と考える理由について解説いたします。正しい情報に基づいた判断をサポートする一助となれば幸いです。

Notes/Dominoは時代遅れ?

Notes/Dominoには長い歴史があります。

 

● 1989年: Lotus Development社によりLotus Notes/Dominoが販売開始
● 1995年: IBM社がLotus社を買収し、「IBM Notes/Domino」として提供開始
● 2019年: HCL Technologies社がNotes/Dominoブランドを買収

 

IBM社がNotes/Dominoを提供していた頃まで、クラウドに非対応であったり、競合製品と比較して劣勢に立たされたことがありました。

この時期にkintone、Microsoft 365、Google Workspaceなどが登場し、それに伴い「Notes/Dominoは時代遅れ」という印象が広まったのも事実です。

しかし、2019年にHCL Technologies社へ移行して以降、Notes/Dominoは飛躍的に進化を遂げています。継続的なバージョンアップにより、モバイルアプリ、クラウド対応などが実現され、競合他社製品に引けを取らない機能が充実しています。

これらのアップデート内容を知れば、Notes/Dominoが「時代遅れ」という見方が誤りであることに気付いていただけるはずです。

Notes/Dominoは時代遅れと誤解される原因

Notes/Dominoは時代遅れと誤解される原因を5つ挙げてみます。

プロモーションが弱い

Notes/Dominoが「時代遅れ」と誤解される主な原因は、プロモーションの弱さにあります。

HCL社はNotes/Dominoのバージョンアップを積極的に行い、製品の進化を続けています。

しかしながら、プロモーション活動が十分であるとは言えず、その結果、最新情報がユーザーに届いていないのが現状です。

一方、グループウェアの競合製品であるkintone、Microsoft 365、Google Workspaceなどは、大規模なコマーシャルや広告キャンペーンを積極的に展開しています。これにより、これらの製品は市場での存在感を高め、広く認知されています。

対照的に、Notes/Dominoは十分なプロモーションが行われていないため、最新の機能やアップデート情報が多くのユーザーに届かず、その存在が埋もれてしまっている状況です。この情報不足が、「Notes/Dominoは時代遅れの製品である」という誤ったイメージを助長しています。

正しい情報が広く共有されれば、Notes/Dominoが競合製品に匹敵する先進的な機能を備えていることを、多くのユーザーに理解していただけるはずです。

最新情報が届いていない

Notes/Dominoが「時代遅れ」と誤解される背景には、最新情報の発信不足も大きな要因として挙げられます。

現状、既存ユーザーに対してリリース情報やアップデート内容が十分に発信されておらず、その結果、製品の進化が認知されず、古いイメージが払拭されていません。

一方、競合製品は、新機能の紹介や成功事例を積極的に発信し、市場における存在感を高めています。それに対して、Notes/Dominoは情報発信が乏しいため、過去の製品であると誤解されてしまう状況が続いています。

効果的な情報発信と最新機能の紹介が行われれば、Notes/Dominoが現在でも競争力のある製品であることを、より多くのユーザーに知っていただけるでしょう。

アプリの他システム間連携が乏しかった

以前はアプリの他システム間連携が乏しかったことが挙げられます。

競合他社のクラウド製品がAPIを活用してシステム連携を実現していたのに対し、オンプレミスでの利用が前提となっていたDominoサーバーでは、REST APIによる他システム連携が難しい状況が続いていました。

しかし、近年のアップデートによりシステム連携機能は大幅に改善されており、こうした過去のイメージは現在のNotes/Dominoには当てはまりません。

モバイルアプリやクラウド対応に遅れた

Notes/Dominoが時代遅れと誤解されるもう一つの要因は、モバイルアプリやクラウド対応の遅れです。

クラウドサービスの普及が加速する中で、競合製品であるMicrosoft 365やGoogle Workspaceは、早い段階からモバイルアプリとクラウド利用を前提としたサービスを提供し、オフィスだけでなく自宅や外出先からも仕事ができる柔軟な環境を実現しました。

一方、Notes/Dominoはこの対応が後手に回り、ビジネス機会を逃してしまったのは紛れもない事実です。

しかし、HCL社への移行後はモバイルアプリへの対応やクラウド対応が大幅に改善され、現在では競合製品に劣らない柔軟性を備えています。この点を正しく理解することで、Notes/Dominoの進化を再評価できるでしょう。

PCにセットアップして配布する必要があった

IBM社が提供していたNotesクライアントは、PCにインストールしてセットアップする必要がありました。

 

一方、kintone、Microsoft 365、Google Workspaceなどの競合製品は、モバイルアプリやブラウザベースでの利用を前提としており、ユーザーの負担を大幅に軽減しました。この違いにより、Notes/Dominoは「手間がかかる」という印象を持たれることが多かったのです。

 

特に、従業員の入社時などにセットアップ作業が負担となり、「扱いにくい」と感じた経験を持つ管理者も少なくありません。しかし、現在ではブラウザベースの利用やクラウド対応、セットアッププロセスが大幅に改善されています。

Notes/Domino販売するHCL社とは

HCL Technologies社は世界60カ国に従業員224,000人以上抱えるインドのIT企業です。2023年の売上高は約約131億ドル(約2兆700億円)で規模は非常に大きいです。

従来からエンジニアリング、クラウド、AIを得意分野としており、近年AIブームが到来して非常に有利なポジションにいます。「2024 Brand Finance Global 500 and IT Services Top 25 Report」では、最も急成長しているIT企業に選出されました。

HCL社はNotes/Dominoを買収後、さまざまなバージョンアップをしています。

Notes/Dominoバージョンアップ内容

HCL社はNotes/Dominoを買収後、さまざまなバージョンアップをしており、他社に引けを取らない製品となりました。
ここでは、Notes/Dominoバージョンアップ内容をご紹介します。

モバイルアプリが登場した

HCL社は、Notes/DominoのモバイルアプリであるNomadを開発しました。

このアプリにより、PCだけでなく、モバイルデバイスやタブレット(iPhone、iPad、Android)でもNotes/Dominoを利用できるようになりました。これにより、外出先や自宅でもメールやアプリを活用することが可能となり、より柔軟な働き方を支援します。

さらに、追加ライセンスは不要のため、コスト面でも安心して導入できます。

クラウドやモバイル対応で出遅れた印象があったNotes/Dominoですが、現在では他社製品と同等にスマートフォンからの利用が可能です。

配布作業が必須ではなくなった

従来のNotes/Dominoは、インストールやセットアップ作業、そしてPCの配布が必須であったため、従業員の入社時に大きな負担がかかっていました。

しかし、NomadやNomad Webが登場したことで、手間のかかるインストール作業は不要になりました。

ユーザーはアプリをインストールし、ログインしてパスワードを設定するだけで利用を開始できます。

ローコード開発環境の提供を開始した

Notes/Dominoは単なるグループウェアに留まらず、アプリ開発環境を提供しており、多くの企業から支持を得ています。

従来は独自言語を用いてアプリ開発を行う必要があり、これが技術者不足の一因ともなっていました。しかし、HCL社はDomino Leapと呼ばれるローコード/ノーコード開発環境を導入。これにより、開発言語としてJavaScriptが採用され、アプリ開発がより容易になりました。

ITやプログラミングの専門家でなくても、Excelデータを読み込むだけでアプリを構築することが可能となり、非エンジニアでも効率的にアプリ開発を進められる環境が整っています。

サーバー環境がクラウドネイティブ化した

従来のNotes/Dominoはオンプレミスサーバーでの利用が前提となっていましたが、現在ではDockerイメージを利用したDominoサーバーが提供されており、AWSやAzureといったIaaS環境への移行が可能です。

またMSPと呼ばれるHCL社より委任されたビジネスパートナーによるDominoクラウドの利用が可能です。

これにより、お客様のご要望に応じた柔軟なサーバー環境を選択できるようになり、クラウドネイティブな運用が実現しました。

クラウド環境への対応によって、これまで以上にスケーラブルで効率的な運用が可能となっています。

非互換による問題がほとんどない

以前のNotes/Dominoでは、バージョンアップ時にアプリケーションの互換性チェックが必要であり、これが運用面の負担となっていました。

しかし、Notes/Domino 9.0以降では、非互換による問題がほとんど発生していません。

これにより、バージョンアップ後にアプリが利用できなくなるといった不安を抱える必要がほぼなくなり、安心して最新バージョンへ移行できるようになりました。

Notes/Dominoは時代遅れと判断するのは危険

Notes/Dominoは、いくつかの理由から「時代遅れ」と言われることがあります。

しかし、HCL社は継続的にNotes/Dominoのバージョンアップを行い、現在では他社製品と肩を並べる、もしくはそれ以上の機能を持つ製品へと進化しています。

特に、Notes/Domino独自のアプリ開発機能を活用すれば、業務効率化を実現することが可能です。

一方で、Notes/Dominoを「時代遅れ」と判断して他社製品に移行する際には注意が必要です。移行には莫大な費用がかかるだけでなく、使い勝手が変わることで業務が停滞するリスクがあります。

さらに、Notes/Dominoでは簡単に開発・運用できていた業務アプリを、他社製品に移行するとグループウェアや複数のSaaSを導入する必要があり、結果としてランニングコストが上昇するケースも少なくありません。

そのため、移行を検討する際には、まずNotes/Dominoに精通した専門家のアドバイスを受けることが重要です。

まとめ

Notes/Dominoは、1989年に登場したグループウェア製品です。単なるグループウェアとしての機能に留まらず、業務アプリの開発ができる点が大きな強みです。

ただし、他社製品と比較してモバイルアプリやクラウド対応が遅れたこと、そしてHCL社が継続的なバージョンアップを行っているにもかかわらず、十分なプロモーションが行われていないことが、「時代遅れ」と誤解される一因となっています。

しかし、Notes/Dominoを安易に「時代遅れ」と判断し移行することは危険です。企業の状況によっては、引き続きNotes/Dominoを活用した方がコストや業務効率の面で優れている場合も多くあります。

移行を検討する際には、必ず専門家に相談し、慎重に検討を進めてください。弊社では、無料相談を受け付けておりますので、どうぞお気軽にお問い合わせください。

こんにちは、開発担当の米原です。

本日は最近XPages開発でハマった時のお話です。

現象

設計の編集などしていると、XPageとカスタムコントーロールの設計が開かなくなり
設計をクリックしても、下のようなエラー画面が表示され設計の中身が見れなくなりました。

設計は開かないが、生成したWebページは設計通りの画面が開きました。

設計

Xpage : xpTest001

<?xml version=”1.0″ encoding=”UTF-8″?>
  <xp:view xmlns:xp=”http://www.ibm.com/xsp/core” xmlns:xc=”http://www.ibm.com/xsp/custom”>
 <xp:this.resources>
  <xp:styleSheet href=”/test001.css”></xp:styleSheet>
  <xp:styleSheet href=”/test002.css”></xp:styleSheet>
 </xp:this.resources>
 <xc:ccTest001></xc:ccTest001>
</xp:view>

CstomControl : ccTest001

<?xml version=”1.0″ encoding=”UTF-8″?>
<xp:view xmlns:xp=”http://www.ibm.com/xsp/core” xmlns:xc=”http://www.ibm.com/xsp/custom”>
 <xp:table styleClass=”tbl_001″>
  <xp:tr>
   <xp:td styleClass=”bk_001″>
    styleClass=”bk_001″
    <xp:inputText id=”inputText1″></xp:inputText>
   </xp:td>
   <xp:td>
   </xp:td>
   </xp:tr>
  <xp:tr>
   <xp:td></xp:td>
   <xp:td styleClass=”bk_002″>
    styleClass=”bk_002″
    <xp:inputText id=”inputText2″></xp:inputText>
   </xp:td>
  </xp:tr>
 </xp:table>
</xp:view>

style sheet : test001.css

.bk_001{
background:rgb(255, 0, 0);
}

.bk_002{
background:rgb(0, 256, 0);
}

.tbl_001 {
width: 90%;
text-align: center;
border-collapse: collapse;
border-spacing: 0;
margin: 50px 50px;
}
.tbl_001 th {
padding: 10px;
background: #e9faf9;
border: solid 1px #778ca3;
}
.tbl_001 td {
padding: 10px;
border: solid 1px #778ca3;
}

どこが原因だったのか

原因ですが

カスタムコントロールの ccTest001内でセットしている
styleClassに設定していました styleClass=”bk_002″ が原因でした。

.bk_002{
background:rgb(0, 256, 0);
}

すごい単純なミスなのですが、RGBの範囲ですが、 0~255 でして、256はダメですね。
今回はWebの画面もちゃんと、緑色も出ていましたので、なぜか設計のみ開くことが出来なくなる現象となりました。

エラー内容が表示されず分からない所だったので、初めはDBがつぶれたかと思い、
再度作成し直したりしたりと色々試行錯誤しておりました。

原因さえ分かれば大したことではないのですが、なかなかはまってしまいましたので、似た様な所でお困りの方がいましたら、参考にしていただければと思います。

設計が開かなくなったら、XPageならまずその中に含有されいるカスタムコントロールを疑い、簡易化しながらどこが怪しいか切り分けて、カスタムコントールに問題が無い場合はその中で呼んでるカスタムコントロールを除外や、今回の様にカスタムコントロール内で使用しているスタイルシートなどを疑っていくと原因が見つけやすいかと思われます。

あとですね、今回はNotesのV9で発生しておりまして、今回のブログを書く際に、V12でも試してみましたら、
何とちょっと画面がかわっておりまして、もう少しエラーが詳しく表示されていました。

エラー内容に

java.lang.IllegalArgumentException: Argument not valid
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.graphics.RGB.<init>(Unknown Source)
at com.ibm.etools.xve.renderer.internal.style.CSSColorUtil.stringToRGB(Unknown Source)

CSSのRGBあたりに何かしら問題があるよ的なものがでていますね。
V12ならもしかしらすぐ解決できていたかもしれません。

NotesDominoも進化し続けているので、バージョンを上げる方がより快適に開発できそうですね。

今回はテスト的に単純な設計を作成してでしたが、
実際ハマった設計はもっと複雑なものでして数時間ハマりました。。。

参考にしていただければと思います。

それでは今日はこの辺で失礼いたします。

こんにちは開発担当の米原です。
今回は、日時をユリウス日(ジュリアン日)に変換しないといけないケースがありましたので、その時の備忘です。

ユリウス日(Julian Day、JD)とは

ユリウス暦紀元前4713年1月1日の正午(世界時)からの日数です。
ユリウス日は、日付が長期にわたり連続するため、日数計算やさまざまな暦の関連付けなど、幅広く使われています。

サンプルコード(XPages サーバサイドJavascript)


//ジュリアン日変換
function funcToJulianDay(p_year, p_month, p_day) {
    //月が1月または2月の場合、前の年の13月または14月とみなすみたい
	if (p_month <= 2) {
        p_year -= 1;
        p_month += 12;
    }
    var jDay = 0;
    var seireki = 0;
    var correct = 0;

    //指定された年の世紀部分
    seireki = Math.floor(p_year / 100);
    
    //400年周期での閏年の補正
    correct = 2 - seireki + Math.floor(seireki / 4);

    // 年を365.25日と見なし計算
  //基準年である紀元前4713年からの年数をプラス
  //月の部分を日数に変換(30.6001 を掛けることで、月の平均日数(約30.6日)を使って月数を日数に変換)
    //日の部分をそのまま加算   1524.5(基準日(紀元前4713年1月1日正午)との補正)
    jDay = Math.floor(365.25 * (p_year + 4716)) + 
	   Math.floor(30.6001 * (p_month + 1)) + 
			p_day + correct - 1524.5; 

    return jDay;
}
//呼び出し元サンプル(今日の日付を取得し変換)
function test001(){
	try{
		var year = 0;
		var month = 0;
		var day = 0;
		
		var dt:Date = @Today(); // 今日のの日時を取得してみる
		year = dt.getFullYear();
		month  = dt.getMonth() + 1;
		day = dt.getDate();
		var julianDay = funcToJulianDay(year, month, day);

		print("ユリウス日:", julianDay);
		
	}catch(e){
		print("Error in test001:"+e)
	}
}

参考にどうぞ。

こんにちは、米原です。
本日は9月に開催される、Notes/Dominoイベント  DominoHub2024 Osaka のご紹介です。

DominoHubと言えば6月に東京で開催されましたが、なんと9月19日(木)に大阪で開催されます!

今回のテーマは!

「Immersive experience/没入型体験」

新しい機能を直に触って確認することも出来る様に展示ブースもご用意してます!

HCL Dominoは企業の業務効率化やコラボレーションの促進に貢献してきた信頼にあるソフトウェアです。
DominoHubでは、これまで以上にDominoの可能性を引き出し参加者に楽しさと驚きを提供します。

まずは日程等の情報です。

  • 日程:2024年9月19日(木)
  • テーマ:「Immersive experience」~最新Dominoの没入型体験~
  • 主催:HCLアンバサダー & 有志メンバー
  • 費用:無料(事前登録制)
  • 場所:プレミアホテル-CABIN PRESIDENT-大阪
    • 大阪市北区南森町1丁目3-19 2階・開場:9時30分、10時00分 開始~17時00分 終了(予定)
  • 懇親会:(会場未定、無料):17時30分開始~19時00分終了(予定)

こんな人におすすめ!

  • Notes/DominoDominoの新しい機能を直に触って確認してみたいユーザー
  • Notes/Dominoを継続的に積極利用するユーザー
  • Notes/Dominoから移行検討、情報収集をしているユーザー
  • Notes/Dominoから移行をして問題を抱えているユーザー

地図

大阪府大阪市北区南森町1丁目3−19

今回のDominoHubの注目ポイント

その1

今回のイベントは現地のみの開催です。

Webでの配信はございませんのでぜひ現地にてご参加ください!

現地だけでしかお話できない内容も聞けるかも。。。

1日だけですが、濃厚な内容になっています。

セッション内容

その2

展示ブースがあります

新しい機能を現地で触って確認しただける展示スペースもご用意しています!

展示ブースでは新しい機能をご体験できます。

展示内容

その3

ランチセッションもご用意!

ランチ付きのセッションです。ランチを食べながらセッションを楽しめます!

今回はどんなランチでしょうか。。。

その4

イベント最後には懇親会もご用意していますので一緒に楽しみましょう。

色々な話を聞けるチャンスです!

皆様とお話出来ることを楽しみにしております

当日はHCLAmbasadorも大勢参加予定です。皆様とお話出来ることを楽しみにしております。

ご興味を持たれた方、ご参加されてはどうでしょうか?

DominoHub詳細・申込はこちら

それでは皆様のご参加をお待ちしております。

こんにちは。ケートリックの米原です。

今回はNotes Domino の体験型ウェビナーのご案内です。

主催と協賛は

主催:Misc Workshops OSAKA 協賛:ノーツコンソーシアム

となっております。

日時は2024/05/30(木) 14時~15時半(予定)に開催されます!

開催方法はWeb会議方式となっております。

今回は体験型となっていまして、スマホ、カメラ、GPS、などの機能もDominoだけで作成したアプリで体験するいい機会です!

その道のプロフェッショナルが手厚く説明していただけるとのことです!そして無料です。。。。

それでは、少しでも興味を持たれたら参加してみてはいかがでしょうか。

今回のウェビナーの詳細はこちらから

 

今回協賛である、HCL Notes / Domino日本最大のユーザーコミュニティでも色々な情報が手に入りますよ。

詳しくはこちらから

 

そして今回の講師はノーツコンソーシアムの大阪研究会のメンバーです。

そんな大阪研究ご興味がありましたら研究会も参加してみてはどうでしょうか?

非会員の方でも大歓迎です。

そんな大阪研究会の情報はこちらから

 

ではでは、今回はこの辺で失礼します。

こんにちは。米原です。

今回はイベントのご案内です。

ノーツコンソーシアムの大型イベントが2024/02/16(金)に開催されます!

ノーツコンソーシアムは、HCL Notes/Domino 日本最大のユーザーコミュニティです。
もちろん弊社ケートリックもコミュニティに参加しています!

 

ノーツコンソーシアム FESTA 2024

開催日時:2024年2月16日(金):14:30~17:45 (受付開始:14:15~)
開催会場:アキバプラザ(東京千代田区)6F セミナールーム3
参加費:無料、事前申込不要

・ノーツコンソーシアム会長挨拶・基調講演
・研究会発表
・HCLジャパン Notes/Domino 35周年とV14など
などなど色々ないい話が聞けるはずです!
弊社のメンバーも発表予定ですよ。

詳しくはこちらを

https://www.notescons.gr.jp/home.nsf/event.xsp?action=openDocument&documentId=E327A212EDD66A6B49258A6A002F4B1E

ノーツコンソーシアム 30周年記念イベント

開催日時:2024年2月16日(金):18:00~20:00 (受付開始:17:45~)
開催会場:アキバプラザ(東京千代田区)5F レセプションホールAB
参加費:無料、事前申込制

ノーツコンソーシアム30周年、Notes/Domino35周年となり、皆様でお祝いするイベントとなります。
皆さんで集まってお祝いしましょう!

こちらは事前申込が必要ですのでご注意を!!
お申込みはこちらから イベントの詳細もご確認できます。

https://30anniversary.notescons.gr.jp/

 

それでは、現地でお会いできることを楽しみにしております!

XPagesリッチテキストコントロールのカスタマイズ

XPagesのリッチテキストコントロール カスタマイズ

Notes/Dominoエンジニア XPages担当の米原です。

まだまだ現役でXpagesの開発を行っています!
最近行き詰まったところがありましたで備忘としてブログに残すことにしました。

リッチテキストの入力高さを固定(縦スクロール付き)方法

リッチテキストを画面に配置したのですが、文字を入力して改行していくと、
自動で入力枠が縦に広がり結構縦に長くなり1画面の領域を結構占領してしまいます。
どうにか縦の幅を狭くしたいと思いました。

入力をするとどんどん広がって他の項目が見えなくなったりします。

Dojo属性を追加することによりCKEditorのConfig値を変更しました。
autoGrow_maxHeight:縦幅の広がった際の最大値

こんな感じで最大枠を指定できます。長くなる場合は縦のスクロールバーが機能します。

ツールバーを消す方法

今回の場合上のツールバーも不要なので消したいと思います。

同じように、今度は nameに toolbar 、valueに [[]]  これで上のツールバーは消えます。

この様にしてすっきりしました!
ここで「tootbar」 の「value」 に表示したいアイコンを選択することも可能です。

詳しくはこちらを参照してください↓
https://www.ktrick.com/xpages-richtext-ckeditor-toolbar-customize/

設定値などは、こちらを参考にしました。
https://docs-old.ckeditor.com/ckeditor_api/symbols/CKEDITOR.config.html

また色々と試したいと思います!


DominoV9→DominoV12 バージョンアップでXpagesエラーが発生した件

こんにちは。Xpages担当の米原です。

本日はXpagesでDominoV9からDominoV12にバージョンアップした際にハマったエラーの回避方法についてのお話です。

V9のサポート期日が迫っていまして、V12に更新されるお客さんが増えてきています。
そう、NotesDominoはどんどん進化してその都度便利な機能が追加されています!
V9で終わりではないですよ!!!

リリース情報その1

リリース情報その2

安心してNotes Domino 使い続けましょう。

さてさて本題に戻りまして

今回発生した問題はこちらの機能です。

  1. ボタン押下でダイアログを表示
  2. ダイアログ内で処理を実行(入力フィールドの値などセット)
  3. ダイアログ内で更新したものをダイアログを閉じるときのイベント(onHide)で部分更新

    OKボタンで更新するのは、OKボタンのイベントに処理を追加で可能なのですが、
    「x」ボタンが押された時にも反映したい場合があり、そのためにonHideイベントに部分更新のIDをセットしそのエリアを更新するように使用していました。

ここで、最後の「×」やOKでダイアログを閉じる際に、onHideが機能するのですが、
何とエラーになってしまってます。。
V9では大丈夫だったのに、V12ではこの使い方はダメなようです。

簡単なサンプルで確認したらこのようなものになります。

ダイアログ起動ボタン押下でダイアログ起動

「×」ボタン押下

エラー発生となります。

設計はこのようなものです

	<xe:dialog id="dlgTest" title="入力用ダイアログ">
		<xp:panel>
			ボタン押下で値がセットされ、×ボタンで値が更新します。<br/>
			<xp:button value="値をセット" id="button5">
				<xp:eventHandler event="onclick" submit="true">
					<xp:this.action><![CDATA[#{javascript:getComponent("testText").setValue("値がセットされました。")}]]></xp:this.action>
				</xp:eventHandler>
			</xp:button>
			<xp:button value="値をクリア" id="button1">
				<xp:eventHandler event="onclick" submit="true">
					<xp:this.action><![CDATA[#{javascript:getComponent("testText").setValue("値がクリアされました")}]]></xp:this.action>
				</xp:eventHandler>
			</xp:button>
		</xp:panel>
		<xp:eventHandler event="onHide" submit="true" refreshMode="partial" refreshId="testPan" disableValidators="true">
		</xp:eventHandler>
	</xe:dialog>

色々と調べた所、、、

どうも部分更新のエラー処理がV10から変更されているようでその影響の様です。

こちらに情報がありました 参考URL

回避策として、

Xspプロパティに「xsp.error.disable.detection.set01=true」をセットすることで
V9.0.1でのエラー処理に戻すことが可能です。

それでは、Xspプロパティを更新した状態でもう一度実行すると

「値をセット」ボタン押下後に、「×」ボタン押下すると

「値がセットされました。」と文言が更新されました。期待通りの動作です。

似た様な現象が発生した場合は参考になればと思います。

それでは本日はここまでで。


XPagesで同じカスタムコントールを使用する場合のID被りへの対処法

Notes/Dominoエンジニア XPages担当の米原です。

今回もXPagesのお話です!

共通して使用しているカスタムコントロールを同ページで複数使用する必要がある場合、

例えばこんなパターン

<xp:panel>
	<xc:ccFormSample02>
		<xc:this.rendered><![CDATA[#{javascript:param.get("paramTEST") == "01"}]]></xc:this.rendered>
	</xc:ccFormSample02>
	<xc:ccFormSample02>
		<xc:this.rendered><![CDATA[#{javascript:param.get("paramTEST") == "02"}]]></xc:this.rendered>
	</xc:ccFormSample02>
</xp:panel>

「ccFormSample02 」カスタムコントロールをURLパラメータの値で表示/非表示の切り替えを行っています。

↑ paramTEST=01 の場合
↑ paramTEST=02 の場合

今回は設計が複雑ではない簡単なカスタムコントロールを用意しましたが、実際運用される場合はもっと複雑

で複数配置を目的としたカスタムコントロールがあるかと思います。

例えばこのようなときが想像できます。

カスタムコントロールA(共通して使用したい。)

画面の表示をURLパラメータで切り替えている場合

画面Aでは「カスタムコントロールA」情報が重要になるので一番上に表示させたい。

画面Bでは「カスタムコントロースA」情報はあまり重要ではないので一番下に表示させたい。

そのような場合に同じカスタムコントロールを同画面に配置してURLパラメータで切り替えることで実装したりします。

表示・非表示切り替えで対応する場合に問題になるのが、IDの問題です!
今回は共有箇所のInputTestフィールドにIDを付与していてそのIDを元に値をセットしている場合があります。

<xp:tr>
	<xp:td styleClass="tblHead">
		<xp:label id="label2"
			for="orderNumber1">
			<xp:this.value><![CDATA[#{javascript:
var ret = "";
ret = "共通箇所"
return ret;}]]></xp:this.value>
		</xp:label>
	</xp:td>
	<xp:td>
		<xp:inputText id="test001"></xp:inputText>
	</xp:td>
</xp:tr>

id="test001" 箇所ですね。

例えば初期値に値をセットさせたい場合でこのように値をセットしている場合

	<xp:this.afterPageLoad><![CDATA[#{javascript:
getComponent("test001").setValue("test");
}]]></xp:this.afterPageLoad>

「 getComponent("test001").setValue("test"); 」このような方法で表示の値をセットすると、

結果的には

↑ paramTEST=01 の場合
↑ paramTEST=02 の場合

paramTEST=01 の場合 は初期値に 「test」がセットされていますが、 paramTEST=02 の場合 は値がセットされていません。

これはIDが被っているので最初に見つけた所のIDにセットされるようになります。

もう少し詳しく説明しますと、 getComponent("test001") .setValue("test") とすると、最初の id="test001"が取得されて、そちらに値がセットされてしまいます。

非表示の方法としてrenderをfalse にしたり、 style に display:none をして非表示にしたりしますが、 getComponent では非表示にしても取得されていまうので、そのような現象になってしまいます。

さてさて、どうしたものかな~と。。。。

そこで活躍するのが「loaded」です!

<xp:panel>
	<xc:ccFormSample02>
		<xc:this.loaded><![CDATA[${javascript:param.get("paramTEST") == "01"}]]></xc:this.loaded>
	</xc:ccFormSample02>
	<xc:ccFormSample02>
		<xc:this.loaded><![CDATA[${javascript:param.get("paramTEST") == "02"}]]></xc:this.loaded>
	</xc:ccFormSample02>
</xp:panel>

loaded は ページ作成時にコントロールを作成するかどうかですので、どちらかのカスタムコントールしか作成されなくなり、IDが被ることが無く期待した動作になるということになります。

loadedを使用した場合のparamTEST=02

無事期待する動作となりました。

今回のパターンでは 「rendered」では都合が悪く、「loaded」を使用しましたが、「loaded」は一度「false」にしてしまうと、ページ全体をロードしなおさないと表示の切り替えができません。「rendered」に関しましては、部分更新で表示/非表示の切り替えが可能となります。

両方使える場合では「 loaded 」が「false」の場合はカスタムコントロールを一切読み込まないので、余分にメモリを消費しないことや処理速度も 「rendered」 に比べて早いのではないかと考えられます。

用途に合わせて使うのがよろしいかと思います。

似た様なことでお困りの際はお試ししてください。

ではでは本日はこの辺で失礼いたします。


Domino DesignerでXPageを開いた際に開くのが遅い時の対応

Xpagesの設計をDesignerで開いた際に遅い件

Notes/Dominoエンジニア XPages担当の米原です

設計をDesigerで開いた際におそい~と思ったことはないでしょうか??

設計が少ない場合はそうでもないのですが、
より複雑になった場合、カスタムコントロールの数が多くなっていきだんだん遅くなりますよね。

回避策としまして

  • 冗長な処理をなくす
  • DBを分ける
  • PCのスペックを上げる。メモリ増幅 ^^;

などが考えられます。

ここでは取り上げる方法は、Desigerで設計を開いた際により早く開くことができるのと、
やりようによっては設計が見やすくもそうでなくもなります。

今回は1つのカスタムコントロールに5個のカスタムコントロールをセットしているもので試してみます。
これくらいなら特に遅くもならないのですが、実運用しているものでしたら、カスタムコントールの中に
カスタムコントロールはいっぱい入っているケースがあり、特にリピートコントロールは遅く成る要員の一つです

カスタムコントロール ccFormMain02

上図ではどのようなコントロールが配置されているとかがすぐわかるのでいいのはいいのですが

①のカスタムコントロールを開きまして、プロパティの設計定義を開きます。
そこに、XSPの形式で入力します。テスト的に下図のように設定します。

設定後に再度ccFormMain02を確認すると
test と表示されます。
ん、、、、見にくい

コメントは少し装飾しました。うんいい感じです

マークアップ式はこんな感じです↓

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"
    xmlns:xe="http://www.ibm.com/xsp/coreex">
	<div style="border: 2px solid #A9A9A9; padding: 3px; margin: 5px;">
		<h1>添付用のリッチテキスト</h1>
		<div>
			フォームA,Bで使用予定
		</div>
	</div>
</xp:view>

こんなふうに全て記入すると。。。

見やすくなりましたね、マークアップ箇所は基本のHTMLで記入するだけなのでお好みいに合わせて
カスタマイズできます。

ということで、見やすくなりました。めでたしめでたし!

あれれちょっと待った~表示が変わっただけなのでは、、、、

と思いきや、これで設計を開くときには今回のマークアップの設計定義を読み込むので
設計は格段に速く開くことが可能になります。

さすがに今回のサンプル的なのでは速さは体感できませんが、カスタムコントロールが増えて
複雑化してきたら結構ストレスがたまる位に起動が遅く成りますのでその際には体感できるかと思います。

それでは今回はここまでとします。