可変長引数関数の書き方への新しいアプローチ
多くの方は、不定数の引数を受け取ることができるメソッドや関数を使用することに慣れていることでしょう。こういった関数は一般的に可変長引数関数または可変長関数などと呼ばれます。
4D v20 R3 では、皆さんの開発のしやすさを向上させるために、エリプシス(省略記号)を導入することで、これらのメソッドの宣言を合理化し、コードをよりわかりやすく、作業しやすくしました。
変数宣言と代入を1行で簡素化
4D v20 R3から、変数宣言や代入のために何行もコードを書く日々に別れを告げることができます。今、あなたはコードを合理化し、冗長性を排除し、簡単に効率を上げることができます。
その方法を紹介しよう!
PHPコマンドの廃止予定と4DビルトインのPHPインタプリタの削除
PHPは、Web開発において重要な役割を果たし、またzip、ハッシュ、LDAP機能など、ネイティブ言語ではまだ利用できない機能を提供するために4D v12で導入されました。4Dは、これらのPHP機能の多くをコア機能に取り込んできました。その結果、4D v20 R3ではビルトインのPHPインタプリタを削除し、v21ではPHPコマンドの廃止予定プロセスを開始することにしました。
4DからPHPコマンドを完全に削除するわけではありませんが、今後はPHPコードを実行するためにはシステムワーカーを使って実行することが強く推奨されます。
このブログでは、この移行プロセスについて説明しながら、PHP Execute コマンドを通して外部インタープリタを使用する方法や、システムワーカーでPHP コードを効率的に実行する方法を説明します。
データベースのデータ変更を追跡
このブログ記事では、データストア内の変更を管理・追跡する方法に革命をもたらす強力な方法をご紹介します。ここではデータの変更監視を合理化するために設計された特別なマーカーである「スタンプ」の概念を公開し、そのスタンプを独自の要件に合わせてカスタマイズする方法を紹介します。
複数コレクションの同期ソート
4D には、オブジェクトのコレクションを扱うための強力な機能があります。
たとえば、都市とそれに関連する国や大陸のコレクションを作成することができます。このようなコレクションを、.sort()、.order()、.filter() のようなビルトイン関数で操作するのは簡単です。
4D v20 R3 では、並べ替え処理を簡素化するために、新しい multiSort() 関数が導入されました。この関数を使うことで、複数コレクションの同期ソートが可能です。
4Dコードのエラー管理を強化
v20R2 から、4Dコードで エラーをスロー できるようになりました。
これらのエラーは、他の 4Dエラーと同じように動作します: エラーダイアログをトリガーするか、ON ERR CALL メソッドで処理できます。
この機能により、発生した例外を積極的に検出することで、コードの品質を向上させることができます。また、エラーログも改善することができます。
重要なのは、この機能が強固なエラー管理を実現するための第一歩であることです。
では、詳細を掘り下げていきましょう!
クラスプロパティの宣言
4Dランゲージは常に改良を続けています。v20 では、クラスの使い勝手を良くする新機能として、”宣言されたクラスプロパティ” をお届けします。クラスプロパティを宣言することで、オートコンプリートを大幅に改善し、コンパイル時に分かりやすいエラーを出すこともできます。その方法を詳しく説明しましょう!
4Dコマンドでアプリケーションをビルドする
ここ最近の 4D のバージョンでは、独自のビルドチェーンを作成するためのさまざまな機能が追加されてきました。たとえば、以下のようなものです:
- .zip フォルダーを作成する機能
- 実行ファイルや “dll” ファイルに著作権などの情報を追加する機能
- “info.plist” ファイルを作成する機能
- 新しい build4D コンポーネントの搭載
4D v20 では、2つの新機能により、4Dコードでスタンドアロンまたはクライアント/サーバーアプリケーションの作成を仕上げまでおこなうことができます:
- 実行ファイルへのアイコンの追加
- サーバーまたはスタンドアロンアプリケーションの配布ライセンスファイルの生成 (サーバーアプリケーションは OEMライセンスのみ)
改良された .distinct() 関数
データ要素のユニークなリストを取得することは、データ操作において常に役に立ちます。各値の出現回数を取得することが不可欠な場合もあります。Collection と EntitySelection クラスの distinct 関数を使うと、ユニーク値のリストを取得できます。4D v20 では、各ユニーク値の出現回数の取得も可能になりました。
それだけではありません!
データベースでオブジェクトを使用して、ユーザーが入力したカスタムデータを保存することができます。これに対応するため、コード側では、このオブジェクトが持つパスのすべてを把握したいところです。 EntitySelection クラスに追加された distinctPaths 関数で、これが可能になりました。
これらの新しい関数について、くわしく紹介していきます。
リテラルを使ったオブジェクトとコレクションの初期化
これまで、オブジェクトやコレクションのインスタンス化には New object と New collection コマンドを使用してきました。4D v20 からは、オブジェクトリテラルとコレクションリテラルという、より簡単で可読性の高い初期化の方法が追加されました。