XPagesで文字化け? toJson() を使ったらうまくいった話

XPagesでサーバーサイドの文字列をクライアントサイドJavaScriptへ渡す際、
文字列の内容によってはJavaScriptが正しく動作しなくなることがあります。

特に、以下のような文字が含まれている場合は注意が必要です。

  • ダブルクォート "
  • シングルクォート '
  • バックスラッシュ \
  • 改行
  • タブ
  • 日本語などのUnicode文字

今回、XPagesで文字列をJavaScriptへ渡す処理を見直したところ、
toJson() を使用することで安全に受け渡せることが分かりました。

もともとの処理

例えば、SSJS側に以下のような関数があるとします。

function getSampleText() {
    return "商品名:テスト商品";
}

この値をクライアントサイドJavaScriptへ渡したい場合、
単純に以下のように記述したくなります。

#{javascript:getSampleText()}

文字列が単純な内容であれば、問題なく動作する場合もあります。

しかし、実際のデータでは文字列内に改行やダブルクォートなどが含まれることがあります。

例えば以下のような文字列です。

商品名:テスト商品
備考:"特価品"

この文字列をそのままJavaScriptへ埋め込もうとすると、
生成されるJavaScriptが正しい構文にならない可能性があります。

なぜ問題が発生するのか

JavaScriptで文字列を扱う場合、文字列は通常以下のように記述します。

var text = "テスト";

しかし、文字列自体にダブルクォートが含まれていると、
例えば以下のような状態になる可能性があります。

var text = "備考:"特価品"";

これでは、JavaScriptがどこまでを文字列として扱えばよいのか判断できません。
そのため、JavaScriptエラーの原因になります。

また、改行やバックスラッシュなども、
そのままJavaScriptソースへ埋め込むと問題になる場合があります。

つまり、
サーバー側では正常な文字列でも、JavaScriptのソースコードとして直接埋め込むと壊れることがある
ということです。

toJson() を使う

そこで使用できるのがXPagesの toJson() です。

今回の記述は以下です。

#{javascript:toJson(getSampleText())};

getSampleText() が返した文字列を、
toJson() に渡しています。

例えば元の文字列が、

商品名:テスト商品
備考:"特価品"

だった場合、JavaScriptへ渡す際には概念的に以下のような形式になります。

"商品名:テスト商品\n備考:\"特価品\""

ダブルクォートは \"
改行は \n のように、
JavaScriptやJSONで安全に扱える形式へエスケープされます。

その結果、ブラウザ側では例えば以下のような正常なJavaScriptとして扱うことができます。

var sampleText = "商品名:テスト商品\n備考:\"特価品\"";

JavaScriptが実際に値を取得すると、中身は元通りです。

商品名:テスト商品
備考:"特価品"

処理の流れ

getSampleText()
      ↓
サーバー側では正常な文字列

商品名:テスト商品
備考:"特価品"

      ↓
   toJson()

"商品名:テスト商品\n備考:\"特価品\""

      ↓
ブラウザへ出力

      ↓
JavaScriptが安全に解釈

      ↓
元の文字列として利用できる

つまり toJson() は、簡単に言うと、

「この文字列をJavaScriptに渡してもぶっ壊れない形にするマン」

と考えると分かりやすいです。

toJson() は文字化けを直す処理ではない

ここは注意が必要です。

toJson() を使用した結果、日本語の表示が正常になり、
toJson() で文字化けが直った」
ように見える場合があります。

しかし、厳密には toJson() は文字コード変換を行うための関数ではありません。

例えば getSampleText() の時点で、すでに以下のように文字化けしている場合、

繧ケ繝医Μ繝ウ繧ー

以下のようにしても、元の日本語へ復元されるわけではありません。

toJson(getSampleText())

UTF-8やShift_JISなど、文字コードの不一致が原因の場合は、
ファイル読み込み処理やHTTPレスポンスなど、別の箇所を確認する必要があります。

今回うまくいった理由

