ORDA データモデルクラス
ファンクションのスコープと実行コンテキスト
クライアント/サーバーモードでは、デフォルトで、ファンクションはサーバー側で実行されますが、新しいキーワード local を使用することでファンクションをクライアント側で実行するようにすることができます。また、exposed キーワードを使用することで、どのファンクションをREST クライアントにAPI として公開するかしないかを選択することができます。
共有可能エンティティセレクション
時として、エンティティセレクションを他のプロセスと、あるいは全てのプロセスと共有したいと思うことがあるかもしれません。例えば、全ての期限切れの請求書を探すために複雑なクエリを実行していて、その間にエンドユーザーにその請求書の一部(または全部)を選択することを許可し、そして最終的に支払いのリマインダをEメールとして送信する必要があるような場合を考えましょう。Eメールの送信は、ユーザーをブロックしないためには他のプロセスで行うことが望ましいです。その新規プロセスに渡すためのプライマリーキーの一覧を作成する代わりに、共有エンティティセレクションを使用することでエンティティセレクションを直接他のプロセスへと渡すことができるようになります。共有エンティティセレクションはStorageオブジェクトに代入することができ、それによって全てのプロセスで共有することもできます。
分かりやすく説明すると、エンティティセレクションは共有可能と共有不可の状態を選ぶことができます:
- 共有可能エンティティセレクションは共有オブジェクトまたは共有コレクションに保存することができ、異なるプロセス/ワーカー間で共有することができます。また、新規にエンティティを追加することはできません。新しいエンティティを共有可能エンティティセレクションに追加しようとした場合、エラーがトリガーされます。
- 共有不可エンティティセレクションはプロセス間で共有することはできず、また共有オブジェクトや共有コレクションに保存することもできません。共有不可エンティティセレクションを共有オブジェクトまたは共有コレクションに保存しようとした場合、エラーがトリガーされます。ただし、共有不可エンティティセレクションには新規にエンティティを追加することができます。
フォームエディター
フォームエディター上でのCSSプレビュー
フォームエディター上で、最終的なCSSレンダリングをプレビューすることができるようになります。ツールバーに新しいアイコンが追加され、これを使用してフォームをCSS付き/なしで見ることができるだけでなく、Mac/Windows上でどのように表示されるかを確認することができます。プロパティの上書きについては、CSSモードでは、新しいタイプのバッジ(オブジェクトメソッドや入力順に似たもの)がフォームエディター上で表示され、どのオブジェクトがCSSの影響を受けるかが分かりやすくなります。
マクロ
フォームエディターではマクロが使用できるようになりました。フォームマクロを使用すれば、以下のようなことができるようになります:
- 一つまたは複数のオブジェクトのプロパティを編集、削除、あるいは追加する
- フォームオブジェクトを追加したりその割り当てられたメソッドごと削除する
- エディター内でフォームオブジェクトを選択/選択解除する
- 引数をオン・ザ・フライで入力するためのモーダルなダイアログを表示する
- フォームオブジェクトの最適な位置を計算してそこに移動する
- フォームオブジェクトからCSS クラスを作成し、それをテンプレートとして使用する
- フォーム内の画像パスが有効かどうかをチェックする
- CSS ファイルをディスク上で検索して表示するだけではなくCSS エディターで開く
- XLIFF 参照が、それに対応するXLIFF ファイルを持っているかどうかをチェックする
- などなど…
フォームマクロはコンテキストメニューから見ることができます。ホストデータベースのマクロが先に表示され、そのあとにコンポーネントのマクロが表示されます。マクロを実行するには、メニュー項目をクリックするだけです。マクロを作成するためには、マクロはプロジェクトのSources フォルダ内の第一階層にあるformMacros.json ファイル内で宣言されます。
フォームエディターを開く新コマンド
フォームエディターを開くための新コマンドが追加されました。これは解析や内部監査用ツールのためには特に有用なものになり得ます。この新コマンドの名前はFORM EDIT です。
4D for iOS
ディープリンク
ディープリンクを使用することでURL を共有したり、あるいはURL をクリックすることで特定のレコードを4D for iOSアプリ上で開くことができるようになります。プッシュ通知と組み合わせることで、営業担当者に新しい見積もりを伝えたり、保険担当者に新規の案件を伝えたりできるようになり、それらがワンクリックでアプリを直接開き、特定のレコードをアプリ上で開くことができるようになります。
最適化されたデータ同期
4D for iOS データ同期処理は最適化され、データ同期が25倍も早くなりました。
プログラミング関連機能
関数とメソッド用の命名引数
中間変数を経由する必要がなくなりました。これからは以下のものを宣言する際に、引数と戻り値に名前をつけることができるようになりました:
- プロジェクトメソッド
- トリガ
- データベースメソッド
- フォームメソッド
- クラスのコンストラクター
- クラスのファンクション
リモートデバッガ
この機能を利用することでサーバー側のコードをどこでデバッグするか(クライアント側かサーバー側か)を選択することができます。
(両方の)メニュー項目に、デバッガの起動を管理するための新しいメニュー項目が追加されています:
- デバッガの起動/デバッガを終了: クライアントまたはサーバー側にてデバッガを即時起動または終了させます。
- 開始時にデバッガを起動: クライアントまたはサーバーの開始時にデバッガを起動します。
ただし、デバッガは4D 一つにつき一つまでしか起動できないということに注意してください。例えば、クライアント側でデバッガを終了せずにサーバー側でデバッガを起動させようとした場合には、デバッガの使用者についての情報をあらわすエラーメッセージが表示されます。
また、デバッガまたはエラーウィンドウがサーバーのものなのかクライアントのものなのかを分かりやすく識別するために、これらのウィンドウの見た目に変化を加えました。
配布関連の機能
組み込み4D SERVERでの4Dキャッシュフォルダをカスタマイズする
もし同じマシン上に異なるバージョンの4D でビルドされた組み込みサーバーアプリが同時にホストされていた場合、4D の共有ストラクチャフォルダが原因で問題に遭遇するかもしれません。異なるバージョンの4D でビルドされた組み込みサーバーアプリケーション間でこのシステムフォルダを共有するのを避けるために、今後は新しいbuildApp キーをアプリケーションビルドプロセス中に使用することで、フォルダ名を設定することができ、これにより独自のストラクチャーフォルダを設定することができます。
組み込み4Dクライアントの4Dキャッシュフォルダをカスタマイズする
リモートアプリケーションを複数のサーバーに接続させていた場合、時としてシステム内のローカルのResources フォルダが膨大な量になってしまうことがあり得ます。これは時間も容量もネットワークにもいたずらに浪費することになります。今後は新しいbuildApp キーを使用することで同一のサーバーに接続する際には同じローカルのResources フォルダを共有するようにすることができます。
エラーで中断することなくログを統合する
4D Server を製品環境で実行している場合、管理者の介入がなくても全てが自動的に行われているようにする必要があります。これは特に自動アップデートやヘッドレスモードでの実行中などでは重要なことです。電源喪失やクラッシュのあとでは、ログ内の軽微なエラーによってせっかく自動的に復旧した4D Server が停止してしまう可能性があります。新しいオプションを使用することで、致命的ではないエラーメッセージを無視することができ(エラーの内容はログファイルに記録されます)。これによりシステムダウンの時間を短く抑えることができます。
Eメール(IMAP)
Eメールの検索とダウンロード
検索をしようできるようになったことで、条件に合致したEメールの一覧を取得できるようになりました。この検索の条件というのは「未読メール全て」や「特定の人物から過去4週間以内に送信されたメール」などを指定可能です。コマンドは合致したメールのIDのコレクションを返すので、これを新メソッドgetMails に対して直接使用することでそれらをダウンロードすることができます。
Eメールのコピー、移動、そして削除
IMAP トランスポーターにはcopy()、move() そして delete() の3つの新しいファンクションが追加されました。
リストボックス
タイプアヘッドの改善
以前は、リストボックスはキーストロークイベントを編集モードのときしか受け取れませんでした。これのために、編集不可のリストボックスに対してユーザーがキーボードを使用している際に、自動的に値をフィルターしたり、エントリーを選択したりといったことはできませんでした。
今後はリストボックスにフォーカスがあれば、キーがタイプされた時点でセルに入力がなくてもOn before Keystroke イベントが生成されます。これによって4D は何のキーが押されたのかを知ることができ、例えば新しい検索を開始したりカレントセレクションを変更したりするといったことが(プログラミングによって)可能になります。
新しいIs editing text コマンドが追加され、これによりOn before keystroke イベントが生成されたときに進行中の入力があるかどうかを検知することができるようになりました。これによって、例えばリストボックスが編集可能でもタイプアヘッド機能を使用できるようになりました。そして、On before keystroke および On after keystroke イベントはどちらもシステムヘルプダイアログで、(é、ä などの)アクセント文字や(漢字などの)アジア文字を選択をサポートするようになりました。どちらのイベントはエンドユーザーが最後の文字をを選択するまで遅延されます。自分の手で管理する必要はありません。
4D Write Pro
小数点揃えの文字を選択する
ドキュメントが複数のソースからできているものであった場合、数値のフォーマットが揃っていないかもしれません。今後は、4D Writ Pro ではそれぞれのドキュメントに対してこの設定を指定することができるようになります。以下の数値を渡すことで、小数点をどこに揃えるかを指定できます:
- ドット(点)に揃える
- カンマに揃える
- 最初に出てきたものに揃える
- OS で定義されている小数点区切りに揃える
互換性(特にMS Word との互換性)を最大限確保するため、新規ドキュメントを作成する際には3番のオプションがデフォルトで選択されます。旧式の4D Write ドキュメントから4D Write Pro へと変換する際には、システムで定義されている小数点区切りがデフォルトで選択されます。
ソフトハイフンの管理
新しく提供される標準アクションと、4D Write Pro インターフェースウィジェットに追加される新ボタンのおかげで、ソフトハイフン の挿入は簡単になりました。
二つの新しい標準アクションが利用可能になりました:
- insertSoftHyphen
- removeSoftHyphens
また、同様の機能が4D Write Pro のインターフェースウィジェット内(ツールバーウィジェットとサイドバーウィジェットの両方)に追加されました。
表示するページを選択
4D はコレクションの中で指定されているページのみ、コレクション内の順番で表示します。これによって機能セットを減らすことができ、エンドユーザーにとってはより物事がシンプルになります。例えば書式オプションのみが必要な場合には、他の機能は表示すらしないほうがいいでしょう。4D Write pro ウイジェットはWP ShowTabPages コンポーネントメソッドを使用することで表示するページを選択することができるようになります。メソッドを呼ぶ際に、ウィジェット名と表示するページのコレクションを渡すだけです。これで4D はコレクションの中で指定されているページのみ、コレクション内の順番で表示します。
4D View Pro
スプレッドシート内で4D formulasを使用
VP SET CUSTOM FUNCTIONS を使用すると、4D View pro 内にカスタムのファンクションを作成することができ、これは4D フォーミュラを実行することができます。今後は4D View Pro で単に変数を使用するためだけにメソッドを作成する必要はなく、変数をFormula に引数として渡すだけです。これに加えて、このコマンドを使用すると(ヘルプテキストと変数名を提供することで)エンドユーザー用にタイプアヘッドを容易に提供できるようになります。そして、巨大なストラクチャーの中では、汎用的なSET FIELD TITLES コマンドを使用するよりはこちらのコマンドを使用するほうが格段に早いです。