メインコンテンツまでスキップ
バージョン: 20

リリースノート

tip

4D 20 の新機能: 4D 20.x LTS の新機能と拡張機能をすべてリストアップしたブログ記事です。

4D 20.5 LTS

ハイライト

  • 4D 20.5 LTD は Windows 11 24H2 対応です。
  • 4D 20.5 LTS は macOS Sequoia (macOS 15) 対応です。
Windows 11 24H2における既知の問題

Windows 11 24H2 では、Microsoft Print to PDFドライバーを使用して PDF を生成すると、現在調査中の問題が原因で失敗する可能性があります。 4Dアプリケーションで頻繁に PDF を印刷する場合、Windows 11 24H2 へのアップグレードはされないことをお勧めします。

4D 20.4 LTS

ハイライト

4D 20.3 LTS

ハイライト

  • CEF が Chromium 5993 にアップデートされました。
  • SpreadJS は 4D 20.2 HF1 でバージョン 16.2.6 にアップデートされました。
  • 修正リスト: 4D 20.3 LTS で修正されたバグのリストです (日本語版はこちら)。

動作の変更

  • 4D 20.3では、4Dユーザーディレクトリが bcryptアルゴリズムを使用している場合にパスワード認証を可能にするため、Open datastoreコマンドの connectionInfo パラメーターに設定する "password" 値は、デフォルトでクリアテキストで送信されるようになりました。 "On REST authentication" データベースメソッドが、パスワードを平文の状態で扱えるようにし (3番目のパラメーターは False)、Open datastore に渡す connectionInfo で "tls" オプションを True にすることで、接続が暗号化されるようにする必要があります。 特定の場合には、新しい "passwordAlgorithm" オプションも互換性のために使用できます (Open datastore コマンド参照)。

4D 20.2 LTS

ハイライト

  • 4D 20.2 は macOS Sonoma (macOS 14) 対応です。
セキュリティに関する注記

4Dアプリケーションが TLS接続を使用する場合は、4D 20.2 LTS build 100956以上へのアップグレードが推奨されます。 詳細は セキュリティ情報 を参照ください。

4D Server 20.2 以降の最小クライアントバージョンについて

内部的な理由により、4D 20.2 以降の 4D Server に接続するリモートクライアントのバージョンは、4D 20.2 以上でなければなりません。

動作の変更

  • 4D 20.2 以降、4D 20 LTS は Windows Server 2012 R2 との互換性がなくなりました。
  • 警告: 4D.FileHandle オブジェクトの offset の開始値が誤って 0 ではなく 1 に設定されていました。 20.2 (20.1 HF1) および 20 R2 のバージョンで 4D が修正され、この値が 0 になりました。

4D 20.1 LTS

ハイライト

4D 20.1 インデックス再構築、およびクライアント/サーバーのバージョンについての警告

4D 20.1 には ICUライブラリーのアップデートが含まれており、以下の影響があります:

  • 文字列型、テキスト型、オブジェクト型のインデックスの再構築が強制されます。
  • 並べ替えの一貫性のため、4Dリモートクライアントと 4D Server は同じバージョンを使用する必要があります。4D 20.1 のリモートと 4D Server 20.1 のみが互いに接続できます。

4D 20 LTS

ハイライト

インデックス再構築

4D 20 では、ICUライブラリのアップデート (後述参照) により、文字列型、テキスト型、オブジェクト型のインデックスの再構築が強制されます。 データファイルのサイズに応じて、この処理には時間がかかることがあるため、計画的なアップグレードが推奨されます。