今回の場合、
getSampleText() で取得した段階では日本語は正常でした。

問題は、その文字列をXPagesからブラウザ側のJavaScriptへ渡す部分にありました。

そこで、

#{javascript:toJson(getSampleText())};

と変更したことで、以下のような処理が行われます。

  1. JavaScript用の文字列として扱える形になる
  2. ダブルクォートがエスケープされる
  3. 改行が \n のような形に変換される
  4. バックスラッシュなども適切に処理される
  5. JavaScript側で安全に文字列として解釈できる

その結果、見た目としては
「文字化けが直った」
ように見えた、ということになります。

例えばこんな文字列でも安全になる

例えば以下のようなデータがあるとします。

担当者:"田中"
保存先:C:\work\test
備考:
1行目
2行目

このような文字列をそのままJavaScriptへ渡すのは少し危険です。

toJson() を通すと、概念的には以下のようになります。

"担当者:\"田中\"\n保存先:C:\\work\\test\n備考:\n1行目\n2行目"

これならJavaScriptの文字列として安全に扱うことができます。

まとめ

XPagesのサーバーサイド処理で取得した文字列を、
クライアントサイドJavaScriptへ渡す場合は、

#{javascript:toJson(getSampleText())}

のように toJson() を使用すると安全です。

特に、外部ファイルやDBなどから取得した文字列には、
日本語、改行、ダブルクォート、バックスラッシュなどが含まれることがあります。

そのままJavaScriptへ埋め込むよりも、
toJson() を通したほうが安全に扱えます。

ただし、toJson() は文字化けを修復する関数ではありません。

役割としては、


サーバー側の文字列を、JavaScript側で安全に解釈できるJSON形式の文字列へ変換する

という理解が分かりやすいと思います。

XPagesで
「サーバー側では正常なのにJavaScriptへ渡すとうまく表示されない」
「クォートや改行が入るとJavaScriptエラーになる」
といった場合には、toJson() を試してみる価値があります。

top

こんにちは、米原です。

今回は、Notes/Dominoのコミュニティイベント
「DominoHub 2026」
名古屋・大阪開催についてご紹介します。

今年のDominoHubは、6月のオンライン開催、7月の東京開催に続き、
名古屋・大阪でも開催されます!

今回のテーマは!
「変化を味方に」

Notes/Dominoを現在利用されている方はもちろん、
今後の活用方法を検討されている方や、
最新情報を知りたい方にもおすすめのイベントです。


DominoHub 2026 名古屋

2026年9月11日(金)開催!

会場:
ツドイコ 名駅東 カンファレンスセンター
愛知県名古屋市中村区名駅3-21-7 名古屋三交ビル2F

 

開場:13時00分
イベント:13時30分 ~ 17時15分
懇親会:17時30分 ~ 19時00分

名古屋では、今回初めてDominoHubが開催されます!

HCL Notes/Dominoに関するセッションや、
参加者同士で情報交換できる機会も予定されています。

名古屋周辺のNotes/Dominoユーザーの皆さま、
ぜひこの機会に参加してみてはいかがでしょうか。


DominoHub 2026 大阪

2026年11月11日(水)開催!

会場:
APイノゲート大阪
大阪府大阪市北区梅田3丁目2-123 イノゲート大阪 11F

 

開場:12時30分
イベント:13時00分 ~ 17時30分
懇親会:17時30分 ~ 19時00分

大阪会場はJR大阪駅 西口直結という、
とてもアクセスしやすい会場です。

こちらでもHCL Notes/Dominoに関するさまざまなセッションや、
参加者同士の交流企画が予定されています。


会場ならではの交流も

名古屋・大阪ともに、セッションで最新情報を得られるだけでなく、
Notes/Dominoを利用しているユーザーや、
HCLアンバサダー、各社の皆さまと直接お話しできる機会でもあります。

普段なかなか聞けない活用方法や、他社での事例、
これからのNotes/Dominoについて情報交換してみてはいかがでしょうか。

