埋め込み Webエリアでの $4d を介したクラスの使用

4D 20 R9 ではWebエリアの $4dオブジェクトに対してコンテキストを定義し、機能を限定して公開できるようにする新しいコマンドが導入されました。以前は、$4d を使用することは、Webエリアに 4D のメソッドを公開することと同義でしたが、今後は代わりにクラス関数を定義して使用することができます。この改善により、4D機能を Webエリアに統合する場合の機能の整理、カプセル化、セキュリティの向上が実現できます。

HDI: Webエリア内でクラスを使う

WA SET CONTEXT により特定メソッドにアクセスを限定

新しい WA SET CONTEXT コマンドを使用して、$4d での使用を許可する関数のみを格納するオブジェクトを設定できます。

たとえば、Webエリアのコンテキストを次のように設定します:

var $myWAObject:=cs.WAFunctions.new()
WA SET CONTEXT ( * ; "MyWebArea"; $myWAObject)

WAFunctions クラスに設定されている関数は次のとおりです:

Function next()
	// 何らかのコード
	
Function previous()
	// 何らかのコード
	
Function current()
	// 何らかのコード

すると、”MyWebArea” の Webエリアで使用可能な $4d JavaScript関数は次のものに限られます:

  • $4d.next()
  • $4d.previous()
  • $4d.current()

 

同様に、既存のプロジェクトメソッドの使用を許可するには、それらをオブジェクトにカプセル化し、WA SET CONTEXT コマンドに渡します:

var $context:={}
$context.myNextMethod:=Formula(myNextMethod)
$context.myPreviousMethod:=Formula(myPreviousMethod)
$context.myCurrentMethod:=Formula(myCurrentMethod)

WA SET CONTEXT(*; "myWebArea"; $context)

すると、”MyWebArea” の Webエリアで使用可能な $4d javascript関数は次のとおりになります:

  • $4d.myNextMethod()
  • $4d.myPreviousMethod()
  • $4d.myCurrentMethod()

 

Webページは以前と変わらずに実行されますが、呼び出せるのはこの 3つのメソッドだけになります。

まとめ

この新しいコマンドにより、Webエリアで $4d がどのように動作するかを、よりよくコントロールできるようになりました。選択した機能にアクセスを限定できるようになり、アプリをよりセキュアで整理されたものにすることができます。さらに、$4d でクラス関数を使用することで、コードをすっきりさせ、管理しやすくなります。

詳細については公式ドキュメントを参照ください。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。