動作の変更

  • HTTP RFC に準拠するため、HTTPRequestClass.response.headers プロパティは、すべてのヘッダー名を 小文字で 返すようになりました。 以前と同じふるまいが必要な場合には、新しい HTTPRequestClass.response.rawHeaders プロパティを使用します。
  • 4D.HTTPRequest.new() で HTTPリクエストを送信する際、TLS証明書が 4Dによって自動的に検証され、無効な場合はエラーで拒否されるようになりました。 新しい option プロパティで、この検証を管理することができます。
  • TLS v1.0 および TLS v1.1 は廃止され、4D Server において Min TLS version としてサポートされなくなりました。 現在はバージョン 1.3 がデフォルトで選択されています。_o_TLSv1_0 または _o_TLSv1_1 定数が SET DATABASE PARAMETER で設定されている場合には、バージョン 1.3 が自動的に使用されます。
  • 一貫性のため、ボタン・チェックボックス・ラジオボタンはすべて、実行時に "3D" タイプでレンダリングされるようになりました。これらのオブジェクトに対し OBJECT Get type を呼び出した場合、返されるのはそれぞれ、Object type 3D buttonObject type 3D checkboxObject type 3D radio button の値です。
  • 4D 20 より、4D for Mobile は 4D環境にデフォルトでインストールされなくなりました。 4D for Mobile の開発機能を 4D で利用するには、プロジェクトの "Components" フォルダーに 4D Mobile App コンポーネントをインストール する必要があります。 プロジェクトが 4D Mobile App Server コンポーネント の機能を使用している場合、こちらも同じ場所にインストールする必要があります。

4D 19 R8

4D 19 R8 の新機能: 4D 19 R8 の新機能と拡張機能をすべてリストアップしたブログ記事です。

ハイライト

動作の変更

  • HTTP RFC に準拠するため、HTTPRequestClass.response.headers プロパティは、すべてのヘッダー名を 小文字で 返すようになりました。 以前と同じふるまいが必要な場合には、新しい HTTPRequestClass.response.rawHeaders プロパティを使用します。
  • 標準アクションが適用されている リンクされているポップアップメニューの付いたベベルボタン で、ポップアップメニューのオプションが選択された場合、その標準アクションは実行されなくなりました。
  • Blink (CEF) を使用する Webエリアにおいて、外部スクリプトによって表示されるダイアログは、 setTimeout() JS 関数から呼び出されていないとブロックされるようになりました。 これは、現在のCEFのアップデートにより、alert()print() などの関数によって表示されるダイアログが、OS ではなく Web エリアで処理されるようになったためです。 WA Evaluate JavaScript および WA EXECUTE JAVASCRIPT 参照。

4D 19 R7

4D 19 R7 の新機能: 4D 19 R7 の新機能と拡張機能をすべてリストアップしたブログ記事です。

ハイライト

動作の変更

  • 標準的なインターフェース (OS のファイルエクスプローラなど) との一貫性を保つため、行の選択/ドラッグ&ドロップに関するリストボックスのルールが変更されました。 連続または不連続の選択行をクリックして移動するだけで、ドラッグできるようになり、Alt キーは不要になりました (ひきつづき以前のように使用することはできます)。 Shift または Ctrl/Command キーが押されている場合、マウスのクリックは押されたとき (マウスダウン) に考慮されます。 リストボックスでのドラッグ&ドロップの詳細については、このブログ記事 を参照し、このHDI 4Dプロジェクト をダウンロードしてください。
  • 4D 19 R7 から 4D の内部ビルド番号が変更されました:
    • 4D 19 R6 (含む) までのリリースは 282xxx の番号です。
    • 4D 19 R7 以降のリリースは 100xxx という番号になります。
      なお、特定の 4Dバージョンは、ブランチ名とビルド番号により一意に識別されます。 ビルド番号は時系列に増加します。
  • Wakanda/4D Mobile REST プロトコルを使用してプロジェクトメソッドを呼び出す機能が削除されました。 ORDAデータモデルクラス関数 または /4DACTION URL を代わりに使用することができます。

4D 19 R6

  • 新しい HTTPRequest クラス。
  • コードを呼び出すタイプの Collectionクラス関数が、formula 引数として Formulaオブジェクトをサポートするようになりました: .every(), .filter(), .find(), .findIndex(), .map(), .orderByMethod(), .reduce(), .some(), .sort()
  • リストボックスのセルは、横方向 および 縦方向 のパディングをサポートするようになりました。
  • 4D View Pro: 新しい VP CREATE TABLEVP REMOVE TABLE コマンドを使用して、シート内のテーブルを操作します。
  • Webデータエクスプローラー でリレート属性、計算属性、およびエイリアス属性を表示することができます。
  • 4D製品を改善し続けるために、実行中の 4D Server アプリケーションの使用状況データを自動的に収集します。 この処理はパフォーマンスに影響を与えません。 4D がデータを収集する理由と方法 について詳細を説明する新しいページを参照ください。
  • Silicon用にコンパイルされたコンポーネント: macOS Siliconプラットフォーム (Apple ARM CPU) では、このリリースで使用するためには、コンポーネントを 4D 19 R6 以降で再コンパイルする必要があります。

