4D 21 により、新たな可能性が開かれました: 追加の 4Dクライアントライセンスを消費せずに、4Dフォームの Webエリアに Qodlyページをシームレスに埋め込むことができます。4D Qodly Pro を活用することで、新世代のモダンでダイナミックなユーザーインターフェースにフルアクセスできるようになりました。デスクトップフォームか Webフォームかの選択に悩む必要はもうありません。両方を組み合わせ、ご自身のペースで進化させていきましょう。
4D Qodly Pro は、4D 内で標準機能として提供されており、4Dアプリケーション向けに Webフォームを設計・構築・実行するために必要なツールをすべて備えています。
Qodlyページの作成はスケーラブルWebセッションに依存しています。これは、Sessionコマンドを使用し、Sessionオブジェクトを取得するために必要です。この Sessionオブジェクトは、4D Qodly Pro の要石であり、ユーザー固有のデータを格納するための Session.storage を提供し、ユーザー権限の管理において中心的な役割を果たします。
クライアントサーバー型の 4Dアプリケーションでは、4D Server は各ユーザーのリモートユーザーセッションも管理します。このセッションも Session.storage を提供するため、非常に便利です!
4D 21 以降は、これらのリモートユーザーセッションでも Qodlyページを提供できるようになりました。 デベロッパーにとっての直接的なメリットは、追加の 4Dクライアントライセンスを必要とせずに、4Dフォームの Webエリア内に Qodlyページを埋め込めるようになったことです。リモートユーザーセッションのおかげで、ユーザーが 4Dフォームを表示するために既に使用しているライセンスが、埋め込まれた Qodlyページのレンダリングにも再利用されます。
具体的な例
4Dフォーム上の Webエリアは Qodlyページをレンダリングできるため、4D Server アプリケーションに Webコンテンツを簡単に導入することができます。これにより、4D Qodly Pro のメリット、特にそのモダンで Web指向のデザインを最大限に活用できます。
4Dフォームや Qodlyページにアクセスするには、4Dクライアントライセンスが必要です。どちらの環境にも同じライセンスルールが適用されます。
しかし、OTPメカニズムのおかげで、同一のライセンスを 4Dフォームと、Webエリア内に埋め込まれた Qodlyページの両方に使用することができます。
その結果、従来の 4D UIコンポーネントとモダンな 4D Qodly Pro ウィジェットをシームレスに組み合わせた4Dフォームが実現します。

セッションID が、4Dフォーム (リモートユーザーセッションを使用) と、Qodlyページを表示している Webエリアの両方で同じであることが確認できます。
実装方法
otpメカニズム
OTP は One-Time-Passcode (ワンタイムパスコード) の略です。これは、デバイスやブラウザーを切り替える際や、外部システムとのやり取りをともなうワークフローを実装する際 (メールによるアカウント作成、サードパーティAPI など) に、既存のセッションを回復するために使用します。
ステップは簡単で、
- Session.createOTP() 関数を呼び出して、指定されたセッションの OTP を取得します。
- 任意のブラウザーで、”https://my4Dapp/$lib/renderer/?w=myQodlyPage&$4DSID=”+OTP のような URL で使用します。
提供されたOTPを使用して、元のセッションが取得されます。
4D 21 では、Session.createOTP() はWebセッションに限定されなくなり、リモートユーザーセッションでも動作するようになりました!
既存のリモートユーザーセッションを取得して使用するメカニズムは同じです。Webリクエストの $4DSIDパラメーターに OTP の値を指定すれば、対応するリモートユーザーセッションが使用されます。
実装
getOTP プロジェクトメソッド、シングルトン関数、または ORDA関数のいずれかを作成します。このコードがサーバー上で実行されることを必ず確認してください。クライアント上で Sessionコマンドを実行すると null が返されます。
// クライアントサーバー環境にて:
// ----------------
// Sessionオブジェクトはサーバー上にあるため、このメソッドはサーバー上で実行します。
// クライアント上では Session オブジェクトは Null になります。
//
#DECLARE() : Text
return Session.createOTP()
Webエリア内に Qodlyページ (ここでは ‘Products’) を読み込みます。
Form.otp:=getOTP
Form.url:="http://localhost/$lib/renderer/?w=Products&$4DSID="+Form.otp
WA OPEN URL(*; "QodlyPage"; Form.url)
権限の取り扱い
Qodlyページに必要な権限は、Webエリアで URL を開く前に、setPrivileges() 関数を使用してあらかじめセッションに設定しておくことができます。
リモートユーザーセッションに対して呼び出されると、その後の Webアクセスに備えてセッションに権限が追加されます。
4D開発環境でのクライアントサーバーアプリの開発とテスト
OTPメカニズムは 4D の開発環境でもサポートされているため、クライアントサーバーアプリケーションの開発とテストは 4D開発環境で容易に行うことができます。
この開発環境には、リモートユーザーセッションと同様に、Webアクセスを処理するための OTP を生成可能な、真のスタンドアロンセッションが存在するようになりました。
クライアントサーバー環境と 4D開発環境の両方で、添付の HDI を実行してみてください。 違いはなく、挙動は同じです。
以上のように、勝利の方程式は 4D Qodly Pro = 4D です。これにより、4D Server アプリケーションにモダンでダイナミックなインターフェースを極めて簡単に導入できるようになります。
道は大きく開かれており、追加のものは何も必要ありません。4D Qodly Pro を使い始めるのは、かつてないほど簡単になりました。
