4D Write Pro
フォーミュラに名前を割り当てる
これまでは、フォーミュラは値として、式として、あるいは記号として表示することができました。しかしこれでは場合によっては可読性の面からは好ましくない場合がありました。
しかしながら、4D v20 R3 では、デベロッパーはフォーミュラに名前をつけることができるようになります。これにより、ユーザーはドキュメント内のそれぞれのフォーミュラをすぐに認識できるようになるとともに各フォーミュラの意図もすぐ理解できるようになり、4D Write Pro ドキュメントの直感性を向上させるとともに、テンプレートの取り扱いが容易になり、総合的なユーザーエクスペリエンスが向上します。
このために2つのコマンド、WP Insert formula および WP Get formula は改善され、新しいフォーミュラの表示モードをサポートするようになりました。
PDF/A フォーマットでの書き出し
PDF フォーマットは、ここ最近の複数のバージョンで利用でき、今では4D Write Pro ドキュメントを書き出す際の定番のフォーマットとなったといえます。4D v20 R3 からは、これにさらなる新機能が追加されました: PDF/A フォーマットです。このフォーマットはあくまでオプションではありますが、将来のアプリケーションにおいて電子請求書などの新機能の可能性の扉を開くものです。
4D Write Pro ドキュメントをPDF/A フォーマットに書き出すためには、通常と同様、インターフェースまたはプログラミングを使用して書き出すことができます。どちらの方法も分かりやすく、また書き出すフォーマットも現行のPDF/A-2とPDF/A-3の両方から選択することができます。
プログラミング関連機能
1行での変数宣言と初期化
4D v20 R3 では、デベロッパーは単一行において変数の宣言と初期化を行うことができ、これにより同じ内容を複数回書く必要がなくなります。これにより開発プロセスはシンプル化され、コードをよりクリーンにかつ効率的に書くことができます。
書き方としては、値に基づいてコンパイラーに型を決めさせることができます:
var <variableName> := <value>
または、複雑な型に対しては、明示的に型を指定することでコードを明瞭にしつつエラーを減らすことができます:
var <variableName> : <type> := <value>
可変個数引数関数を書くのをよりシンプルに
4D v20 R3 から、不定数の引数を受け付けるメソッドまたは関数の宣言の仕方がシンプルになりました。
今後は、最後の引数として “…” を使うことで引数の数が不定であることを指定できます。この改善により関数およびメソッドの宣言をより分かりやすく簡単にすることができます。
グローバルスタンプのインクリメンタル同期
4D for Mobileとともに、グローバルスタンプとインクリメンタル同期が導入されました。
この機能により、データの更新または同期時に、データセット全体を取得するのではなく最後の同期の後に行われた変更のみを送受信することができます。
この機能は、4D REST サーバーが同期を管理し、新規作成/変更/削除されたレコードに対して自動的にスタンプを発行することにより、4D for Mobileのみだけでなく、あらゆる箇所で使用可能になりました。この振る舞いを手動で上書きしたい場合のために、2つの新しい関数が追加されました。
- .getGlobalStamp() 関数はデータストアに割り当てられたグローバル変更スタンプを取得します。これらのスタンプはデータの変更ステータスを表します。
- .setGlobalStamp() 関数は、必要に応じてグローバルスタンプ値を設定/調整します。データが変更されるたびに、グローバルスタンプは最後の同期以降の変更を表します。
複数のコレクションを同期させる新しい関数
4D はオブジェクトのコレクションを使うことを常に押し進めており、ソート、並び替え、フィルタリングなどのタスクを単純化しています。それでも、4D以外のシステムからデータが配列の形で届いた場合、それらをコレクションに変換してまた配列に戻す、という操作は厄介な場合があります。
4D v20 R3 では、multiSort() 新しい関数を使用することで、複数のコレクションのソートと同期がシンプルになり、その結果としてデータ操作がより効率的になります。
Websocket クライアントのヘッダーをカスタマイズする
WsbSocket クライアントヘッダーをカスタマイズできると、特定の情報、設定、あるいは要件をWebSocket 接続確立プロセスにインジェクトできるようになります。
4D v20 R3 以降、WebSocket クライアントヘッダーを使用しているサーバーに対して、セキュリティ詳細、アプリケーション固有のデータ、または関連するどんな情報でも送信できるようになります。
WebSocket クライアントのblog記事 で説明されているように、WebSocket イベントを管理するためにはクラスを作成する必要があります。このクラスにはheaders という名前の新しいオブジェクトの属性が追加されていて、この中にはヘッダーフォーマット内の属性が格納されています。
この属性は、必要な用途に合うようにWebSocket クライアントヘッダーを管理してカスタマイズするための柔軟な方法を提供します。
‘ログファイルを使用’オプションの改善
4D v20 R3 では、ログ管理のアップグレードによって配布時により多くの設定オプションを利用できるようになりました。
今後は、他のバックアップ設定同様、”ログファイルを使用”オプションを変更できるようになります。このオプションはアプリケーションがログファイルを使用するかどうかを管理します。有効化されると、4Dは新規データファイル作成時にログファイルを作成するか選択するかをたずねてきます。またこのオプションが有効化されているときにログファイルのないデータファイルを開いた場合も、4Dはログファイルを作成するか選択するかをたずねてきます。
この”ログファイルを使用”オプションは、デフォルトでは”catalog”ファイル内に保存されています。しかし4D v20 R3 以降、バックアップパラメーターファイルを使用することでこの振る舞いを配布時に変更することができます。このパラメーターはストラクチャーファイル内、ストラクチャーファイルの隣、あるいはデータの隣に配置することができます。
Formula from string コマンドの改善
4D v20 R3 では、 Formula from string コマンドが改善され、フォーミュラを異なるコンテキストで実行することが可能になりました。このアップデートにより、ホストデータベースからコンポーネントのメソッドや変数にアクセスするのが容易になり、結果としてコンポーネント開発がよりシンプルになります。
PHP コマンドの廃止予定と4DのビルトインのPHPインタープリターの削除
PHP は、4D のWeb開発において、ZIP、ハッシュ、LDAP機能などを提供するという重要な役割を果たしてきました。時代は変わり、多くのPHP 機能は4Dのコア機能に統合されてきました。シンプル化のため、4D v20 R3 においてビルトインのPHPインタープリターを削除し、PHP コマンドのv21での廃止予定プロセスを開始しました。
PHPコマンドを4Dから完全に削除するということはしないものの、今後はPHP コードの実行にはシステムワーカーを使用することが強く推奨されます。
4D View Pro
ドキュメントをBLOBフォーマットで読み込み/書き出し
重くて複雑な4D View Pro ドキュメントを扱っているときの開発者の大変さというものは、こちらも理解しているつもりです。View Proのエクスペリエンスを向上させるため、 小さくて軽量な.sjs ファイルフォーマットが導入されました。
この進化は4D v20 R3 においても止まりません。新機能として追加された新しいBlobフォーマットを使用することで、圧縮されたドキュメントをデータベースに保存することができるようになりました。これは、.sjs フォーマットを使用するのと同じぐらいの高パフォーマンスを提供します。
Visual Studio コード拡張
4D ドキュメンテーションを表示
4D v20 R3 には 4D-Analyzer 拡張 による、新しい Visual Studio コードエディター 機能が追加されています — それは “4D ドキュメンテーションを表示” 機能です!
たとえあなたが4D コマンドやクラスのことを理解するのが早かったとしても、VS Code でコードを書いているときにコマンドやクラスの完全な情報が見えたと方がいい場合もあります。
4D v20 R3 以降、これは簡単になりました: 知りたいコマンド、クラス、クラス関数の上にマウスをホバーさせて下さい。詳細情報が入ったツールTipが表示されます。このツールTip の下部にはドキュメンテーションを表示というリンクが表示されるようになっています。
4D Netkit
GMAILにおいてラベルを取得、Eメールを取得または削除する
前フィーチャーリリースでの新機能は、Gmail API を4D Netkit に統合するための 最初のステップ でした。4D v20 R3 においては、ラベルの一覧の取得、Eメールの取得、そしてEメールの削除を行うためのコマンドが追加され、それ以外にも新しいコマンドが開発中です。
Microsoft 365
メールの更新
皆様からのフィードバックにお応えして、Eメールでの”既読”フラグに関するリクエストに対応するための新コマンドを導入します。4D v20 R3 では、Netlit コンポーネントは、’Office365.mail.update()’ 関数を使うことで受信済みメール/下書きメールの様々なプロパティを更新することができます。
Microsoft Graph を使用している場合、この機能を使用することで複数のEメールの属性を変更することができます。ただし本文や主題などの特定のプロパティは、下書きの状態のEメールのみ更新可能であるという点に注意して下さい。