4D v19 R4での新機能

4Dランゲージ

Return、Continue、Break、そして他にもたくさんの新キーワード!

4D Forumでのフィーチャーリクエストにお答えし、4Dランゲージにたくさんの改善を盛り込みました!

  • まずは、コードブロックから抜け出すためのステートメントが追加されました:
    • return キーワードを使用すると、そのキーワードが使用されているメソッドまたは関数の実行を中止し、コントロール制御を呼び出しメソッドへと戻します。また任意の値を返すこともできます。
    • break キーワードを使用すると、それを格納しているループを中止することができます。そのあとに実行されるコードは、ループ節の直後にあるコードとなります。
    • continue キーワードを使用すると、カレントの回でのループのコード実行を中止し、次の回からループを続行します。
  • また、ショートサーキット評価が可能になりました: これはANDまたはOR演算子を使用する式において、最初の引数が、式の値を決定するのに十分でない場合においてのみ、2つ目の引数が実行あるいは評価されるということを意味します。
    これを行うために、2つの新しい演算子が追加されました:

    • AND演算子のためには&&
    • OR演算子のためには||
  • そして最後に、三項演算子も追加されました。これは条件式のあとに”?”がつき、そのあとに条件式がtrueの場合の式、そのあとに”:”(コロン)、そして最後に条件式がfalseの場合の式が続くという書き方です: condition? value If True: value If False.

 

ライセンスについての詳細な情報を取得するための新コマンド

4D v19 R4 には、ライセンスの使用状況についての情報を全て返すコマンドが追加されました: Get License Usage です。またこれに伴い診断ログも拡張しました。この機能を使用すれば、サーバー上でのライセンス消費状況を追跡することができ、使用状況を最適化することができるとともに、将来的な必要性についても見通せるようになるでしょう。

 

enterable コマンドのオプションの拡充

OBJECT SET ENTERABLE コマンドは改善され、これによって入力可能ではないフィールドの細かい管理が可能になりました。3番目の引数として、コマンドはブール型だけでなく整数型の値の受け取りもサポートするようになりました。

  • ブール型の引数を渡すことで、このコマンドを以前と全く同じように使用することができます。この場合入力可能プロパティのみが変更されます(FalseまたはTrue)。
  • 整数型の値を渡した場合、フィールドに対して入力可能プロパティとフォーカス可能プロパティを設定することができます。

 

ユーザーインターフェース

WINDOWSでの高DPI表示: 高解像度画面へのサポート

DPIとはDots Per Inchを意味し、ピクセルの密度を表します。DPIが高いほど、ピクセルの密度は高くなっていきます。4K 画面においては、ピクセルの密度があまりにも高いので、普通に表示した場合にはアイコンやコントロールの表示が極端に小さくなってしまいます。そのため、Windows ではテキスト、アイコン、コントロールなどの縮尺を変更することができます。4K スクリーンにおいては、これはデフォルトで有効化されています。4D ではまずはmacから高DPIをサポートしてきましたが、v19 R4以降は、Windowsにおいても完全に対応しました。この結果、テキストと画像の表示の画質がより向上しました。

 
 

システムワーカー

外部プロセスを非同期でローンチする

また一つ要望の高かった機能が追加となりました。時として、プロセスが実行中に、別のプロセスをバックグラウンドで実行し、その出力コードに基づいた特定のアクションを実行する必要がある場合があります。例えば、進捗バーを表示するなどです。新しい4D.SystemWorker クラスを使用すれば、バックグラウンドプロセスを開始することができ、またプロセスが情報を返した時にすぐにコールバックメソッドを自動的に実行することができます。これをインターフェースに対して使用した場合、外部プロセスが実行中もインターフェースは引き続き使用可能で、プロセスが終了した時にその結果をクライアントに表示することができます。

 

ORDA

こんにちは、エイリアス

4D v19 R4 には新しいORDA のコンセプトが追加されています: エイリアスです。これは計算属性の論理的/補完的な延長ともいうべき機能です。その名前が示す通り、エイリアスとは、既存のデータストアオブジェクトへのショートカットです。エイリアスは計算属性同様、”エンティティデータクラス”内において定義されます。計算属性があらゆる計算やフォーミュラを処理できるのに対して、エイリアスは開発を加速し容易にするためのショートカットです。これを使用すると、例えばリレートされた属性へと簡単にアクセスするうことができます(これによってリレーションを使用したデータベースの複雑さを隠すことができます)。

 

ヌル値を空値にマップするデフォルトの動作が無効化

