セッション権限を検査してデバッグを容易に
データへのアクセスをフィルタリングする強力な機能は、アプリケーションへの悪意あるアクセスを防ぐために不可欠です。
この機能は、データに対する特定のアクションを許可する権限を利用します。これらの権限は、ロールの形でユーザーに割り当てられ、認証時にSession オブジェクトに保存されます。
4D 20 R6 ではこの機能を強化され、セッション内の権限を検査できるようになりました。
詳細はこちらをご覧ください。
オブジェクトとコレクションの簡単な参照比較
オブジェクトは4DランゲージとQodlyにとって不可欠なものとなりました。
しかし、このタイプの変数を宣言するときは、実際には参照を定義していることになります。では、2つのオブジェクトが実際には1つで、同じ参照を共有しているかどうかを知るにはどうすればいいのでしょうか?
4D 20 R6から、オブジェクト参照の比較はシンプルになりました。それには、= と # 演算子を使うだけです!
このブログ記事では、これらの演算子と、オブジェクトが同じ参照を共有しているかどうかを判断する方法について説明していきます。詳しく見ていきましょう!
セッションストレージへのアクセスを強化
クライアント/サーバー、Web、モバイルなど、様々なセッションタイプのストレージには情報を保存できるため、異なるプロセス間での再利用が簡単におこなえます。
4D 20 R6 では、特定のセッションのストレージにアクセスできるようになりました。この機能強化により、複数のセッションにまたがる同一ユーザーの情報について、連続性と一貫性を簡単に維持することができます。つまり、クライアント/サーバーや Web などの異なるアプリケーションを使用していても、同じ顧客情報を引き出せるということです。
HTTPエージェントによる HTTPリクエストの管理
4D 19 R6 では、HTTPクライアントコマンドの構文を近代化し、機能を強化するために、HTTPクラスを導入しました。これをベースに、4D 20 R6 では強力な新機能を追加しました: HTTPエージェントの登場です。これらのエージェントは、HTTPリクエストの接続の持続性と再利用を管理することで、HTTPサーバーへの接続のカスタマイズ・最適化を可能にします。
クラスのプロパティ宣言と代入を1行で行う
新しいウィンドウタイプでアプリの外観をカスタマイズ
4D 20 R5 では、 2つのウィンドウタイプが追加されました。新たに提供される、タイトルバーのないフレキシブルなモーダルまたは非モーダルのウィンドウは、アプリケーションのカスタマイズ性に新たな可能性をもたらします。これにより、アプリケーションの外観を完全に自由にカスタマイズできるので、仕様に正確に沿うよう、または好みどおりにタイトルバーを設計し、カスタマイズされた検索ボックスなどの機能をシームレスに統合することができます。
それだけではありません! 開発プロセスを合理化するために設計されたいくつかの新しいコマンドも導入しました:
- ウィンドウを最小化するコマンド
- ウィンドウが最小化されているかどうかを確認するためのコマンド
- ウィンドウが最大化されているかどうかを確認するためのコマンド
クライアント/サーバー接続とストアドプロシージャーに対応した新しい 4Dリモートセッションオブジェクト
4Dアプリケーションでは、4種類のセッションが存在します。4Dリモートセッション、ストアドプロシージャーセッション、モバイルセッション、Webセッションです。
Sessionコマンドはいままで、Web または モバイルセッションを返しました。これにより、セッションに関する豊富な情報と、セッション内のすべてのプロセスで共有されるオブジェクトにアクセスできます。
4D 20 R5 では、Sessionコマンドの対象がクライアント/サーバー接続とストアドプロシージャーに拡張されました。
Try-Catchコードブロックの公開!
throw()コマンドを実装し、Try(Expression)キーワードを導入した後、4Dのエラー処理システムの次の進化として、Try-Catchコードブロックを導入しました!
共有クラス
古典的なオブジェクト構文に従い、必要なときに自動的にuse/end useを呼び出す、シンプルな共有オブジェクトの使い方をお望みですか?
シートベルトを締めてください。共有クラスの登場です!
4D のシングルトン
4D 20 R5 は、デベロッパーのための強力な機能を提供します: シングルトンの登場です!
シングルトンデザインパターンでは、アプリケーション全体でアクセス可能なクラスのインスタンスを 1つだけ作成します。
このパターンには、以下のような多くの利点があります:
- インタープロセス値の提供
- ユーティリティクラスの作成
- ファクトリーデザインパターンのベースとして
- ほかにも多数
この新しいコンセプトの詳細については、このまま読み進めてください!