17r5では,テキスト(オブジェクト型やコレクション型のプロパティ値を含む)の比較と検索に使用されている International Components for Unicode, ICUライブラリがバージョン63
にアップデートされる予定です。v16およびv17のライブラリバージョンは 56
でした。ライブラリのアップデートに伴い,サポートされるUnicodeのバージョンも8
から11
に上がります。
Unicode 11では,66
個の絵文字が追加され,5
個のCJK(中日韓)統合漢字が追加されています。追加されたのは,新元素の中国語名に使用される3
文字(下記)
原子番号 | 漢字 | 名称 |
---|---|---|
118 | Og | オガネソン |
117 | Ts | テネシン |
113 | Nh | ニホニウム |
および独立行政法人情報処理推進機構の 文字情報基盤整備事業のリストに含まれている人名漢字等2
文字です。
加えて,全角の数字ゼロ(FULLWIDTH DIGIT ZERO
, U+FF10
)に斜めの線が入ったバージョンが異体字として追加されています。(異体字セレクタVS1
, FF10 FE00
)
参考資料: http://www.unicode.org/versions/Unicode11.0.0/#Migration
Rリリースは,バージョンアップに相当しないので,17.xのアプリケーションはストラクチャやデータを変換することなく,17r5で開くことができます。しかし,17r5では,ICUライブラリがアップデートされているため,文字・テキスト・オブジェクト型フィールドの再インデックス構築が発生し,17.xまたは17r4で開きなおすと再々インデックス構築が発生することになります。検証のため,17r5と17.xを頻繁に行き来するのであれば,空のデータファイルまたはインデックスが外されたストラクチャをあらかじめ用意しておくと良いでしょう。
OBJECT GET BEST SIZE
は,指定テキストを表示するために必要なオブジェクトの幅と高さ(最大幅を指定した場合)を計算するためのコマンドです。しかし,Windowsの場合,リストボックスのセルとテキスト入力エリア(変数またはフィールド)は,描画方法が違うため,一方のオブジェクトを用いて他方のベストオブジェクトサイズを正確に計算することはできないことに留意してください。これは仕様です。
テキスト入力エリアは, DirectWriteでレンダリングされているのに対し,リストボックスのセルは Windows GDIでレンダリングされています。
SDIモードでアプリケーションを起動した場合,パレットウィンドウ(Palette form window
)で表示されているダイアログは,タスクバー上でアプリケーションのウィンドウ(ドキュメント)としてカウントされないことに留意してください。たとえば,パレットウィンドウと標準ウィンドウ(Plain form window
)一緒に表示し,標準ウィンドウのほうを閉じた場合,アプリケーションが最前面にある間はパレットウィンドウが引き続き画面に表示されていますが,アプリケーションが最前面ではなくなると隠されてしまい,タスクバーにウィンドウのアイコンが1個もないため,アプリケーションが「消えた」ような状況になります。これは仕様です。
パレットウィンドウを補助的なウィンドウではなく,ドキュメントとして表示するのであれば,Palette form window
ではなく,Controller form window
を使用してください。
17r5では,64ビット版PHPのバージョンが5.4.11
から7.3.1
にアップデートされました。PHPの更新に伴い,OpenSSL(1.0.0d
から1.1.1a
)などのライブラリもアップデートされています。また,ftp
はFTPSもサポートするようになりました。
注記: 設計上の理由により,アプリケーション本体とPHPは,それぞれ固有のOpenSSLライブラリを持っています。
モジュールでは,readline
新たに追加され,ereg
COM & .NET
が取り除かれています。なお,このバージョン以降,32ビット版の4Dはリリースされません。
アプリケーションのResources
フォルダーには,cert.pem
key.pem
というファイルがプリインストールされています。これらの証明書は,クライアント/サーバー通信の暗号化に使用されるものです。
デフォルトの秘密暗号鍵と証明書は,すべてのアプリケーションに共通の内容です。そのため,クライアント/サーバー通信の暗号化を有効にする場合,独自のファイルで置き換えることが強く勧められています。
クライアント/サーバーの証明書は,Webサーバーの証明書とインストール場所が違っていることに留意してください。14.3では,Webサーバーの証明書が既定の場所にインストールされていない場合,クライアント/サーバーの証明書が代わりに使用されました。14.4以降,クライアント/サーバーのデフォルト証明書がWebサーバーで使用されることはありません。
Mac 32ビット版のアプリケーションがこれといった法則性もなく,頻繁にクラッシュするように思える場合,キャッシュメモリの設定を大幅に減らす必要があるかもしれません。
たとえば,アプリケーションモードからデザインモードに切り替えた直後,印刷ジョブを完了した直後,4D Writeプラグインエリアを操作した直後にアプリケーションがクラッシュする場合,クラッシュレポートの一番下にある使用メモリの合計が下記のようになっていることがあります。
=========== ======= =======
TOTAL 3.8G 2447
TOTAL, minus reserved VM space 3.8G 2447
32ビット版のアプリケーションがアクセスできるメモリ空間は,4
GiBに限定されています。Mac版のアプリケーションは,「利用可能フォント」をすべてロードするため,フォントがかなりのメモリサイズを占有することを意識しなければなりません。たとえば,Microsoft Officeがインストールされている場合,Windows互換フォントだけで1.5
GiBほどのメモリを占有します。そのような環境でアプリケーションのデータキャッシュサイズを1
GiB程度に設定した場合,アプリケーションが利用できるメモリがほとんど残されないことになります。そのため,安定してアプリケーションを使用するためには,必要のないフォントを「使用停止」に設定したり,アプリケーションのキャッシュサイズを数百MiBに抑えるなどして,メモリを上手にやりくりしなければなりません。
こうした問題は,64ビット版のアプリケーションに移行すれば自然に解消されます。なお,17r5以降,32ビット版の4Dはリリースされませんので,32ビット版を使用しているのであれば,早期に移行の計画を立てることが勧められています。
16r6では,フォームエディターで作成したフォームだけでなく,オブジェクト型またはJSONファイルに記述されたフォーム(JSONフォーム)もコマンドで表示したり,印刷したりできるようになりました。
Discover the power of dynamic forms
JSONフォームを使用するには,Open form window
やDIALOG
のような既存のコマンドにフォーム名の代わりにオブジェクト型またはファイルパスを渡します。ファイルパスを渡す場合,Resources
フォルダー内のファイルパスを特殊なシンタックスで指定します。Resources
フォルダーの外部のあるファイルを絶対パスで参照することはできません。
DIALOG ("/RESOURCES/form.json")
デザインリファレンス > フォームの作成 > 動的なフォーム
JSONフォームから別のJSONフォームを参照することもできます。その場合,カレントドキュメントからの相対パスでファイルを指定します。具体的には「JSONポインター」で別のJSONファイルを参照する場合にこのシンタックスを使用します。
ランゲージリファレンス > JSON > JSON Resolve pointers
17r3では,ドキュメントに明記されていない振る舞いとして,/RESOURCES/
から始まるパス名がDocument to text
やTest path name
など,一般のファイルアクセスコマンドでも認識されました。
この振る舞いは,内部的なメカニズムの副作用によるものであり,意図されたものではありませんでした。17r4以降,/RESOURCES/
から始まるJSONフォームのシンタックスは,一般のファイルアクセスコマンドでは使用できないようになっています。
新規プロセスで実行したフォーム上でカット&ペーストなどの操作をするためには,プロセス(SET MENU BAR
)またはフォーム(「連結メニューバー」プロパティ)のメニューバーで「編集」メニューがアクティブにされている必要があります。
メニューバーで「編集」メニューがアクティブにされていれば,フォーム上でカット&ペーストなどの操作ができるようになります。その場合,フォームオブジェクトのOn Data Change
イベントも実行されることになりますが,カットまたはペーストの直後ではなく,カットまたはペーストの直前にOn Data Change
が発生する点に注意してください。これは,メニューアクション全般に共通のルールとして「入力を確定してからアクションを実行する」という順序でデータが処理されるためです。
On Data Change
は,通常,キーストロークで入力が確定した直後に発生するイベントです。On Data Change
に入力値(変数やフィールド)を処理するようなコードが記述されている場合,カットまたはペーストで入力を完了したときにだけ「ひとつ前の」値が処理されることになってしまうので,特に注意が必要です。
コピー&ペースト操作をOn Data Change
イベントで通常のタイプ入力と同格に扱いたいのであれば,メニューエディターで編集アクションの「イベントを発生させない」オプションを有効にすることができます。そうすれば,コピー&ペースト操作だけではOn Data Change
が発生しなくなり,通常のタイプ入力と同じく,入力が確定したタイミングでOn Data Change
が発生するようになります。
デザインリファレンス > メニューとメニューバー > メニューアクションを指定する
ユーザーモードで表示される編集メニューは,「イベントを発生させない」オプションが有効にされていますが,メニューエディターで作成した編集メニューはオプションが有効にされていません。開発者は,フォームエディターかユーザーモードでフォームを検証することが多いので,コピー&ペースト操作でデータ入力を完了した場合にだけ問題が発生することに気づかないことがあります。On Data Change
に入力データを処理するコードが記述されているのであれば,念のため,メニューエディターで編集アクションの「イベントを発生させない」オプションが有効にされているかどうか,確認しておくと良いでしょう。
17r5では,64ビット版のWebエリアおよび4D View Proエリアのバックエンドフレームワークに採用されているChrome Embedded Frameworkのバージョンが3538
(Chromiumバージョン64
)から3626
(2018年12月版; Chromiumバージョン72
)にアップデートされました。なお,このバージョン以降,32ビット版の4Dはリリースされません。
注記: v17.xのバージョンは3282
,16r5のバージョンは3071
でした。