データベースに新しいフィールドを作成する場合、4Dではヌル値を空値にマップするオプションの有無を選択することができます。4D v19 R4以降、新規作成されたプロジェクトにおいては、4Dはデフォルトでは NULL値を空値にマップしないようになります。

これはORDAを使用している場合には特に有用で、なぜならORDAはNULL値を扱うように設計されているからです。これによって色々な動作を実装することが可能になります。

 

 

REST経由でのペシミスティックロック管理

4D v19 R4 でゃ、REST APIを使用してエンティティのロック/ロック解除を行うことが可能になります。これは特に以下のような場合に有用です:

  • REST APIを使用するのに慣れている場合にはこれまでのコードをそのまま使用することができます。ORDA データモデルクラスにおいてエンティティをロック/ロック解除する関数を書く必要はありません。
  • REST APIにおいてペシミスティックロックをスムーズに使用できるようになります。

4D for Mobile

オブジェクト属性を使用して先進的なアプリを

今後は、モバイルプロジェクトにおいてはあらゆるタイプの属性を使用することが可能になります。4D v19 R4 はそのための新しい機能が追加されました: オブジェクト属性です。これによってモバイルアプリケーション内においてオブジェクトフィールドを人間に読めるフォーマットやJSON フォーマットで表示することができるようになります。オブジェクトフィールドは4D アプリケーションにおいて様々なデータを保存するために使用されますが、今後はモバイルアプリにおいても簡単に使用可能になります。その利点ですか?今後はより先進的なiOS/Androidアプリケーションを簡単に作成できるようになるということです。

 

データ管理の改善

4D v19 R4 では、データセクションは改善され、モバイルアプリケーションに含めるデータに関する情報をよりたくさん提供するようになりました。例えば、それぞれのデータクラスに対する正確なエンティティ数とデータサイズを取得できるようになり、これによってモバイルアプリに多すぎるデータを埋め込まなくてすむようになります。またこの改善によって検証ボタンをクリックすることによってクエリの有効性をチェックすることができるようになります。クエリが不正な場合には、検証時により多くの視覚的なフィードバックとエラーメッセージが表示されるようになります。

 

New in 4D for Android での新機能

4D for Android にはより多くの改善点が追加されました。これによって4D for iOSが提供するエクスペリエンスト同等の機能を使用できるようになりました。4D v19 R4 では以下のような新機能が追加されています:

  • 1対Nリレーションのサポート: レコードに関連したデータをリストフォーム/詳細フォームにおいて表示する
  • オンラインアクション: オンラインモードにおいてエンティティまたはエンティティセレクションを変更することが可能に
  • オブジェクトフィールドフォーマット: オブジェクトフィールドをモバイルアプリケーション内において人間に読めるフォーマット、またはJSONフォーマットで表示します。
 
 
 

4D Write Pro

表の行内においての改ページが可能に

4D v19 R4 は表のレイアウトをより精彩に定義するための新しい属性が追加されています。この機能を使用すると複雑な4D Write Proドキュメントだけでなくう、より見た目にアピールするドキュメントを簡単に作成できるようになります。その新機能とは表の行内での改ページ機能です。これはセルに長いテキスト(あるいは複数段落に及ぶような長文)が格納されている場合などに有用です。セルがドキュメントのページのスペースを十分使いきれるようにセル(ひいては表内の行)を二つに分割することができるというのは、とても興味深い機能と言えます:

  • wk page break inside paragraph は、もちろん段落に対しても適用可能ですが、ドキュメント自身、特定のセクション、テキストのレンジ、などのターゲットにも適用可能です。どの場合においても、属性はターゲット内の段落に対して割り当てられます。これは純粋にプログラミングを容易にするためです。
  • wk page break inside table を使用すると表を2つ(あるいはそれ以上に)分割することを可能にします。この場合、分割は表の異なる行の間で発生します(これまで通りの挙動です)。
     
  • wk page break inside row を使用すると表の分割を可能にしますが、こちらは行内での分割を可能にします。ただしこのオプションは先ほどのwk page break inside tableの挙動に依存することに注意してください。表が分割可能に設定されていない場合、その内部の行を分割することはできません。

 

また表の行内での改ページについては、ツールバーおよびサイドバーウィジェットにおいても利用可能だという点に注意してください。

ダークモードのサポート

4D v19 R4 において、4D Write Proもダークモードに対応となりました。macOSにおいて、ライトモードでもダークモードでもどちらでも開発・運用ができるようになりました。ライブラリー内の以下のウィジェットがついに(macOSにおいて)ダークモード対応となりました:

  • 4D Write Pro インターフェースツールバー
  • 4D Write Pro インターフェース
  • サードバー付きリッチテキストエリア

4D View Pro