4D 19 R5

  • ビルド時に、プロジェクトの directory.json ファイルサーバーに埋め込む ことができるようになりました。 これにより、基本的なセキュリティのユーザーとグループ構成でクライアント/サーバーアプリケーションを運用することができます。

  • ビルドするアプリケーションで、使用しないモジュールの選択を解除 できるようになりました。

  • MeCab ライブラリが、すべての macOS 4Dアプリケーションにデフォルトで含まれるようになりました。 日本語テキストの管理に特化したこのライブラリは、以前のリリースでは日本語版の macOS 4D でのみ利用可能でした。 最終的なアプリケーションでこのライブラリが必要ない場合は、選択を解除 することができます。

  • クライアント/サーバーの最適化: 新しいクラス関数により、ORDAキャッシュと最適化コンテキストの内容を操作することができます。 詳細は、コンテキストの事前設定 および ORDAキャッシュ を参照ください。

    これらの関数は、特定の構成のため、ORDAのデフォルト機能をカスタマイズする必要がある開発者向けです。 ほとんどの場合、使用する必要はないでしょう。

  • DataClass クラス: 新しい .getCount() 関数は、データクラスの総エンティティ数を返します。

  • 4DDiagnosticLog.txt ファイルは、デフォルトでは高レベルの情報のみを記録します (INFOレベル)。 SET DATABASE PARAMETER コマンドまたはログ設定ファイルの Diagnostic log level セレクターを使用して、記録する情報レベル (たとえばDEBUGレベル) を選択できるようになりました。

  • 非共有オブジェクトや非共有コレクションに対して Use() を呼び出しても何も起こりません (エラーが発生しなくなりました)。 したがって、Use() に渡されたオブジェクトやコレクションが実際に共有されているかどうかをチェックする意味はなくなりました。

  • 分かりやすさのため、2つの SQLコマンドにプレフィックスが付けられました: GET DATA SOURCE LISTSQL GET DATA SOURCE LISTGet current data sourceSQL Get current data source に名称変更されました。

  • 4D View Pro:

    • 新しい VP SET DATA CONTEXTVP Get data contextVP SET BINDING PATH、および VP Get binding path コマンドを使って、データコンテキストを作成し、その内容をシートのセルにバインドすることができます。
    • VP EXPORT DOCUMENTVP Export to object は、データコンテキストの内容をセルの値としてエクスポートするための新しい includeBindingSource オプションを受け付けます。
    • (Windowsのみ) 4D View Pro エリアの印刷設定ウィンドウが新しくなりました。
  • Webエリア:

    • 新しい Windowsシステムのレンダリングエンジン: Windowsシステムのレンダリングエンジン を使用している Webエリアは、Microsoft Edge WebView2 をベースとするようになりました。 これにより、以下のような機能に影響があります:
      • WA Create URL history menu および WA GET URL HISTORY のコマンドは、カレントURL のみを返すようになりました。
      • 進捗状況変数 は更新されなくなりました。
      • ドラッグ&ドロップ機能は、マイクロソフトが "experimental" とタグ付けしている Windows API で処理されます。 そのため、この API がインストールされていない場合、Webエリアが期待どおりに振る舞わないかもしれません: WA enable URL drop 設定が false に設定されていても、ドラッグ&ドロップ機能が許可されているように見えるかもしれません。 しかし、ドロップアクションはデフォルトでブロックされており、許可する URL は On Window Opening Denied イベント で管理することができます (後述参照)。
    • (Windows のみ) ユーザーが、埋め込みWebレンダリングエンジンを使用している Webエリアから 印刷... メニューを選択した場合に表示される印刷設定ウィンドウが新しくなりました。
    • Webエリアにおけるコマンドの実際の効果 (ページズームレベルの増加/減少) を反映させるため、2つのコマンドの名前が変更されました: WA SET PAGE TEXT LARGERWA ZOOM IN に、WA SET PAGE TEXT SMALLERWA ZOOM OUT に名称変更されました。
    • 埋め込みWebレンダリングエンジン または (Microsoft Edge WebView2 に基づく) Windowsシステムのレンダリングエンジン を使用する Webエリアでのセキュリティを強化しました:
      • Webエリアにおいてディスク上のファイルにアクセスする場合にも、CORSポリシーが適用されるようになりました。 たとえば、WA OPEN URL を使用して .html ファイルを開こうとした場合、その .html ファイルには、フォルダー外のファイルへのリンクを含めることはできません。
      • Webエリアへの外部コンテンツのドロップは常にブロックされ、WA enable URL drop 設定が true に設定されている場合には、On Window Opening Denied イベント をトリガーします。WA enable URL drop 設定が false に設定されている場合、マウスカーソルのアイコンのみが変更され、On Window Opening Denied イベントはフィルターされます。 ドロップアクションを許可するには、Webエリアのオブジェクトメソッドにおいて以下のような追加のコードを実行する必要があります:
