4D 20 R10での新機能

AIの統合

新しいネイティブクラスである4D.VECTOR

アプリケーションにおいて意味検索、文書分類、画像グルーピングなど、インテリジェントな機能を構築したいとき、そのアプリケーションはもはや単にデータを保存しているだけではありません。意味を整理しているのです。そしてその第一歩として必要になるのは、ベクトルです。

4D 20 R10では、4D.Vector クラスが導入されました。これは、高次元の数値データを保持し、操作するために設計された、メモリ効率の高いネイティブなクラスです。このクラスは、コサイン類似度、ドット積、正規化などのパフォーマンスをサポートする演算を4D内で行えるように構築されています。

この新機能は単にAIを追加するというだけのものではありません。AIネイティブのワークフローをデータモデルの一部にすることです。行いたいことが商品説明の比較であろうと、サポートチケットの分類であろうと、あるいはコンテンツによる画像のランク付けであろうと、4D.Vector を使用すれば、高速かつ正確に、外部ツールなしで意味を計算し、比較することができます。

そして、これらのベクトルをデータベースに保存することができます。クラス型フィールドで使用する、類似性でソートする、こういった最新のインテリジェント・システムに必要なすべてが、あなたのアプリのコアに組み込まれています。

AIキットのOpenAIによるベクトル生成

4D 20 R10はAI Kitを拡張し、OpenAIのベクトル生成APIをネイティブサポートするようになりました。新しい OpenAIEmbeddingsAPI.create() メソッドは、文字列やコレクションを4D.Vector インスタンスに変換し、類似度スコアリング、ランキングシステム、セマンティックフィルターですぐに使用することができます。

トークン管理も、HTTP処理も、レスポンス解析も必要ありません。たった1行のコードで、インテリジェントなワークフローのために構築された、特化したベクトルを作成することができます。

データベース

ストラクチャーエディタにおいてクラス型オブジェクトフィールドを指定

ストラクチャーエディタで、オブジェクトフィールドを特定のクラスに割り当てることができるようになりました。これは単なるメタデータではありません。言わば、契約です。

オブジェクトフィールドにユーザクラスを割り当てることで、以下のことが可能になります:

  • プロパティレベルの自動補完

  • コンパイル時のシンタックスチェック

  • オブジェクトの構造のランタイム検証

オブジェクトが宣言されたクラスと一致しない場合、4Dはエラーを発生させます。ストラクチャーはスキーマとなり、データはクリーンな状態を保ちます。また、4D.Vector と組み合わせて、クラス内に型付けされたベクトル属性を定義することで、すべてのエンティティが独自のセマンティックフィンガープリントを持つことを意味し、これにより類似性のスコアリング、AIによるソート、インテリジェントなレコメンデーションの準備が整います。

V7 UUIDのサポート

UUID 生成がさらに改善されました。UUID.generate() 関数はバージョン7の識別子をサポートするようになりました。つまり、あなたのUUIDは普遍的に重複しないだけでなく、時系列でソート可能で、データベース・フレンドリーであり、最新の分散システム用に適切となるように設計されています。

内部的には、v7のUUIDはタイムスタンプデータを埋め込んでおり、順序付けられた保存に最適で、またインデックスを付けやすくしています。これは小さな変更かもしれませんが、スケールとクエリ・パフォーマンスに大きな影響を与える変更です。

ORDA

エンティティコンストラクタとonTouch()イベント

4D 20 R10では、データクラスのエンティティにコンストラクタのサポートと onTouch() イベントが導入されました。

コンストラクタを使用することで、インスタンス生成時に値を初期化することができます。これは、タイムスタンプ、デフォルト値、またはコンテキストに合わせたプロパティの設定に最適です。また onTouch() を使用すると、属性がメモリ内で変更されたときに反応することができ、これによってリアルタイムの検証や正規化、フィールドのプロパゲーションを行うことができます。

どちらもデフォルトではサーバーサイドで実行されます(local を使用することでクライアントサイドで実行されます)。これはライフサイクルを意識したデータロジックの始まりであり、ORDAレイヤーに集中化し、ORDAレイヤーを予測可能にする、ネイティブな新機能です。

ユーザーインターフェース

フォームオブジェクトのダイナミックなフォーミュラ

UIロジックがよりスマートになりました。 OBJECT SET DATA SOURCE FORMULA を使うことで、フォームオブジェクトの値をフォーミュラに直接バインドできるようになりました

