4D 20 R6での新機能

プログラミング関連の機能

RESTおよびQodlyのシングルトンのサポート

4D 20 R6 では以前のリリースで導入されたシングルトンの可能性を拡張します。今後は、共有シングルトンによって公開された関数を、REST API やQoldy のページイベントを通して直接呼び出すことができるようになります。


HTTPエージェントを使用してHTTPリクエストを管理

4D 20 R6 ではHTTP サーバーへの接続をカスタマイズするためのHTTP エージェントが導入されます。これらのHTTP エージェントはHTTP リクエストの接続持続性とその再利用を管理します。

この最適化によって、それぞれのリクエストに対して(特にセキュアな接続の)再ネゴシエーションをするための手間を省くことができます。デフォルトでは、全ての HTTPRequest コマンドは接続を維持するベーシックなエージェントを使用します。一方で、ユーザーはカスタムのエージェントを作成し、エージェントレベルでkeep-alive 機構を管理したり、最大同時接続数を設定したり、タイムアウトを追加したり、TLS/SSL 設定を管理したりなど、接続を微調整することができます。

全てのREST認証に対して強制ログインモードがデフォルトに

4D 20 R6 ではREST API アクセスを管理するためのデフォルトの振る舞いとして、強制ログインモードを導入します。ds.authentify 関数によって実装されるこの機能は、API アクセスに対してログイン情報を要求することでセキュリティを向上させます。新規作成されたプロジェクトにはforceLogin 属性がTrue に設定されているroles.json ファイルが自動的に含まれ、デフォルトでアクセスを拒否します。既存のプロジェクトも、ストラクチャー設定ダイアログ内にある新しいボタンを使用することでこのモードへと変換することができます。このアップデートにより旧式のアクセス管理メソッドからの移行をシンプルになり、Qodly Studio のRoles and Privileges エディターを使用したきめ細やかなアクセス管理が可能になりました。

宣言された名前空間を用いてコンポーネントを相互に使用

4D 20 R6では新しいアプローチを導入します: 宣言された名前空間を持つコンポーネントは、同じプロジェクト内において他のコンポーネントとそのクラスを自動的に共有しあいます。これによって複雑な設定をすることなく、他のコンポーネントのクラスをコード内で自由に使えるようになります。

オブジェクトおよびコレクションの簡単な参照比較

