バージョン7 における UUID の改善とソート機能
4D 20 R10 から、UUID はシステム関数に依存するのではなく、内部アルゴリズムを使って直接生成されるようになりました。これにより、フォーマットや動作をより細かく制御できます。また、今回のアップデートでは、時系列ソートをサポートするバージョン 7 UUID の選択が可能になりました。アプリケーションへの影響について詳しく見ていきましょう。
オブジェクトフィールドをクラスで型指定する
4D 20 R10 では、オブジェクトの型指定が大きく前進し、コードにさらなる信頼性とコントロールを与えます。今後 4D は、値がオブジェクトであるかだけをチェックするのではなく、特定のクラスのインスタンスであるかを検証します。これにより、よりスマートな自動コード補完、インライン検証、より厳しいコンパイルチェックが可能になり、ミスを早期に発見し、より明確で保守性の高いコードを書くことができます。
メリットは変数や関数の結果だけにとどまりません。この機能強化は、データモデルにも適用されます。ストラクチャーエディターのオブジェクトフィールドに、ユーザー定義クラスやネイティブクラス (AI実装用の新しい 4D.Vector など) を型として直接指定できるようになりました。これにより 4D は、オブジェクトの構造を理解し、より信頼性の高い開発を可能にします。
データモデルを処理するORDAクラス
前回の ブログでは、ORDAデータモデルクラスの世界について紹介しました。さて、いよいよ手を動かして、もっと勉強しましょう
ORDAの構造(データストア、データクラス、エンティティ、エンティティ選択)がオブジェクトで構成されていることは既にご存知でしょう。しかし、それらは単なるオブジェクトではなく、特定のORDAクラスにリンクされた強型オブジェクトなのです。つまり、データの物理的な実装の複雑さを隠蔽するための関数を書くことができるのです。
ORDAクラスの世界へようこそ
ORDAは、4D v17で革命を起こしました。それは、全く新しい可能性の世界を開き、あなたを別のプログラミングの次元に導きました。オブジェクト指向のアプローチで簡単にアプリケーションを開発できる次元です。
私たちは、そこで終わりませんでした!私たちは、その後の機能リリースごとに、一連の機能を通じてORDAの機能強化を続けてきました。そして今、4D v18 R4では、さらに一歩進んだORDA データモデルクラスが利用可能になりました。あなたのデータモデルに特化したクラスです。
これは、あなたのコードを大きく向上させるでしょう。あなたのアプリケーションは、簡単にサービスを公開し、より管理しやすく、保守しやすくなり、他のアプリケーションとシームレスに統合できるようになります。
これもプロジェクトのおかげで実現した大きな機能です
ORDA:再起動せずに最新のデータストアを利用できる
4D v18 R3には、開発者のエクスペリエンスに大きな影響を与えるエンハンスメントが含まれています。多くの方から要望のあった機能を、4Dが実現しました!
開発段階(コードの記述とテスト)で4Dスタンドアローンモードで作業する場合、構造が更新されたときに最新のデータストア(ds)を更新するためにデータベースを再起動する必要はありません。
新しい属性や新しいテーブルが必要なとき、毎回データベースを再起動する必要はありません。全て自動です!
コマンドを呼び出すと、最新のデータストアを取得できます。 dsコマンドを呼び出すと、最新のデータストアオブジェクトを取得できます。つまり、このデータストアオブジェクトの複数のバージョンを、実行中のプロセスを停止させることなく、構造を更新したタイミングに応じて、同時に処理することができるのです。
クライアント/サーバーモードで作業している場合、4Dサーバー上で動作しているコードには問題なく機能します。
リモートクライアントでは、構造の更新が必要なクライアントを再起動するだけです。
データベーステストの改善
開発の品質を向上させるためには、ユニットテストが重要です。これらのテストのため、デベロッパーや QAチームは、様々なモード (シングルユーザー / クライアントサーバー) や異なる環境 (Macintosh / Windows) で 4Dデータベースを起動するためのツールを必要としています。
4D製品は、すでにコマンドラインパラメーターを使用して起動することができ、自動テストや運用が可能です。もし、独自のアップデートメカニズムを作成したい場合や、何百台もの 4D Server が稼働しているサーバーファームを扱う必要がある場合はどうでしょうか。たとえば、使用するデータベースファイルを指定したり、起動時にパラメーターを渡したりしたいかもしれません…
互換性の設定 – ネストされたトランザクション (その3)
互換性設定とパフォーマンス向上のための「隠し」機能についての継続的なシリーズを歓迎します。 最初の投稿では、QUERY BY FORMULA コマンドと、それがアプリケーションの動作に与える影響について見てきました。第2回目は「ピリオドとカンマをプレースホルダーとして使用する」という互換性オプションについて、「数字が>>>>>>>のように表示される」 問題を回避するために紹介しました。
3回目の今回は、「ネストされたトランザクション」について説明します。
トランザクションとは何ですか、またどのように使用するのですか?
200,000ユーロをある銀行口座から別の銀行口座に振り込むことを想像してください。送金元の口座からその金額を引き出し、送金先の口座に入金します。ここまではすべて正常で、完璧な世界ではこの操作は成功します。しかし、現実の世界では、残念ながらうまくいかないことがある。何かが起きて、お金が失われてしまうのです。それはとても残念なことです。
しかし、トランザクションは、お客様のアプリケーションでこのようなことが起こらないようにするために存在します。このブログでは、トランザクションの用途と重要性、そしてトランザクションがどのようにあなたのビジネスを救うかを示すいくつかのシナリオについて詳しく説明する。
ORDAでジェネリックコードを書く
ORDAは、4D Summit 2018の 大きな発表の一つで、4Dの新しい可能性を切り開くものでした。ORDAの詳細とそのメリットについては、こちらの記事をご覧いただき、ORDAがあなたの仕事のやり方をどのように変えるかをご確認ください。
モノの中の時代…(そして、どこまでも)
オブジェクトは、開発者の生活を楽にするために、その有用性を示し続けています。
オブジェクトの内部で時間(または継続時間)の値を使用することが、よりスムーズで直感的になりました。4D v17 からは、オブジェクトの中の時間は、ミリ秒ではなく、秒として設定されます!