WA OPEN URL(*;"WebArea";WA Get last filtered URL(*;"WebArea"))

4D 19 R4

  • ORDAクラス: エイリアス属性 が利用可能に。
  • ループにおける break と continue 文のサポート。
  • return 文と、値を返すための return {expression} 文のサポート。
  • 複合代入演算子短絡演算子、および 三項演算子 のサポート。
  • コードナビゲーションを改善するため、コードエディター にドロップダウンツールが追加され、コードにマーカーを追加できるようになりました。
  • 新しい環境設定: 一般ページの Project ソースファイルにトークンを含める および、メソッドページの クリップボードを表示
  • エンティティを lock/unlock するための新しい REST リクエスト。
  • 4D View Pro の章が次の新コマンドとともに追加されました: VP Copy to object, VP MOVE CELLS, VP PASTE FROM OBJECT.
  • 新しい SystemWorker クラス
  • ORDA でエイリアス属性をサポートしたことに起因する競合を解決するため、Alias selection 定数の名称を Allow alias files に変更しました。
  • ORDA の仕様により適合するため、ヌル値に空値をマップ フィールドプロパティは、4D 19 R4以降で作成されたデータベースにおいてはデフォルトでチェックされないようになります。 以前のバージョンの 4D から変換されたデータベースにおいては、データベース設定の "フィールド作成時にヌル値を空値にマップをデフォルトでチェックを外す" オプションを選択することで、この新しいデフォルトの振る舞いを有効化することができます。 ORDA では NULL が完全にサポートされるようになったため、今後は使用することが推奨されます。
  • 三項演算子 のサポートに伴い、コロン ":" は今後、変数名、フィールド名、定数名、関数名、プラグイン名、プロジェクトメソッド名に使用できなくなります。 データベース/プロジェクトにおいてコロンを含む識別子が使用されている場合には、v19 R4 以降への変換前にそれらを置換する必要があります。置換しない場合、コード内でエラーが起きる可能性があります。 たとえば、a:b という名前の変数があった場合、これが三項演算子シンタックスとして誤解されてしまう可能性があります:
$value:=($size>1000)? a:b // この場合 'a:b' は三項演算子として解釈されます

4D 19 R3

// myClass クラスの "concate" 関数
Function concate ($param1 : Text ; $param2 : Text)
ALERT($param1+" "+$param2)
// 呼び出しメソッド
$class:=cs.myClass.new()
$class.concate("Hello";" world") // "Hello world" と表示
$class.concate("Hello") // "Hello " と表示
$class.concate() // " " と表示