つまり、スタティックなフィールドにバインドすることなく、計算、変数、コンテキストに基づいて値を動的に変更できるということです。

これを lk selected items expression のようなリストボックス定数と組み合わせることで 、リアルタイムに適応するフォーム動作が得られ、またコードの重複が減り、応答性が向上します。

ネットワーク処理

新しいudpコマンド

新しい 4D.UDPSocket クラスは、User Datagram Protocol をネイティブでサポートします。これは高速で、コネクション不要で、低遅延通信に最適です。

管理するためには、onData onErroronTerminateようなコールバックを設定します 。パケットの送受信には send() を使用します。また 4D.UDPEvent を使用することでメタデータを検査することもできますそして共有の 4DTCPUDPLog.txt ファイルでトラフィックを監視することもできます

UDPは今やファーストクラス級の洗練度であり、かつイベントドリブンでもあります。つまりリアルタイム・デバイス・シグナル、ディスカバリー・プロトコル、または低オーバーヘッドの内部メッセージングに最適です

tcp接続タイムアウト制御

TCPConnection クラスは .connectionTimeout プロパティを 公開し 、これによって応答性を微調整できるようになりました。待ち時間のしきい値を設定し、長時間実行されるリクエストを終了させ、ネットワークエラーをより速く処理します。

もうUIがフリーズすることはありません。不定期に待たされることもありません。ネットワーク動作をクリーンにコントロールできます。

依存関係マネージャー

再帰的な依存関係の解決と管理

コンポーネントマネージャーは、依存関係の完全なツリーを理解するようになりました。コンポーネントが他のコンポーネントを必要とする場合、それらは自動的にロードされます。この呼び出しに循環参照が存在する場合、それがあなたのアプリケーションを壊す前にブロックされます。

この機能には以下が含まれます:

  • 再帰的な依存関係の発見

  • ロード順序の解決

  • 循環グラフのエラー検出

これによって、あなたは、モジュール化された再利用可能なコンポーネントを安心して書くことができます。それらが正しくロードされるようにするのは4Dはの仕事です。そしてそれはいつでも正しくロードされるようになりました。

4D Netkit

Microsoft 365とGoogle Calendarsのイベントの作成、更新、削除

cs.NetKit.Office365.calendar と のクラスが、カレンダーイベントの完全なライフサイクル管理をサポートするようになりました。cs.NetKit.Google.calendar

これらのAPIを使用すると、以下のようなことを正確に制御できるようになります:

  • 開始時刻と終了時刻

  • 出席者管理

  • 繰り返しルール

  • オンライン会議リンク

  • ゲストへの通知

  • イベントのカテゴリと説明

スケジュール、リマインダー、自動予約、TeamsやGoogle Meetとの統合など、カレンダーのワークフローを1行のコードで安全かつシームレスに管理できます。

アプリケーションをビルドする

BuildAppライセンスの自動化

BuildApp プロセスにライセンスの自動統合機能が追加されました。マシンに有効な運用ライセンスがあれば、それがビルドしたアプリケーションに直接注入されます。

Build ダイアログの新しいオプションと、 BuildApp.4DSettings ファイル内の 新しい AutomaticLicenseIntegration boolean キーにより、手動モード、自動モード、評価ライセンスモードを切り替えることができます。ライセンスパスは不要です。マシン固有のオーバーライドもありません。シームレスでポータブルなビルドを実現します。

ビルド・ログはライセンス使用量を追跡し、UIはビルド後にどのターゲットが作成されたかを明確に報告します。

セキュリティ

フォーミュラの安全な貼り付け

4Dアプリケーションの外からコピーされた数式は、値としてのみペーストされるようになりました。

この変更は、マルチスタイル入力と4D Write Proフィールドに影響します。数式が一度も計算されていない場合、そのソースはプレーンテキストとして貼り付けられます。そうでない場合は、評価された結果(テキストまたは画像)のみが保持されます。

これは静かな脆弱性に対する静かな修正であり、共同作業環境にとってより安全なデフォルトの動作と言えるでしょう。

削除されたライブラリ

MECABの削除

日本語テキスト分割のために使用されていたMeCabライブラリが削除されました。もともとキーワード検索のために導入されたMeCabは、もう10年以上更新がされてません。また辞書のカスタマイズができないため、メンテナンスのリスクがありました。

カスタムトークナイゼーションが必要な場合は、ORDAやコンポーネントベースのクエリを使うことで独自のロジックを実装できます。