4D 20 R6 ではコード内のオブジェクトの使用がより簡単になります!このバージョンで導入された新しい比較演算子(= および #)を使用すると、2つのオブジェクトがメモリ内で同一のものであるかどうかを素早く検知することができます。これはオブジェクト参照を使用している場合に特に役立ちます。

改善されたSessionのstoargeアクセス

これまでは、同じアプリケーション内の異なる部分(Webアプリやクライアント/サーバーアプリなど)においてもユーザーエクスペリエンスが同等に保つことは必ずしも簡単なことではありませんでした。これは、あるセッションで保存されている情報に他のセッションからアクセスするのが難しかったからです。

4D 20 R6 ではこの問題を新しいコマンド、Session storage by id で解決します。このコマンドを使用すると、アプリケーション内のあるセッションのストレージに、そのセッションがWebセッションであろうがクライアント/サーバーセッションであろうとモバイルセッションであろうと、簡単にアクセスできるようになります。

これはつまり、アプリケーション内の他の部分でも共有する必要のある情報を簡単に保存できるようになります。例えば、ユーザーがログインしたときにある顧客の情報をセッションに保存し、その同じレコードをWebアプリやクライアント/サーバーアプリなどからアクセスするといったことが可能になります。

パーミッション: セッションの権利を検査してデバッグを容易に

4D 20 R6 では、データへのユーザーアクセスをより細やかに管理することで、アプリケーション内のセキュリティを強化します!

アプリケーションを保護するための一つの重要な方法は、ユーザーがアクセスできるデータをコントロールすることです。4D 20 R6 では権限の管理を改善することでこれをより簡単にします。

ORDA

エンティティセレクション内に空のスペースを残さない

4D 20 R6 ではエンティティセレクションの新しい関数、clean() 関数を導入します。これを使用することで、エンティティを削除したあとの煩わしい空白のスペースを取り除くことができます。これによりインターフェースをクリーンで整頓した状態に保つことで、ユーザーエクスペリエンスを改善させることができます。

コードエディター

グローバル警告の表示をカスタマイズ

新しいグローバル警告管理を使用することで、4D 20 R6 ではコード内での最も重要な問題に容易にフォーカスすることを可能にします。4D コード内の警告は潜在的なエラーをキャッチするのに役立ちます。これはいわばセーフティネットのような役割を果たし、あとあと問題を引き起こす可能性のある情報を教えてくれます。しかしながら、巨大または複雑なプロジェクトにおいては、たくさんのエラーが表示される可能性があります。

あまりにも膨大すぎると、それを受け止めきれず、またコードの中の最も重要な問題に集中するのが難しくなってしまいます。

4D 20 R6 では表示される警告をより細やかにコントロールできます:

  • グローバル警告定義: コードエディターまたはコンパイラーダイアログにおいて、どの警告がグローバルに表示されるかを定義することができます。これによってプロジェクトまたは自分のコーディングスタイルとは関係ないと分かりきっている警告を表示しないようにすることができます。
  • より高い柔軟性: ある警告タイプが設定されたパラメーターによって表示または非表示にされていたとしても、//%W+ and //%W- スイッチを使用することによって、これらの警告タイプのチェックをローカルに有効化することが可能です。

4D Write Pro 

空のデータソースを管理

4D 20 R6 では、特に表組にリンクされたデータが空のときなどのドキュメント内の表組の表示について細やかに管理することができます。これは新しい属性 wk empty datasource を使用することで可能になります。この属性はリンクされたデータソースが空の場合に表組みがどのように振る舞うかを定義します。使用できるオプションは以下の通りです:

  • データ行を表示(デフォルト)
  • データ行を非表示にする
  • 表組み全体を非表示にする
  • プレースホルダー行を表示する

Web エリア

埋め込みWEBエリアの初期化用のカスタムのパラメータ

4D 20 R6 ではアプリケーション内の埋め込みWeb エリアをカスタマイズするのを容易にします!Web エリアはブラウジング用にChronium を使用しており、デベロッパーは時としてこのChronium の振る舞いを調整する必要があります。

これまでは、これには複雑なコードの書き換えが必要でした。4D 20 R6 においては、”4DCEFParameters.json” という名前のファイルを作成し、その中での必要なカスタマイズを指定するだけでこれを行うことができます。これによってカスタマイズの管理が容易になると同時に、そのカスタマイズが正しく適用されているようにすることもできます。

例えば、この機能を使用することで、Web エリア内で動画が自動的に再生されるようにすることができます。これは以前ではできなかったことです。

4D コンポーネント

4D コンポーネントをGITHUBから直接統合する

4D 20 R6 では、4D プロジェクト内でコンポーネントを使用することを、特にそのコンポーネントがGitHub上に保存されている場合により簡単にします。これまでは、コンポートマネージャーはローカルのドライブに保存されているコンポーネントに対してしか使用できませんでした。4D 20 R6 では、GitHub レポジトリ上のコンポーネントも直接統合できるようになります。

4D Netkit

OAUTH 2.0 接続インターフェースをカスタマイズ

4D 20 R6 ではアプリケーション内にてユーザーがどのようにOAuth 2.0 でログインするかについてより細やかにコントロールできるようになりました。

デフォルトでは、OAuth 2.0 ログインはWeb ブラウザウィンドウを開き、ログインインターフェースを表示します。しかしこのエクスペリエンスをカスタマイズしたいとしたらどうでしょうか?

4D 20 R6 では、browserAutoOpen 属性を使用してWeb ブラウザウィンドウが自動的に開くことを防ぐことができます。これによって、ログインインターフェースをアプリケーション内の好きな箇所で表示することができるようになります。

ユーザーエクスペリエンス

サブフォーム内の改善されたスクロールの振る舞い

4D 20 R6 ではアプリケーション内のサブフォームが、ユーザーにとってよりスムーズで直感的に使えるようになりました!

今までに、サブフォーム内のリストをスクロールしようとしたのにサブフォーム全体がスクロールしてしまってイライラしたことはありませんか?あるいはサブフォームをスクロールしようとしたのにリストボックスが動かなかったことなどはありませんか?

4D 20 R6 では、新しいサブフォームのスクロールの振る舞いでこれを改善しています。

もっと知りたいですか?4D v20 R6についての全ての記事を読んでみましょう