セッションを楽しみながら、
新しい情報やつながりを見つけていただければと思います。

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

HCL様よりメールが届き、田付、米原が2026 HCL Ambassadorに任命されました。

HCL Lifetime Ambassadorの加藤を含めると弊社から昨年に続き3名がHCLアンバサダーとして任命されました。

なお、日本から選出された2026年 HCL Ambassadorは以下の11名です、前年度同様、多数任命されました。

■ HCLアンバサダー グローバルページでの発表: https://www.hcl-software.com/jp/about/hcl-ambassadors/class-of-2026

HCL Ambassador 2026に任命されたのは以下11名の皆様です。

 

ケートリック株式会社 加藤 満 氏 https://notesdominoliaison.blogspot.com/

 

阿部 覚 氏 http://abesat.blog.jp/

中野 晴幸 氏 https://harunakano.blogspot.com/

株式会社エフ 御代 政彦 氏 https://guylocke.blogspot.com/

ケートリック株式会社 田付 和慶 ケートリック 株式会社 米原 和之 https://www.ktrick.com/blog/

ソフトバンク株式会社 中山 達嗣 氏

広瀬化学薬品株式会社 萩原 健補 氏 http://www.tanuchi.com/

株式会社フィオーレ 林和正 氏 https://note.com/dominolab/

株式会社 プロシード 浜 真行 氏 https://www.denaoshidomino.com/

MiscWorkshopsOSAKA 野村 知也 氏 https://miscworkshops.com/

任命された皆様おめでとうございます!

 

