2024/08/07

DXL 拡張ライブラリをリリースします!

来る 2024 年 9 月 19 日に DominoHub 2024 Osaka が開催されます。

DominoHub

このイベントで、DXL 拡張ライブラリのリリースを発表することとなりました!

ミニセッションで紹介、展示スペースでデモを計画しております。ご興味のある方はぜひともご参加ください。


今回は、そのライブラリのご紹介です。

と言いますのも現在もリリースに向け、必死になって開発&デバッグをしております。お盆休みにサボらないよう、自身にムチを打つための投稿となります...


ライブラリ作成の背景

LotusScript でリッチテキストを触っていて、できないことが多くフラストレーションを感じたことはありませんか? 私は、リッチテキストに画像を見える状態(インラインイメージ)で貼り付けられないことがきっかけでした。

その要望を HCL Domino Ideas Portal に投稿したところ、DXL でできると一蹴されたのです。それじゃあ、ってことで調べ始めたのが DXL との出逢いでした。ただ、DXL に関してはドキュメントが少なく、調査は難航しました。

ただ、調査が進むに従い、DXL の可能性を感じるようになりました。きっかけとなったインラインイメージの操作だけでなく、リッチテキストの知る限りのコンテンツを詳細な設定まで操作できるようでした。さらには、設計要素まで操作できることまでわかりました。

ただ、DXL(Domino XML Language)を理解して、適切に操作する必要があり決して ”簡単” ではなさそうです(詳細は連載『DXL Step-by-Step』を参照ください)。

せっかくの機能を活用したいということで、DXL を簡単に扱えるライブラリを作ろうということになりました。構想から約 2 年、人前に出しても恥ずかしくないレベルにはなったので、この度リリースするととしました。

名付けて『dxlSuite for LotusScript』です。

そう、古株の方はお気づきですよね。Lotus 時代、前衛的な製品で eSuite という製品があり、それにあやかって命名しました。DXL 自体は新しい機能ではないので、先鋭的で興味深いライブラリになればとの思いを込めております。


dxlSuite の特徴

ライブラリの特徴は次の 3 点です。

1. DXL で標準クラスの限界を突破!

ノーツクライアントでリッチテキストに配置/操作のできる多数のオブジェクトに対応。それぞれのオブジェクトの細かなプロパティにもアクセスできます。

2. クラスライブラリとして提供

ライブラリはクラスライブラリとして提供。タイプアヘッドによる入力補助など標準クラスと同様の使用感で利用いただけます。

3. シンプル&パワフル

チュートリアル & オンラインヘルプを装備しています。もちろん日本語です(笑)。その上、ライブラリ内に開発支援機能を搭載しています。複雑なリッチテキストの処理を標準クラスより簡単/効率的に開発ができます。


活用事例

dxlSuite の機能を使って作成したサンプルアプリを紹介します。

チマタによくある数独アプリですね。選択したセルや入力した数字と同じマスを色付け、メモ機能を搭載したノーツで遊べる数独です。

dxlSuite の機能を使えばこんなアプリを作ることができます。


サンプルアプリの構造

この数独アプリの構造を紐解きながら、dxlSuite でどのようなことができるか紹介します。

フォームの設計にはリッチテキストが 1 つあるだけです(Step 数など一部隠しフィールドは存在)。このリッチテキストフィールド内にゲーム板全体の画面を DXL で生成しています。

画面構成の大枠を表で作成し、各セルに画像をインラインイメージで貼り付けています(未選択は透明の画像)。マスの色は、表の背景色で表現しています。入力可能なマスは画像に対してホットスポットのアクションを設定しており、クリックすると事前に準備したスクリプトライブラリの関数をコール仕組みとなっています。

このように dxlSuite でノーツ標準の機能を組み合わせて実現しております。利用した機能をざっとまとめると次の通りです。

  • 表を作成し、罫線の色や幅を設定
  • 表の各列の幅を固定
  • 各マスに画像(イメージリソース)をインラインイメージで配置
  • 入力項目にはホットスポット(アクション)を設定し、各マスの座標を引数にした LotusScript のプログラムを設定
  • 選択マスを青、その影響範囲を水色、問題をグレーで表の背景色を設定


メモ機能で入力すると、もともとの入力欄の画像とホットスポットを削除して、3 x 3 のカスケード表を作成。各マスに画像を縮小して配置しています(以下の画面では、構造がわかるようカスケードした表の罫線を薄く表示しています)。

この部分で使用している dxlSuite の機能は、

  • セル内の既存コンテンツを削除して、カスケードの表を追加
  • 画像を縮小して配置

となります。


DXL は UI のコントロールができません。そこで、操作毎の画面を新しい文書で組み上げバックエンドで保存。その文書を UI にスイッチさせています。この操作は 標準クラスの NotesUIWorkspace や NotesUIDocument を活用して実現しています。

この仕様では、操作ごとに履歴のように文書が生成されますが、これらは Undo や Redo で利用しています。


リリースに関して

dxlSuite for LotusScript の正式な発表は DominoHub 2024 Osaka で行いますが、現時点の計画では、ネットショップサービスを経由した有償販売を予定しております。

このライブラリ、構想開始から約 2 年、最新バージョンだけでもかなりの工数をかけて製作してきました。これまで 30 年にわたる Notes/Domino アプリ開発経験で最大級のライブラリで、かなりのコーディング量となっています。

それを回収することが目的ではありません。いくら注意をしてても、必ず、改善点やバグなどが発生します。このような状況になった場合により確実にご案内できるよう、有償という形態を考えております。

また、必要とされた方が明確になります。もし、ニーズが多いようでしたら、設計要素の対応などの機能強化やより便利になるような改善など、バージョンアップを考えたいと思います。


最後に

dxlSuite for LotusScript の機能を紹介させていただきました。LotusScript の標準クラスでは実現できないことがいろいろと含まれていたことがお判りいただけたかと思います。このほかにも機能がありますし、どのようなコーディングになるのか、開発環境や開発支援機能など気になることもあるかと思います。

ご興味を持たれた方は、DominoHub 2024 Osaka にお越しください。体験コーナーで、見て、触って、実際に感じていただけます。

0 件のコメント:

コメントを投稿