詳細については、こちらの ブログ記事 を参照ください。 この全体的な変更を利点を活かすため、呼び出し先メソッドと呼び出し元メソッドの両方を再コンパイルする必要があります。そのため、コンポーネントの再コンパイルが必要になります。

  • Webサーバーセッションのデバッグが 4D Server 上で容易になりました

  • 新しい 4D NetKit コンポーネントを使って、Microsoft Graph などのサードパーティーAPI に接続することができます。

  • 4D 19 R3 では、4Dユーザーパスワードに対して、bcrypt というより強力なハッシュ化アルゴリズムを使用しています。 ツールボックス、CHANGE PASSWORD コマンド、または Set user properties コマンドを使用してパスワードを変更した際に、この新しいアルゴリズムが自動的に使用されます。 パスワードが一度変更されると、4D 19 R3 より前のバージョンで同じデータベースを開いた際には、そのアカウントの認証が拒否されます (ログインできません)。 そのため、4Dパスワードを使用している場合には、4D 19 R3 以降のバージョンにアップグレードする前に .4db ファイル (バイナリデータベース) または directory.json ファイル (プロジェクトデータベース) をバックアップしておくことが強く推奨されます。

  • 正確性のため、4D digest 定数は、4D REST digest へと名称が改められました。

  • XML コマンドにおける改行文字と BOM 管理: 以前のバージョンで作成されたプロジェクトまたはデータベースが 4D 19 R3 で開かれた場合、XMLドキュメントにおける改行文字と BOM 管理に関わる振る舞いが異なります: macOS において CR の代わりにラインフィード(LF) が使用されるほか、バイトオーダーマーク (BOM) が含まれなくなります。 これにより、VCS ツールとの互換性が改善されます。 必要であれば、XML SET OPTIONS コマンドを使用することで、v19 R2 以前の振る舞いに戻すことができます。 v19 R2 以前のバージョンから変換されたプロジェクトまたはデータベースにおいては、これらのオプションは 2つの互換性設定によって管理されます。

  • ビルドされたプロジェクトで、ランタイムエクスプローラーへのショートカットが削除: シングルユーザー版の組み込みプロジェクトアプリケーションにおいて、Cmd/Ctrl+Shift+F9 ショートカットは、ランタイムエクスプローラーを表示しないようになりました。 このショートカットは、ユーザーアプリケーション用のショートカットとして使用できるようになりました。 ランタイムエクスプローラーウィンドウは、新しい OPEN RUNTIME EXPLORER コマンドを使用することで呼び出し可能です。

  • 4D Server のデバッグ機能の拡張: 4D Server はインタープリターモードにおいて、スケーラブルWeb セッションを含め、全種類のプロセスをデバッグできるようになりました。 これには、デバッガーをサーバーまたはリモートクライアントで有効化するだけです。
    警告: インタープリターモードにおいて、サーバーでデバッガーが有効化された場合 (デフォルト) には、サーバーマシン上でのデバッグを可能にするため、すべてのサーバープロセスが自動でコオペラティブ実行されます。 これは、4D Server v19 R3 以降に変換されたアプリケーションにおいては、パフォーマンスに重大な影響を生ずる可能性があります。 サーバーをプリエンプティブ実行に戻すには、サーバーのデバッガーを無効化します (そして必要な場合にはリモートクライアント側でデバッガーを有効化します)。

  • Windows で、4D 19 R3 以降に作成された 4Dプロジェクトおよびデータベースは、フォームにおいて DirectWrite API を使用します。 この API はテキストレンダリングを、特に高DPI 環境において改善させます。 スタティックテキスト、入力テキスト、チェックボックス、ボタン、ラジオボタンのテキストレンダリングに対して DirectWrite が使用されます。 リストボックスは、既に DirectWrite を使用しています。 以前の 4D のバージョンで作成されたプロジェクトやデータベースにおいても、互換性オプションを使用することで DirectWrite を有効化することができます。

  • Silicon (Apple ARM CPU) をターゲットに 4D 19.0 でコンパイルされたコンポーネントを使用しており、そのコンポーネント内で Count parameters コマンドを呼んでいる場合、4D 19 R3 以降のリリースとの互換性のために、4D 19 R3 でコンポーネントを再コンパイルすることが推奨されます。 コンポーネントが Silicon 向けにコンパイルされていない場合、再コンパイルの必要はありません。

4D 19 R2

4D 19.x LTS

4D 19.x LTS のリリースノート 参照。

ライブラリの一覧 (4D 20 LTS)

ライブラリ現在のバージョン更新された 4D バージョン説明
ICU73.220.1このアップグレードにより、英数字とテキスト、オブジェクトのインデックスが自動的に再構築されます。
CEF11820.3Chromium 5993
Hunspell1.7.2204D フォームと 4D Write Pro でスペルチェックに使用されます。
PDFWriter4.32012.2.1 で FreeType依存
SpreadJS16.2.620.2 HF14D View Pro エンジン
16.0.420
OpenSSL3.1.620.4 HF2
libZip1.9.220Zip クラス、4D Write Pro、svg および serverNet コンポーネントによって使用。
LZMA5.4.120
Zlib1.2.1320
webKitWKWebView19
PHP8.2.420
libldap2.6.420
libsasl2.1.2820