ワークブックオプション

4D View Proにおいてドキュメントを作成する場合、シートタブやスクロールバーを非表示にしたり、コンテキストメニューを無効化したり、あるいはドラッグ&ドロップを無効化したりと、ユーザーエクスペリエンスの微細な調整というものを行う必要があります。これらの項目は、VP SET WORKBOOK OPTIONS コマンドを使用することで設定できるようになりました。

 

“テンプレート”を活用して開発プロセスのスピードアップを

既存のテンプレートを使用してレポートやスプレッドシートを作成することは、開発のスピードアップにつながります。エンドユーザーがコピー/ペーストアクションを使用するように、4D v19 R4においてはデベロッパーも他の場所にある、あるいは他のエリアにあるセルのレンジを”コピー”することができるようになります。VP MOVE CELLS コマンドを使用することで、あるセル範囲のレンジを他の場所へ、あるいは他のエリアにさえもコピー/カットすることができるようになります。レンジをコピーするための他の方法としては、VP Copy to object コマンドを使用してセルのレンジをオブジェクトとしてコピーすることです。これによって例えばデータベースに保存することが可能になり、VP PASTE FROM OBJECT コマンドを使用することで今度は必要な場面になったらそのオブジェクトをペーストすることができます。

コードエディター

クラスの異なる関数へとすぐにジャンプ

Classes は4D v18 R3 において導入されました。これによってビジネスロジックを整理し、UIから切り離すことが可能になりました。

クラスは、長さも異なる複数の関数から構成されます。そのため編集したい関数をすぐに見つけることや、ある関数から他の関数へと移動することは、必ずしも簡単ではありません。エクスプローラーを使用してクラスと関数の一覧を表示して探す方法もありますが、メソッドエディターウィンドウ内でコーディングをしている場合にはウィンドウを切り替える時間が勿体無いと言えます。

 

4D v19 R4 では。クラス内の関数の一覧がコードエディターツールバー内に表示されるようになります。これによって特定の関数へとすぐにジャンプすることが可能になります。

 

Comment tagsコメントタグ

4D v19 R4ではコメントタグの導入により、コメントをよりよく整頓することができ、さらなるレベルへと引き上げます。タグは、コメント行の冒頭に入れることにより、コメントを分類することができます。使用できるタグは以下の3種類です:

  • MARK
  • TODO
  • FIXME

MARK タグを使用するとコードをセクションへと分割することができます。このようにして使えるタグが3種類あります。他の2つのタグはTODO とFIXMEで、どのタグも同じように使うことができます。このタグ機能のメリットは、リスト内に異なるアイコンが表示されることで、これによって将来のアクションを決めておくことでコードの優先順位をつけることができるということです。

 

オブジェクトチェックシンタックスを使用して生産性の向上を

クラスにおける自動補完機能は4D v18 R4から使える機能で、この機能を使用するとコードを書くのがシンプルになり、関数名の打ち間違いを防げます。ただしこれは何でも防げるわけではありません。文字の前後を打ち間違えたり、あるいは大文字を忘れるというのはありがちなことです。その結果、なぜコードが想定通りに動かないかを探すのに時間を費やす羽目になります。では4Dにクラスや関数が実際に存在するかどうかをチェックしてもらえるとしたらどれほど便利でしょうか?4D v19 R4 以降、存在しない関数を呼び出そうとした場合にはコードエディター内に警告が表示されるようになりました。

 

コードエディターをカスタマイズして新たな可能性を

ウィンドウとコードエリアをカスタマイズできるのに加えて、4D v19 R4 では以下のようなカスタマイズオプションが搭載されています:

  • 10個のクリップボードの表示/非表示を切り替えが可能に
  • “リストを表示/非表示”のアイコンが、リストのすぐ横のウィンドウ右下へと移動されました

配布

同じ組み込みクライアントアプリケーションを複製して使用する

ソフトウェアパブリッシャーであれば、顧客が組み込みサーバーアプリを複数インスタンス持っていることがあります。例えば、あるグループ会社内のそれぞれの会社が1つずつ組み込みサーバーアプリを持っているような場合です。このような配布アーキテクチャーの場合、その顧客から、それぞれのサーバーアプリケーションに対する組み込みクライアントアプリをコンピューターにインストールしてほしいと求められることがよくあります。今後は、新しいbuildAppキーを使用することで、複製されたそれぞれのクライアントアプリが(自身のアプリケーションパスに基づいた)独自のユーザー設定フォルダを使用することができるようになります:ClientUserPreferencesFolderByPath です。

もっと知りたいですか?4D v19 R4についての全ての記事を読んでみましょう