ノーツコンソーシアム」(https://www.notescons.gr.jp/)などをはじめコミュニティーへ以前より積極的に貢献していきたいと思っています。また、HCLアンバサダーとDomino大好きな有志者が一丸となり、2025年に続き、Notes/Dominoのコミュニティイベント「DominoHub 2026」(https://www.dominohub.net/)の開催を現在計画中ですので続報にご期待ください。

 

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

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

今回のテーマは!

      Let’s DO MINGLE

「DOMINOでひらく、未来のつながり。」

知るだけじゃない、オフラインだから生まれるつながりが新しい未来を見つけます。
あなたのビジネスを、あなた自身を、加速させる絶好の機会です!

  • 日程:2024年9月18日(木)
  • テーマ:LET’S DO MINGLE「DOMINOでひらく、未来のつながり。」
  • 主催:HCLアンバサダー & 有志メンバー
  • 費用:無料(事前登録制)
  • 場所:APイノゲート大阪
    • 530-0001 大阪府大阪市北区梅田3丁目2−123
      APイノゲート大阪 11F・開場:9時30分、13時00分 開始~17時00分 終了(予定)
  • 懇親会:(会場同じ、無料):17時00分開始~19時00分終了(予定)

詳細情報 HomePageはこちらから

おすすめポイント!

  • HCL Dominoの最新情報が現地で聞ける
  • ここだけでしか聞けない、 HCL Notes/Dominoユーザー企業による事例セッション
  • ソリューションベンダーによるライトニングトーク!!(皆さんの課題を解決できるDominoソリューションをご紹介)
  • 現地開催ですので、色々なNotesユーザや開発者と情報共通ができる
  • 2024年10月1日にオープンしたてのAPイノゲート大阪(再開発が進む大阪の街並みを一望できます)

他にも色々なセッションが用意されています!

セッション情報はこちら

当日はケートリックメンバーも数人参加予定ですので、現地でお会いすることを楽しみにしております。

申し込みはこちらから

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

NotesDesigner, NotesClientsを使用していてこのようなことになっていませんか??

以前に「テクてくlotus技術者夜会」にてお話しした話なのですが、案外周りの人も知らなかったとのことですので

備忘もかねてブログに残します。

  • 開発行ってると、設計を選択しても表示されるまでに時間がかかる
  • だんだん反応が鈍くなり、最後には予期せぬエラーでDesignerが落ちる。。。
  • Notes Designer で開発行ってると、数時間後にNotes Designer がフリーズして使えなくなる

まずは使用中のメモリの状態を見てみましょう

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

画面の下にメモリの使用状況がみれるようになります。
操作方法は以下の通りです。

  1. HCL Notes Designerを起動します
  2. 画面上メニューの「ファイル」を選択
  3. プリファレンスを選択
  4. 設定の一覧を選択
  5. ピープ・ステータスを表示のチェックをON

すると、画面下に使用メモリが表示されます。

256M中の60M」となっていますが、現在256Mbyte確保しているうちの60Mbyte使ってますとの意味合いとなります。

XPageなどで設計が複雑なものや、カスタムコントロールが多くある設計、タブを結構開くとだんだん仕様メモリが増えて限度を超えるとメモリの開放が間に合わなかったりして処理が遅くなったりします。

そのために、割り当てるメモリを設定するパラメータがNotes.iniに用意されています。

Notes.iniは通常は「HCL\Notes」配下にあるかと思われます。

Notesのバージョンは、V12.0.1からになります。

(設定例)

WCT_vmarg.Xmx=-Xmx2048m
 Notes/Domino Designers が消費するメモリの最大量

WCT_vmarg.Xms=-Xms1024m
 Notes/Domino Designers が消費するメモリの最小量を定義します。

WCT_vmarg.Xmca=-Xmca1024k
Notes/Domino Designers が最小量よりも多くのメモリを必要とするときに、メモリを増加させる単位となるブロックサイズを定義します。

 

詳細な設定等の情報はこちらにございます。
HCL Customer Support

 

ちなみに初期値は

WCT_vmarg.Xmx=-Xmx256m
WCT_vmarg.Xms=-Xms48m
WCT_vmarg.Xmca=-Xmca8k

となっています。

ご使用のマシンスペックと相談してメモリのサイズを変更してみましょう。
メモリをあまり積んでいないマシンでメモリ確保領域を多くとると別のシステムが動かなくなったり、余計遅くなったりするので注意が必要です。

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

HCL Ambassador

 

HCL様よりメールが届き、田付、米原が2025 HCL Ambassadorに任命されたことを知りました。

HCL Lifetime Ambassadorの加藤を含めると弊社から昨年に続き3名がHCLアンバサダーとして任命されました。

なお、日本から選出された2025年 HCL Ambassadorは以下の11名となっており、過去最多となっております!

■ HCLアンバサダー グローバルページでの発表: https://www.hcl-software.com/about/hcl-ambassadors/class-of-2025

■ HCL Software 日本ブログでの発表: https://www.hcljapan.co.jp/software/blog/hcl-ambassador-2025-japanhttps://www.hcljapan.co.jp/software/blog/

HCL Ambassador 2025に任命されたのは以下11名の皆様です。(会社名50音順)

ケートリック株式会社 加藤 満 氏
https://notesdominoliaison.blogspot.com/

株式会社アグレックス 阿部 覚 氏
http://abesat.blog.jp/

株式会社NIS 中野 晴幸 氏
https://harunakano.blogspot.com/

株式会社エフ 御代 政彦 氏
https://guylocke.blogspot.com/

ケートリック株式会社 田付 和慶
ケートリック株式会社 米原 和之
https://www.ktrick.com/blog/

ソフトバンク株式会社 中山 達嗣 氏

広瀬化学薬品株式会社 萩原 健補 氏
http://www.tanuchi.com/

株式会社フィオーレ 林和正 氏
https://note.com/dominolab/

株式会社 プロシード 浜 真行 氏
https://www.denaoshidomino.com/

MiscWorkshopsOSAKA 野村 知也 氏
https://miscworkshops.com/

任命された皆様おめでとうございます!

 

2025年は、「テクてく Lotus 技術者夜会」(https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0069193)や「ノーツコンソーシアム」(https://www.notescons.gr.jp/)などをはじめコミュニティーへ以前より積極的に貢献していきたいとおもっています。また、HCLアンバサダーとDomino大好きな有志者が一丸となり、2024年に大変好評だったNotes/Dominoのコミュニティイベント「DominoHub 2025」の開催を現在計画中ですので是非楽しみにしていてください。

こんにちは、米原です。
本日は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詳細・申込はこちら

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

ケートリックから過去最多3名が2024年HCLアンバサダーとして任命されました

HCL Ambassador

2023年12月クリスマス前にHCL様よりメールが届き、田付、米原が2024 HCL Ambassadorに任命されたことを知りました。

HCL Lifetime Ambassadorの加藤を含めると弊社から過去最多となる3名がHCLアンバサダーとして任命されたことになります。

なお、日本から選出された2024年 HCL Ambassadorは以下の10名となっており、こちらも過去最多となっております!

■ HCLアンバサダー グローバルページでの発表:
https://www.hcl-software.com/about/hcl-ambassadors/class-of-2024

■ HCL Software 日本ブログでの発表:
https://www.hcljapan.co.jp/software/blog/

HCL Ambassador 2024に任命されたのは以下10名の皆様です。(会社名50音順)

ケートリック株式会社 加藤 満 氏
https://notesdominoliaison.blogspot.com/

株式会社アグレックス 阿部 覚 氏
http://abesat.blog.jp/

株式会社NIS 中野 晴幸 氏
https://harunakano.blogspot.com/

株式会社エフ 御代 政彦 氏
https://guylocke.blogspot.com/

ケートリック株式会社 田付 和慶
ケートリック株式会社 米原 和之
https://www.ktrick.com/blog/

広瀬化学薬品株式会社 萩原 健補 氏
http://www.tanuchi.com/

株式会社フィオーレ 林和正 氏
https://note.com/dominolab/

株式会社 プロシード 浜 真行 氏
https://www.denaoshidomino.com/

フリーランス、ノーツコンソーシアム大阪研究会所属 林 哲司 氏
https://enjoyxpages.sakura.ne.jp/wp1/

任命された皆様おめでとうございます!

2024年は、「テクてく Lotus 技術者夜会」(https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0069193)や「ノーツコンソーシアム」(https://www.notescons.gr.jp/)などをはじめコミュニティーへ以前より積極的に貢献していきたいとおもっています。また、HCLアンバサダーが一丸となり、Notes/Dominoのコミュニティイベント「DominoHub」の開催を現在計画中ですので是非楽しみにしていてください。


HCL Ambassador 2021に任命頂きました

HCL Ambassador

2020年12月16日にHCL様よりメールが届き、自分が2020 HCL Ambassadorに任命されたことを知りました。
今年でHCL Ambassador 3年目となり、IBM時代からだと2015年から7年連続で任命頂くことになりました。関係者の皆様、改めてありがとうございます。

なお、日本から選出された2021年 HCL Ambassadorは以下の6名となっており、HCL Lifetime Ambassadorの加藤さんを含めると7名となっています。

ケートリック株式会社 加藤 満 氏
https://notesdominoliaison.blogspot.com/

広瀬化学薬品株式会社 萩原 健補 氏
http://www.tanuchi.com/

株式会社エフ 御代 政彦 氏
https://guylocke.blogspot.com/

株式会社NIS 中野 晴幸 氏
https://harunakano.blogspot.com/

ネオアクシス株式会社 阿部 覚 氏
http://abesat.blog.jp/

コムチュア株式会社 若林 信吾氏
https://qiita.com/ShingoWakabayashi

株式会社 ケートリック 田付 和慶

任命された皆様おめでとうございます!

2020年は昨年日本5都市で開催したNotes Domino Solutionsなども開催できずあまりイベント活動が出来ない年でもありました。

2021年は、「てくてくLotus」や「ノーツコンソーシアム」などをはじめコミュニティーへより貢献していきたいとおもっています。またNotes/Dominoのイベントも改めて復活させたいと思っています。

以上、引き続きどうぞよろしくお願い致します。