4D言語
戻る。続ける。折れる。そして、もっと!
私たちは、4Dフォーラムで皆様から寄せられた機能リクエストに耳を傾け、4D言語のいくつかの改良を行いました!
- コードのブロックを飛び出すことができるステートメントから始まり
- returnキーワードは、それが出現したメソッドや関数の実行を終了させ、呼び出したメソッドにコントロールを返します。また、オプションの値も返すことができます。
- breakキーワードは、そのキーワードを含むループを終了させます。実行される次の文は、ループの本体の直後の文です。
- continue 文は、ループの現在の繰り返しにおける文の実行を終了させ、次の繰り返しでループの実行を継続する。
- 短絡的な 評価に続く。ANDまたはOR演算子を使用する式において、短絡評価とは、最初の引数が式の値を決定するのに十分でない場合にのみ、2番目の引数が実行または評価されることを意味します。それを行うために、2つの新しい演算子を追加しています。
- AND演算子の場合は&&。
- OR 演算子には|| を使用します。
- そして、三項演算子は、条件の後にクエスチョンマーク(?)、条件が真であれば評価する式の後にコロン(:)、最後に条件が偽であれば評価する式:条件? 値 真の場合:値 偽の場合:。
ライセンスに関する詳細情報を取得するための新しいコマンド
4D v19 R4には、ライセンスの使用状況に関するすべての情報を提供する新しいコマンドが同梱されています。ライセンス使用状況を取得するコマンドです。また、診断ログも拡張しました。この機能により、サーバーのライセンス使用状況を確認し、使用状況を最適化し、将来の必要性に備えて計画を立てることができます。
OBJECT SET enterableコマンドのオプションが増えました。
OBJECT SET ENTERABLEコマンドが強化され、編集不可能なフィールドをよりよく管理することができるようになりました。3番目のパラメータとして、このコマンドはブール値または整数をサポートします。
- したがって、booleanを渡すことにより、コードを変更することなく、従来どおりコマンドを使用することができます。変更されるのはenterableプロパティだけです(FalseまたはTrue)。
-
また、整数を渡すこともできる。このように、フィールドのenterableとfocusableのプロパティを設定することができます。
ユーザーインターフェース
Windowsでの高DPI。高解像度スクリーンのサポート
High DPIとは、High Dots Per Inchの略で、画素の密度を表します。画素の密度を表し、DPIが高いほど、画素の密度が高くなります。4Kの画面では画素密度が高くなり、通常の表示ではすべてのアイコンや操作系が極端に小さくなってしまうことがあります。そこで、Windowsでは、テキスト、アイコン、コントロールのスケールを変更することができます。4K画面では、デフォルトで有効になっています。Macで初めて高DPIに対応しましたが、v19R4では、Windowsでも4Dに完全対応しました。その結果、テキストと画像の品質が向上しました。
システムワーカー
外部プロセスを非同期で起動
もう一つ、要望の多かった機能があります。時には、バックグラウンドでプロセスを実行し、プロセスがまだ実行されている間に、その出力コードが利用可能になり次第、そのコードに基づいて特定のアクションを実行する必要があります。例えば、プログレスバーを表示させるなどです。4Dでは、新しい4D.SystemWorkerクラスで バックグラウンドプロセスを開始し、プロセスが情報を返したときに自動的にコールバックメソッドを実行することができます。そのため、インターフェースで使用する場合、外部プロセスの実行中、インターフェースはユーザーに対して応答し続け、プロセスが終了したら、クライアントに結果を表示することができます。
ORDA
エイリアス
4D v19 R4には、新しいORDAのコンセプトが含まれています。エイリアスです。エイリアスとは、計算された属性の論理的かつ補完的な継承を意味します。エイリアスは、その名前が示すように、既存のデータストアオブジェクトのショートカットです。エイリアスは、計算属性のように “entity dataclass “で定義されます。計算属性があらゆる計算や式を処理できるのに対し、エイリアスは単なるショートカットであり、開発をより迅速かつ容易にする。例えば、関連する属性に簡単にアクセスすることができます(つまり、関連するデータベースの複雑さを隠すことができます)。
NULL値から空白値へのデフォルトマッピングの無効化
データベースに新しいフィールドを作成する際、4DではNULL値をブランク値にマッピングするかどうかを選択することができます。4D v19 R4から、新しいプロジェクトでは、4DはデフォルトでNULL値を不在データにマッピングしないようになりました。
これは、ORDAがNULL値を扱うために完璧に設計されているためで、多くの不都合な回避策を省くことができます。
悲観的なロック管理 VIA Rest
4D v19 R4では、REST APIを使用してエンティティをロックまたはアンロックすることができます。これは特に次のような場合に便利です。
- REST APIの操作に慣れている場合、コードの一貫性を保つことができます。ORDAデータモデルクラスでエンティティのロック/アンロックのための関数を書く必要がない。
- REST APIで悲観的なロックをスムーズに使用することができます。
モバイル向け4D
高度なアプリのためのオブジェクト属性
現在、モバイルプロジェクトでは、テキスト、日付、時間、整数など、ほぼすべての種類の属性を使用できます。4D v19 R4では、もう1つ、オブジェクト属性が追加されました。これにより、モバイルアプリケーションのオブジェクトフィールドを、人間が読める形式またはJSON形式で表示することができます。オブジェクトフィールドは、4Dアプリケーションで様々なデータを保存するために使用されますが、今回、モバイルアプリケーションで簡単に使用できるようになりました。どういう意味ですか?より高度なiOSやAndroidのアプリケーションを構築することができます。
データ管理の改善
4D v19 R4では、データセクションが改善され、モバイルアプリケーションに同梱されるデータについて、より多くの情報を提供できるようになりました。例えば、各データクラスの正確なエンティティ数とデータサイズが表示されるので、モバイルアプリのデータ量が多くなりすぎるのを防ぐことができます。この改善により、Validateボタンをクリックしてクエリの有効性をチェックすることもできるようになります。クエリが不正な場合は、エラーメッセージとともに、クエリの有効性についてより視覚的なフィードバックが得られます。
4D for Androidの新機能
4D for Androidでは、多くの改良が加えられ、4D for iOSと同じプレミアムな体験ができるようになりました。4D v19 R4は、以下をもたらします。
- One to Nリレーションをサポート。リストと詳細フォームに、レコードとの相対的なデータを表示します。
- オンラインアクション。オンラインモードで、エンティティやエンティティの選択を変更することができます。
- オブジェクトフィールドのフォーマット化:モバイルアプリケーションのオブジェクトフィールドを人間が読めるフォーマットまたはJSONフォーマットで表示します。
4D Write Pro
テーブル行の改ページ
4D v19 R4には、テーブルのレイアウトをより良く定義するための新しい属性が含まれています。複雑な4D Write Proドキュメントを簡単に作成することができますが、最も重要なことは、視覚的に魅力的なドキュメントを作成することです:テーブルの行の中で改ページします。これは、セルが長いテキスト(またはいくつかの段落)を持っている場合に便利です。また、1つのセル(つまり表の1行)を2つに分割して、ドキュメントのページで利用可能なスペースを埋めることができることを定義すると面白いかもしれません。
- wk page break inside paragraphは、もちろんパラグラフに適用できますが、ドキュメント自体、特定のセクション、テキストの範囲など、あらゆるターゲットに適用できます。どのような場合でも、属性はターゲット内の段落に割り当てられます。これは単にプログラミング上の機能です。
-
wk page break inside tableは、テーブルを 2 つ (またはそれ以上) の部分に分割することができ、その分割は (通常通り) テーブルの 2 行の間で行われます。
- wk page break inside rowも、表を分割することができますが、今回は行の中で分割します。このオプションは、前のオプションに依存していることに注意してください。表が分割できない場合は、その行も分割できない。
テーブルの行の内側で改ページするオプションは、ツールバーとサイドバーウィジェットで利用可能であることに留意してください。
ダークモードのサポート
4D v19 R4で、4D Write Proは、ダークになりました。最終的にmacOSのライトモード、ダークモードで開発、デプロイすることができます。ライブラリの最後のウィジェットは、ダークモードに対応しています(macOS上)。
- 4D Write Pro インターフェースツールバー
- 4D Write Pro インターフェース
- サイドバー リッチテキストエリア
4Dビュープロ
ワークブックオプション
4D View Proでドキュメントを作成する際、シートタブやスクロールバーを隠したり、コンテキストメニューやドラッグ&ドロップを無効にしたりと、ユーザー体験を微調整する必要があることがよくあります…。VP SET WORKBOOK OPTIONSコマンドを使用することで、これらの機能をすべて使用することができます。
テンプレートで開発プロセスをスピードアップ
既存のテンプレートからレポートやスプレッドシートを作成することで、開発のスピードアップが図れます。4D v19 R4では、エンドユーザーがコピー&ペーストを使用するように、開発者は、別の場所や別のエリアからセル範囲を「コピー」することができます。VP MOVE CELLSコマンドを使用すると、セル範囲を別の場所、2つのエリア間でもコピー/カット&ペーストすることができます。範囲をコピーするもう一つの方法は、例えば、VP Copy to Objectコマンドでオブジェクトにコピーしてデータベースに保存し、必要なときにVP PASTE FROM OBJECTコマンドでこのオブジェクトを貼り付けることができます。
コードエディター
クラスの異なる機能に素早くジャンプできる。
クラスは、4D v18 R3から導入されました。これにより、ビジネスロジックを整理し、UIから素早く分離することができます。
クラスは、さまざまな長さの複数の関数で構成されています。そのため、修正する関数を見つけたり、ある関数から別の関数に移動するのは、必ずしも簡単ではありません。クラスと関数を表示するエクスプローラを使用することも可能ですが、エディタウィンドウでコーディングしているときは、ウィンドウを切り替える時間を無駄にしたくありません。
4D v19 R4では、クラス内の関数のリストがコードエディタのツールバーに表示され、特定の関数に素早くジャンプすることができます。
コメントタグ
4D v19 R4では、コメントをより整理するために、コメントタグを 使用することで、新しいレベルのコメントを提供します。タグは、コメント行の先頭に付けるだけで、コメントを分類するために使用されます。3つのタグを用意しました。
- MARK
- TODO
- 修正
MARKタグを使うと、コードをセクションに分割することができます。3種類の書き方ができます。他の2つのタグ、TODOとFIXMEも同じように書くことができます。興味深いのは、リスト内のアイコンが異なることで、コードを整理して今後のアクションに優先順位をつけることができます。
オブジェクトチェック構文による生産性の向上
4D v18 R4から、クラスのオートコンプリートが利用できるようになりました。この機能は、コード作成を簡素化し、関数名のエラーを制限します。しかし、完全に回避できるわけではありません。2文字を逆にしたり、大文字を忘れたりすることは簡単です。そして、あなたのコードがなぜ動かないのかを探すのに時間を費やしてしまいます。そこで、4Dにクラスや関数がすでに存在するかどうかをチェックしてもらうのが一番です。4D v19 R4から、存在しない関数を呼び出した場合、コードエディタに警告が表示されるようになりました。
コードエディタをカスタマイズするための新しい可能性
ウィンドウとコードエリアのカスタマイズに加え、4D v19 R4では、2つの新しいカスタマイズオプションが追加されました。
- 10個のクリップボードの表示/非表示。
- リストの表示/非表示」アイコンは、リストの右下に移動しました。
デプロイメント
重複したマージされたクライアントアプリケーションを使用する。
ソフトウェアパブリッシャーとして、顧客の中には、例えばグループの各企業にマージサーバーアプリケーションがあるなど、多数のマージサーバーアプリケーションのインスタンスを持っている場合があります。このような導入アーキテクチャでは、顧客の役員が、会社ごとにソフトウェアを使用したいので、マージサーバーアプリケーションごとにマージクライアントアプリケーションを自分のコンピューターにインストールするよう、しばしば依頼されます。今後は、新しいbuildAppキーを使用して、複製された各マージクライアントアプリケーションで、(アプリケーションパスに基づいて)独自のユーザー設定フォルダを使用できるようになります。ClientUserPreferencesFolderByPath。