4D v20での新機能

このドキュメントでは、4D v20で利用可能なすべての新機能をまとめました。それぞれの機能には、具体的な例を説明するための専用のブログ記事があります。これらのブログ記事には、機能のタイトルをクリックすることでアクセスできます。

また、タイトルに blank タグの付いているセクションは、4D v19 R8 から 4D v20 の間にリリースされた新機能に関するものです。

この記事は、5つのセクションに分かれています:

改善されたネットワーク通信

QUIC の登場blank

4D上で動作する最大のプロダクションサーバーへの同時接続数が増え続ける中、最適なパフォーマンスを確保することは開発チームにとって最重要課題となっています。この課題を解決する有望なソリューションとして登場したのが、QUICプロトコルです。

QUICは、サーバー側のネットワークにおけるスピードとパフォーマンスを向上させるために設計されたプロトコルです。Googleが10年以上かけて開発したQUICは、TCPではなくUDPの利点を活かし、パケットロスや輻輳(ふくそう)などの問題が発生した場合に、素早い復旧を可能にします。QUICは現在ではとても多用され、例えばHTTP/3では「HTTP over QUIC」として使用されています。またすべての主要ブラウザでサポートされており、現在すでにGoogleのサーバーへの接続の半数以上で使用されています。Facebookはインターネットトラフィックの75%以上をQUICで処理しており、YouTubeやGmail、Uberなど多くのアプリがサーバーとの通信にQUICを使用しています。

このエキサイティングな新技術を改良し、その改善を4Dv20の将来のリリースに反映させるために、ぜひQUICをお試しいただき、ご意見をお寄せください。また、QUICは4Dインフラの回復力を向上させ、接続不良やその他のネットワーク上の問題に対処できるようにすることができるということも覚えておいてください。

 

4D ランゲージ および その他のプログラミング機能

ビルトイン Websocket サーバーblank

WebSocketプロトコルは、クライアントとサーバーの間に永続的な全二重通信チャネルを提供します。これは二者間のリアルタイムなデータ転送を可能にし、より高速かつ効率的な通信を実現します。

4D v20では、ビルトインのWebSocketサーバーを内蔵し、これによってデベロッパーは、大量のデータを処理し、シームレスなユーザーエクスペリエンスを提供できるリアルタイムWebアプリケーションをビルドすることができるようになりました。

この進化により、リアルタイムでのデータ可視化、コラボレーションアプリケーション、即時更新を必要とするIoTアプリケーションなどの可能性が広がります。

 

オブジェクトとコレクションのリテラルでの初期化 blank

オブジェクトとコレクションは、 New object および New collection コマンドを使用して、コード内で初期化することができます。

4D v20では、巨大または複雑なオブジェクトやコレクションをコードで初期化するために、新しくてより読みやすい構文が導入されました。 – オブジェクトリテラルとコレクションリテラルです。

オブジェクトリテラルを使用すると、プロパティと値を中括弧{}で囲うだけでオブジェクトを初期化することができます。例えば、 New object コマンドを使う代わりに、次のような1行のコードで新しいオブジェクトを作成し、そのプロパティを初期化できます。 $object1 := {a : “foo”; b : 42+26; c : {}; d : [“coucou”; “rien”]}

同様に、コレクションリテラルでは、要素を大括弧[]で囲うだけでコレクションを初期化することができます。

 

データストアをロックする新コマンド blank

4D では、あなたのデータをバックアップするための方法をビルトインされた状態で提供します。それは、4D バックアップと、ミラーサーバーの使用です。4D v20 では、データストアをロックするための内部コマンドが追加され、これによって4D が実行中でもデータのコピーを取ることが可能になります。このための新コマンドは、ds.flushAndLock()ds.locked()、およびds.unlock()です。

 

複数のジャーナルファイルの自動統合 blank

4D v20では、データベースのメンテナンス作業時の生産性を大幅に向上させる強力な新機能を導入しました。データベースの起動時に複数のジャーナルを自動的に統合することで、手動のデータベース管理作業に時間を費やすことなく、アプリケーションの開発に集中することができます。

この機能を利用するには、「データベースが不完全な場合、最後のログを統合する」設定が有効になっていることを確認するだけです(なおこの設定はデフォルトでONになっています)。そして、統合したいジャーナルファイルを現在のジャーナルファイルの隣に配置します。4Dは、データベースのスタートアップ時に欠落したオペレーションを自動的に検出し、すべてのジャーナルファイルをチェックして、復旧が可能かどうかを判断します。問題がなければ、すべてのジャーナルからオペレーションを統合します。人の手が介入する必要性はありません。

 

4D コマンドを使用してアプリケーションをビルドする blank

4Dは、デベロッパーが独自のビルドチェーンを作成するための新機能を継続的に追加し、アプリケーションに高い柔軟性とカスタマイズオプションを提供してきました。これらの機能とは、.zipフォルダの作成、実行ファイルや”dll”ファイルに著作権などの追加情報を追加する、”info.plist”ファイルの作成がなどが該当します。

4D v20のリリースでは、スタンドアロンまたはクライアント/サーバーアプリケーションの作成プロセスをより簡単にするために、2つの新機能が追加されました:

  1. 実行ファイルにアイコンを追加する
  2. 配布ライセンスファイルの生成

 

CLI での4Dコード実行のためのツール blank

4D v20 ではtool4dと呼ばれる新たなアプリケーションが仲間入りします。このアプリケーションはビルドチェーンでのビルドプロセスを自動化するために設計された4Dのいわば分身であり、コマンドラインインターフェースを通してヘッドレスにスクリプトを実行することに特化しています。その一方で、VS Code拡張子と通信しているLSPサーバーも提供されています。

 

4D-Analyzer 拡張機能 blank

この拡張機能はありがたいことに、4D デベロッパーから多くの注目を集めました。

4D ではVisual Studio Code のコードエディターサポートを導入し、これによってVisual Studioで4Dコードを扱うことができるようになっただけではなく、 シンタックスハイライト定義に移動署名ヘルプ、そして コード補完といった標準の機能も提供されるようになりました。

4D v20 では4D-Analyzer 拡張機能を通して、Visual Studio Code エディターに新たな機能を追加します。それは、コードの折りたたみとインデント、およびシンタックスチェックです。

 

改善されたDistinct 関数 blank

Collection および Entity selection クラスのdistinct 関数を使用すると、重複しない固有の値の一覧を取得することができます。

4D v20 では、固有の値それぞれのオカレンス数を取得することもできるようになりました。また、これを使用することでオブジェクトフィールド内で使用されている全ての属性パスを取得できるようになりました。この機能は巨大なデータセットから特定の値の頻度を分析する必要がある場合などに有益といえます。

未定義の値との比較 blank

4D にORDA や他のオブジェクトが導入されて以降、デベロッパーはよく未定義の値を処理しなければならず、時として他の型の値と比較してしまうとエラーになってしまいます。

4D v20 以降、デベロッパーが未定義の値とその他の型の値を比較してもエラーが返されないように改善がなされました。これはつまり、コード内でエラーが起きることを心配することなく、未定義の値と他の型の値を安全に比較することができるようになったということを意味します。

最新の検索と置換機能の導入 blank

検索と置換」機能は、コードエディターに何年も存在してきた機能です。これを使用することで、特に長大なコードを扱っているような場合に、デベロッパーは素早く効率的にコードを検索して置き換えることができます。4D v20 では、コーディングのワークフローをスピードアップさせるために、この機能に依存しているようなデベロッパーであればきっと喜んでいただけるような以下のような改善がもたらされました。

  • 置き換えるオカレンス数を知ることができるようになりました
  • 現在のオカレンスの位置を知ることができるようになりました
  • 「次へ」と「前へ」オプションが常にアクセスできるようになりました
  • 余計にクリックをしなくてもいいように、モーダルウィンドウではなくパレットウィンドウが開くようになりました

Print Form および FORM LOAD コマンドにフォームオブジェクトを渡すblank

4D v20 では、以前は DIALOG コマンドおよびサブフォームでした利用できなかった Form コマンドが、 Print form および FORM LOAD コマンドでサポートされるようになりました。これによって、プロセス変数の使用を大幅に減らすことができ、よりポータブルで独立したコードを書くことができるようになります。これは4Dにとって喜ばしい改善であり、間違いなくデベロッパーの仕事をしやすくしてくれると同時に生産性を高めてくれるに違いありません。

 

独自のヘルプメニューを作成する blank

4D v20 では、メニュー項目を格納したコレクションを渡すことで、あなたのアプリケーション独自の「ヘルプ」メニューを作成することができるようになりました。これによって例えば、ユーザーがドキュメンテーションや、サポート、あるいはその他の有用なリソースへと簡単にアクセスすることができるようになります。

 

コレクションで使える新しい便利な関数 blank

4D v20 ではコレクションを操作するための関数がたくさん追加されました。以前のバージョンから元々提供されていた 40 以上のメソッド に加えて、このリリースでは以下のような関数が使えるようになります:

  • first() および last() 関数。その名の通り、コレクションの最初の要素と最後の要素にアクセスできます。
  • at() 関数は大カッコ記法(col[x])の代わりとなるものですが、それ以上の特典があります。値に負の値を渡すことで、最後から数えた要素を取得することができます。
  • flat() 関数は革新的な関数で、特定の場合ではとても便利になり得ます。この関数はコレクションを格納したコレクションを「平ら」にすることができます。
  • includes() 関数はとても便利な関数です。あるコレクションが特定の要素を格納しているかどうかを知ることができるからです。値の型はほぼどんな値でも指定でき、テキストや数値、日付はもちろん、他のオブジェクトやコレクションへの参照でも使えます。
  • 新しいreduceRight() 関数は、reverse().reduce() と同等で、それを最適化したものです。
  • flatMap() 関数は、一回の呼び出しで、map() 関数と(先ほど紹介した)flat() 関数を実行できる関数です。

 

Windowsの印刷プレビューにPDF フォーマットを使用 blank

PDF フォーマットは、Windows における印刷プレビューで、XPSを代替する存在となりました。またユーザーに新しくよりたくさんのオプションを提供することができます。Microsoft がXPS をWindows の付属をオプションとする決定をしたことで、多くのユーザーに対してアプリケーションの配布時に様々な問題が起きるようになり、結果としてエンドユーザーが印刷をプレビューできないという事態にまでなりました。もちろん、フリーのXPS ビューアーをインストールすることが分かりやすい方法ではありますが、一部の管理者は特定の環境、特にリモートデスクトップ環境において更なる機能をインストールするということを敬遠しています。
幸い、4D v20 では印刷プレビューにPDF フォーマットを使用するオプションを提供しています。現在のWindows のバージョンであればほぼ全てにXPS もしくはPDFがプリインストールされていることから、エンドユーザーは印刷プレビューの問題にぶつかることはないはずです。この新しいオプションは、エンドユーザーと管理者と両方の用途を満たす、より柔軟で効率的なソリューションを提供します。

 

Return、Continue、Break、さらなる進化

4D フォーラムでの皆さんのリクエストに耳を傾けて、それに従って4D ランゲージにいくつかの改善を行いました!

  • 最初に、コードブロックから抜け出すことができる宣言を追加しました:
    • return キーワードは、それが書かれたメソッドまたは関数の実行を止め、呼び出し元のメソッドへと実行を移します。オプションの値を返すこともできます。
    • break キーワードは、それが格納されているループを中止します。その次に実行されるのは、ループ本体の直後に書かれたコードです。
    • continue キーワードは、それが格納されているループのカレントの回数は中止し、ループの実行を次の回数から続行します。
  • また、短絡演算子を追加しました: AND または OR 演算子を使用した式の中において、短絡演算子は、最初の引数が式の値を決定しきれない場合においてのみ2つ目の引数が実行されるということを意味します。これを行うために2つの新しい演算子が追加されました:
    • AND 演算子のためには && を使用します。
    • OR 演算子のためには || を使用します。
  • 最後に、三項演算子も追加されました。これは、条件式のあとに疑問符 ( ? )、そのあとに条件式が真的値(truthy) だった場合に評価する式、そのあとコロンに続いて、最後に条件式が偽的値(falsy)だったときに評価する式、という書き方をする演算子です: 条件式 ? Truthyのときの値 : Falsyのときの値

 

エラー管理

4D v20 では、エラーハンドリングに新しい可能性をもたらします。今後は、全ての実行コンテキスト(プロセス、ワーカー、ORDA 計算属性、ORDA 関数、など)に対して効率的なグローバルなエラー処理メソッドを定義することができます。新しいプロセス/ワーカーに対してローカルエラー処理メソッドを定義しそびれた場合、グローバルエラー処理メソッドが自動的に発動します。これはつまり、サーバー側にエラーダイアログが表示されることも、処理しきれなかったエラーによるエラーダイアログが表示されることもないということを意味します。

エクスプローラー内でコンポーネントのクラスを表示

4D ではこれまでも、プロジェクトモードのコンポーネントを使用する ことで、バイナリーモードのアプリケーションからでもクラスを使用することができ、これによってまだバイナリーモードで実行中のアプリケーションでもクラスの恩恵を受けることができるようになっています。

開発者のコーディングエクスペリエンスをより簡単にするために、4D v20 では新機能が追加されました。今後はメソッドエクスプローラー内に利用可能な全てコンポーネントクラスが一覧として表示されるので、コード内でどの関数を使う必要があるかを一目で決めることができます。

 

32bit 整数より大きな整数のサポート

例えばカウンターやその類などで、20億(32 bit)を超える大きくて高精度な数字が必要な場合などがあることでしょう。4D では実数型を見直して、それが整数をどのように扱うかを改善しました。実数型は不正確であると思われていますが、実は小数点を使わない(=整数である)限りは、とても大きな数字においても100%の正確性を保っているのです。これによって、実数型では53 bit までの、より具体的に言えば[-(2^53)+1〜(2^53)-1]の間の整数を使用できます。言い換えれば −9,007,199,254,740,992 から 9,007,199,254,740,992 の間の整数は正確に表現されます。

テキストへの変換、あるいはテキストから整数への変換は、12 桁の指数表記に変換されてしまい、結果として正確性は失われてしまっていました。4D v20 では、(整数を表す)実数値の正確性と変換を改善しました。この変換の改善は、String()コマンドの他、文字列型の数値を返すJSON およびXML コマンドに影響します。

 

コレクションおよびコールバックコマンド内でのフォーミュラのサポート

コレクションで、コールバックメソッドを必要とするメンバーメソッドの使用をシンプルにするため、4D では以下のコマンドや関数において、コールバックの定義にフォーミュラを使用することができるようになりました:

  • コレクションのメンバー関数: every(), .filter(), .find(), .findIndex(), .map(), .orderByMethod(), .reduce(), .some(), .sort()
  • EXECUTE METHOD IN SUBFORMコマンド 
  • CALL FORMコマンド
  • CALL WORKER コマンド

 

コンポーネントのクラスの公開を可能に

まだバイナリーモードのままのアプリケーションがある場合を考えます。この場合、プロジェクトモードのコンポーネントを利用することで、バイナリーモードのアプリケーションからでもクラスを使用することができ、これによってまだバイナリーモードで実行中のアプリケーションでもクラスおよびオブジェクト指向開発の恩恵を受けることができるようになりました。4D v20 以降、ストラクチャー設定 -> 一般タブ内にコンポーネントセクションが追加され、ここを通して、コンポーネントがインストールされた後に4D メソッドエディター内でコンポーネントクラスと関数がどのように公開されるかを設定することができます。

 

関数またはメソッドからの引数をそのまま他のメソッドなどに転送する

4D v20 以降、関数を呼び出して引数を渡す際に、デベロッパーは複雑な引数チェック(引数の数、値の型などをチェック)を行わなくてもよくなりました。

新しく追加されたCopy parameters コマンドを使用すれば、関数またはメソッドを呼び出すのに使用された引数を他の関数/メソッドへと簡単に渡すことができます。その結果、コードはより軽く、よりエレガントに、そしてより読みやすいものになります。

 

フォームとサブフォーム間の通信

4D v20 以降、サブフォームに変数を割り当てることでインターフェースの可能性と、フォーム/サブフォーム間の通信がより豊かになります。通信の手段はとてもシンプルにするための、2つの新コマンドが追加されました: OBJECT Get subform container value および OBJECT SET SUBFORM CONTAINER VALUE です。

 

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

4D v20 には、ライセンスの使用状況についての情報を全て取得するための新コマンドが追加されています: Get License Usage です。また診断ログも拡張されました。この機能のおかげで、サーバー上でライセンスの消費状況を確認したり、使用状況を最適化して将来の用途のために計画を立てることができます。

 

OBJECT SET enterable コマンドにさらにオプションが追加

OBJECT SET ENTERABLE コマンドは改善され、編集不可のフィールドをより細かに管理することができるようになりました。このコマンドは、3つ目の引数としてブールまたは整数型の値をサポートするようになりました。

  • 当然、このコマンドはこれまでのコードを一切変えることなく、ブール値を渡して使用することができます。この場合入力可能プロパティのみが変更されます(False またはTrue)。
  • あるいは整数値を渡すこともできます。この場合、フィールドに対して入力可能およびフォーカス可能プロパティを設定することができます。

 

存在しないメソッド引数へのアクセス

4D v20 では全てのメソッド引数へエラーなくアクセスすることができます。たとえそれが呼び出し元から渡されていない引数であってもです。コードは多数の”if” を書き連ねる必要がなくなり、より直感的で読みやすいものになります。

 

オブジェクト内にblob 型の属性を作成

クラスの導入以降、オブジェクト内にデータを保存するこの需要、特にBlob 型のデータをオブジェクトに入れる必要性が高まりました。この理由から、4D v20 ではBlob をオブジェクト内にカプセル化することをサポートします。

ストレージの面だけでなく、Blobオブジェクトは参照型なので、メモリの使用量が少なくなり、スピード性能が大幅に向上します。

 

バイトオーダーマーク(BOM)管理と行末記号(EOL)管理

4D は、テキストファイル内の特定の非表示文字の管理に関するベストプラクティスに従うようにスムーズに進化してきました。そのため4Dは今後、BOMなしでテキストファイルを書き出します。また、macOSでは、4D はLF を行末文字として使用します。これは、4DSettings、4dm、4DFormなど、4Dによって書かれたすべてのファイルに対して完全に自動化されています。

互換性設定については、オプションの “charSet “と “breakMode “引数がない場合でも、TEXT TO DOCUMENT および File.setText() がBOMなしでファイルを生成し、macOS で行末文字としてLF を使用するための新しいオプションを用意しています。詳しくは、ドキュメントをご覧ください。

 

新規プロジェクトにデフォルトの .gitignore ファイル

プロジェクトモードではGit(バージョン管理システム)を使用して変更を簡単に追跡することができます。ですがプロジェクトファイル全体をGit リポジトリで管理するのはいいアイデアではありません。4D v20 では新規プロジェクト作成時に、監視から除外するデフォルトファイルおよびフォルダの一覧を格納したデフォルトの .gitignore ファイルを自動的にプロジェクトフォルダに追加することで、新規プロジェクトで何を監視しないかを定義することができます。

 

Macでのコンポーネントの自動署名

4D v20 から、Mac上では、ユーザーが定義した証明書(または証明書が指定されなかった場にはAdhos 署名)を使用して、ビルドされたコンポーネントに4D が自動的に署名をします。これによってコンポーネントのデベロッパーは署名されたコンポーネントを配布することができるので、エンドユーザーがそれを使用する前に自分で署名する必要がなくなります。

 

コードエディターからオンラインのドキュメンテーションを直接表示

クラス関数の詳細は、ドキュメンテーションのサイトを検索せずともアクセスすることができます。単純にF1 キーを押すか、コンテキストメニューの定義に移動… の項目をクリックしてみてください。

 

Eメール

POP3: メールのヘッダーのみをダウンロードしてくるblank

POP3 を使用してEメールメッセージを取得する場合、メッセージ本文全体をダウンロードすることなくメッセージヘッダーだけを取得することが可能です(メッセージヘッダーには送信者、主題、日付などの情報が格納されています)。

メッセージヘッダーだけをダウンロードできることで、例えばメールボックス内のメッセージの一覧を素早くスキャンして、どれをダウンロードして本文全体を読むべきかを決めたいような場合には便利と言えます。

4D v20 以降、POP3Transporter.getMail() 関数に追加された新しい引数を使用することで、本文を除いたEメールを受信することができます。

 

IMAP: メールボックスIDとメールキーワードblank

4D v20 ではIMAP トランスポーターに2つの便利な新機能が追加されました:

最初の機能は、特定のIMAP メールサーバーとクライアントで通信するときに、カスタムのEメールキーワードを管理することができる機能です。カスタムのキーワードを使用することでEメールに対して特定のラベルやカテゴリをタグづけすることができ、メールを整理したり後から探したりするのが簡単になります。4D v20 でのこの新機能を使用することで、IMAP トランスポーターを使用してカスタムのEメールキーワードを追加、削除、または一覧することができるようになります。

2つ目の新機能はIMAP トランスポーターでのメールボックスID サポートです。IMAP メールボックスは、名称を変更したり移動したりすることが可能なため、後から同じメールボックスを探すのが難しい場合があります。4D v20 でメールボックスのIDがサポートされたことにより、特定のメールボックスが名称変更したり移動したりしていても簡単に見つけることができます。これによって、アーカイブされたメッセージを入れたメールボックスや特定の送信者からのメッセージを格納したメールボックスなどを追跡するためには便利な機能です。

 

Microsoft 365 のネイティブサポート

多くの顧客が、Eメールを使用するためにはMicrosoft 365 に移行している現状を受け、4D v20 ではEメール管理を単純化するためのソリューションを提供します。

最新の自動化機能を使用することで、ビルトインコマンドを使用してMicrosoft 365 Eメールの操作を簡単に自動化できます。この操作には以下のようなものが含まれます

  • Eメールの送信、受信、およびメールボックスフォルダを一覧にする
  • あるEメールをあるフォルダから別のフォルダへと移動する
  • あるEメールに対して返信をして、スレッドを作成する
  • Eメールの下書きを作成して、好きなフォルダに保存する
  • Eメールを削除する

 

Microsoft365: フォルダ管理 blank

Microsoft はIMAP およびPOP3 におけるベーシック認証を廃止予定にしています。これはつまり、ユーザーが自分のEメールデータにアクセスするためには、より安全な認証方法を使用する必要があるということです。Graph API は、Eメールデータを含めたMicrosoft 365のデータにアクセスするためのより安全でより現代的な方法です。

4D NetKit に新たな関数が追加されたことで、Microsoft Graph API を使用して、メールボックスをプログラミングで管理(作成、削除、名称変更、および情報取得)できるようになりました。

 

Azure からユーザー情報を取得する

Microfost はOffice アプリケーションへのアクセスを提供する以外にも、Azure ベースのアクティブディレクトリを提供しています。ユーザーはこれを使用することでWeb ブラウザを通じて、Sharepoint やOneDrive などのサービスにアクセスするためにログインすることができます。全てのMicrosoft サービスはEメールアドレスに基づいた同じシングルサインオンを使用しています。4D v20 移行、4D NetKit を使用することでこのコンセプトを管理することができ、ユーザーは自身の通常使用している会社認証情報を使用してあなたのアプリケーションにログインすることができるようになります。

シングルサインオンが使用できるだけでなく、Eメール、部署、電話番号などの、認証したユーザーについての情報を取得することができるようになります。管理者が許可しさえすれば、同じ会社内の他の同僚の詳細な情報も取得することができます。

 

パスワードのBcrypt サポート

4D v20 移行、全てのパスワードはbcrypt アルゴリズムを使用してハッシュされます。このアルゴリズムは計算により時間がかかるため、オリジナルのパスワードを推定するための総当たり攻撃にも耐えることができます。
これを使用するためには、行うことは何もありません。何の設定も変えることなく、コードも1行も変える必要はありません。ツールボックス、あるいはCHANGE PASSWORD コマンド、またはSet user properties コマンドを使用してパスワードが変更されたとき、そのbcrypt のハッシュ値が保存されます。認証をする際には、4D はそのパスワードが旧式のハッシュかbcrypt のハッシュを使用して保存されたかを認識するため、ユーザーはパスワードを変更することなくそのまま接続したままでいられます。

 

HTTP クライアントの改善

4D のシンタックスと機能を改善し続けるため、4D でのHTTP クライアントコマンドを現代的に改善することにしました。4D v20 ではHTTP リクエストを行うための新しい方法が追加されました: HTTP クラス です。また他にも、圧縮応答、レスポンスのチャンク化、リダイレクトなどのHTTP クラス機能が追加されています。

 

コードエディター

クラスの別の関数へ瞬時にジャンプする

クラス は、様々な長さの複数の関数から構成されています。そのため編集したい関数を見つけることや、ある関数から別の関数へと移動することは、いつでも簡単というわけではありません。エクスプローラーはクラスと関数を表示するため、それを使用する方法もありますが、コードエディターウィンドウ内でコードを書いている場合には、ウィンドウをいちいち変えるのも時間の無駄と言えます。

4D v20 では、コードエディターのツールバー内にクラスの関数の一覧が表示されるようになったため、これを使用して特定の関数へと瞬時にジャンプすることができます。

コメントタグ

4D v20 では、コメントをより整理しやすくするためのコメントタグが追加されたことで、コメントを新しい次元へと引き上げています。タグはコメント行の最初に配置するだけで、コメントを識別することができます。このために3つのタグが用意されました:

  • MARK
  • TODO
  • FIXME

MARK タグはコードをセクション分けするために使用されます。これには3種類の書き方があります。他の2つ、TODO と FIXMEのタグについては、使い方は同じと言っていいでしょう。面白い点は、これらのタグはリストの中で異なるアイコンとして表示されるため、今後のアクションの優先度をつけやすいようにコードを整理することができます。

オブジェクトチェックシンタックス

自動保管 を使用することで、コードを書くのがシンプルになるのと同時に、関数名などでの書き間違いを抑えてくれます。ですが完全に間違いを防いでくれるわけではありません。文字の順番を間違えたり、頭文字の大文字を忘れたりすることはよくあることです。そしてその結果、なぜコードがきちんと動かないかの原因を長い時間探り続ける羽目になります。そうではなく、4D が自動的にクラスや関数がすでに存在しているかどうかをチェックしてくれたらいいと思いませんか?4D v20 以降、存在しない関数を呼び出した場合には、コードエディター内に警告が表示されるようになりました。

コードエディターのカスタマイズ

ウィンドウやコードエリアをカスタマイズできるのに加えて、4D v20 では新しいカスタマイズオプションが追加されました:

  • 10個のクリップボードの表示/非表示を切り替えることができるようになりました。
  • “リストの表示/非表示”アイコンはリストのすぐ横、エディターの右下端に移動されました。

 

コード、ドキュメンテーション、エクスプローラー間の移動がシンプルに

フォームを作成したり新しい関数やメソッドを書く場合には、往々にして以下のようなアクションが多々必要になります:

  • フォルダー内にフォームを追加するためにエクスプローラーにアクセスする
  • メソッドのドキュメンテーションを書くためにエクスプローラーにアクセスする
  • コマンドのドキュメンテーションを見るために4D オンラインサイトに移動する
  • メソッドまたはコンポーネントのドキュメンテーションを見る
  • メソッド内で使用した関数のコードにアクセスして、修正を加える
  • クラス内の関数から別の関数へと移動する

4D v20 では、コードエディターに新しいメニュー項目と新しいリストが追加され、これを使用することでプロジェクト内の別の要素へと簡単に移動することができるようになりました。

 

コードエディターからオンラインドキュメントへと直接飛ぶ

4D v20 では、クラス関数の詳細は、ドキュメンテーションのサイトを検索せずともアクセスすることができます。単純にF1 キーを押すか、コンテキストメニューの定義に移動… の項目をクリックしてみてください。

 

Web 

スケーラブルWeb セッションを使用してサーバー上でデバッグ

スケーラブルWeb セッション は劇的な改善でした。これを使用することで、4D Server 上でも4Dタグ、4Dアクション、そしてインタープリターモードでもREST API をプリエンプティブプロセスで使用できるようになりました。しかしながら、デバッグ用には、デバッガウィンドウはプリエンプティブプロセスでは開けないため、サーバー上で自分の開発環境を開いてコオペラティブモードに切り替える必要がありました。4D v20 以降、サーバー側でデバッガを起動することでサーバー側でのデバッグがシンプルになりました。

 

Windows での新しいシステムレンダリングエンジン

4D v20 以降、システムレンダリングエンジンを使用した場合、4D は Microsoft Edge WebView2 を使用します。この変更によって、最新の機能とセキュリティアップデートに対応した現代的なブラウザの利点を享受することができます。例えば、Microsoft Edge はPDF の表示に使用することもできます。

 

ファイルとフォルダ

File の管理

ファイルの読み書きをしたい場合、 setText および getText 関数を使用してファイルの中身全体を読み出し、または書き込みをすることができます。4D v20 では新しいFileHandle クラスを使用することで、ドキュメントを読み出したり、既存のドキュメントに1行または複数の行を追加することができます。

FileHandle クラスは”File” オブジェクトに基づいて作成されたオブジェクトであり、ドキュメントの任意の部分へアクセスする関数を持っている他、そこからコンテンツを順番に読み出し、あるいは書き込みすることができます。

LZMA、新しい圧縮アルゴリズムのサポート

4D v20 では、 Zip Create Archive コマンドは新しい圧縮アルゴリズムをサポートするようになりました: LZMA と呼ばれるアルゴリズムです。この方式の長所は、標準のzip 圧縮アルゴリズムより小さなアーカイブを作成することができるという点です。コマンドに “zipArchive” オブジェクトを渡すことで、圧縮の方法をカスタマイズできます。これにより圧縮アルゴリズム、暗号化アルゴリズム、その他のオプションを自由に選択できるようになりました。

 

リストボックス

コレクション型リストボックスで自動行高機能を使用

自動行高機能はすでに配列型リストボックスで使用可能な機能で、これによって各行の高さをその中身に応じて自動的に調整することが可能でした。4D v20 ではその機能を、コレクションおよびエンティティセレクション型リストボックスでも使えるように拡張しました。

 

ALT キーにさようなら

リストボックスとドラッグドロップアクションについて、4D v20 以降、複数の項目を同時に移動させるためにはAlt キーを押す必要はなくなりました

 

縦方向および横方向のセルパディング

リストボックスの威力は4D v20において、2つの新しいプロパティによりさらに強化されました: 縦方向および横方向パディングです(パディングとはある要素のコンテンツとその境界線との間の、内部的な余白を指します)。この機能によってリストボックスはさらなる可能性を持ち、インターフェースは今まで以上にプロフェッショナルな見た目に整えることができます。

これらのプロパティはリストボックス全体に対してグローバルに設定できる他、カラム、ヘッダー、フッターのみなど、個々の要素に対して適用することも可能です。リストボックス内で定義すると、その設定はリストボックス内の全てのサブオブジェクトに対して継承されます。しかし、もちろんそれぞれのサブオブジェクトは独自の設定を持つことが可能です。

パディングの設定には以下の方法があります:

  • デザインモードを使用し、プロパティリストの”座標とサイズ”内のプロパティで設定する
  • プログラミングを使用し、LISTBOX SET PROPERTY コマンドに2つの新たな定数、lk cell horizontal padding および lk cell vertical padding を渡すことで設定する

 

プロジェクトモードの4D Server で同時に開発をする

もしあなたが、単一の開発サーバー上で同僚と同時に作業することをリクエストしていたのだとしたら、その願いは4D v20で、4D クライアントと4D Server を接続するための新しいモードによって叶えられました: 開発モードと呼ばれるモードです。

デベロッパーはデータベースストラクチャー、メソッド、フォーム、そして設定などを開発モードで編集することができます。ロッキングシステムは、バイナリーモードと同じ機能を持つように変更されました。

 

Windows でSDI アプリケーションをテストする

組み込みアプリケーションでSDI モード を使用できるようになってから、大分長い時間が経ちました。これはWindows アプリケーションのUX にとって、大きな飛躍でした。

4D v20 ではそのSDI アプリケーションのテストをより容易にします: アプリケーションの見た目を、スタンドアロンまたはクライアントアプリケーションをビルドすることなくチェックすることができるようになりました。

 

システムワーカー: 外部プロセスを非同期にローンチする

たくさんのリクエストを受けていた別の機能も実装されました。時として、あるプロセスをバックグラウンドで実行して、その出力コードに基づいて、まだそのプロセスが実行中に特定のアクションを実行する必要があります。例えば、プログレスバーを表示するような場合です。4D では、新しい 4D.SystemWorker クラスを使用することで、バックグラウンドプロセスを開始し、そのプロセスが情報を返した場合に自動的にコールバックメソッドを実行させることができます。これをインターフェースで使用した場合、インターフェースは外部プロセスが実行中でも常にユーザーに対してレスポンシブなままでいられ、外部プロセスが終了したら、その結果をクライアントに表示することができます。

 

診断ログの再編成

診断ログは、問題解決のためにはより重要なものとなってきています。診断ログは、コンテンツを改善してそのコンテンツをフィルターできるようにすることで、大幅に再編成されました(コンテンツはtrace、debug、info、warn、そしてerrorなどのログレベルでフィルターできます)。新しいデータベースパラメーター Diagnostic log level を使用することで、診断ログ内のログの流れをコントロールでき、サイズを小さく抑えておきながらも本当に必要なものだけを記録することができるようになります。

 

ログの設定ファイル

私たちのログ改善プロジェクトの一環として、4D はには以下の2つの新機能が追加されました:

    • ログを即時停止できる機能
    • 設定ファイルを使用することでサポートチームがお客様のログの取り方を設定できるようにする機能
 

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

フォームオブジェクトの進化blank

より洗練されたインターフェースを作成できるようにするために、以下の新しい新機能が追加されました:

  • ボタン、ラジオボタン、そしてチェックボックスに対して、テキストとアイコンに対して新しい設定が追加されました。”テキストの配置”プロパティおよび”タイトルと画像を隣接させる”プロパティです。
  • ラジオボタンとチェックボックスについては、アイコンの状態の数が増えました(True、False、ロールオーバー、無効化)。これによってエンドユーザーに対してよりよい表示が可能になります

 

丸い角

また、4D v20 では新しい”角の半径”属性を使用することで、スタティックテキストおよび入力テキストに対して丸い角を設定できるようになりました。この値の指定はUI(プロパティリスト)を使用して設定できる他、CSSやコードを使用しても設定できます。

 

Windows での高DPI: 高解像度のスクリーンのサポート

DPI はドット(D)、パー(P)、インチ(I)を意味する略語です。これはピクセルの密度を表し、DPI が高ければ高いほど、ピクセルの密度は高くなります。4K スクリーン上では、ピクセルの密度が高すぎるため、通常と同じ表示をした場合にはどんなアイコンもコントロールも極端に小さくなってしまいます。そのため、Windows ではテキスト、アイコン、そしてその倍率を変更することができます。4Kスクリーン上では、これがデフォルトで有効化されています。4D でははじめmacで高DPI をサポートしましたが、Windows でも互換性をもつようになりました。その結果テキストと画像がより高品質で表示されるようになりました。

 

macOS でダークモード環境で4D の開発を行う

4D v19 以降、macOS においてダークモードをサポートするアプリケーションを作成できるようになり、アプリケーションの見た目をライトモードとダークモードから選択できるようにすることでユーザーの期待に応えることができました。4D v20 では、その選択をアプリケーションを開発しているデベロッパーにも与えることにしました。4D Developer Edition はmacOS のライトモードとダークモードの見た目がシームレスに組み込まれています。

 

ストラクチャーエディターツールバーの最適化

ツールバーは、すべての4D ウィンドウを現代化し、標準化するために変更されました。

テーブル、フィールド、リレーション上をホバーする際、ステータスバーには役立つ情報が表示されます。4D v20 での新機能として、ステータスバーにリレーションの名前が直接表示されるようになりました。今後はプロパティウィンドウをいちいち開かなくても確認することができます。

 

データエクスプローラー

4D データエクスプローラー は、管理者によって使用可能な、Web ブラウザインターフェースです。管理者以外にも、デベロッパーがリモートで閲覧したり、あるいはデータベースを開いたマシンと同じマシンからローカルに利用することもできます。

4D v20 では、データエクスプローラーに2つの大きな改善がもたらされました。

データ間のリレーションの表示

最初の改善はデータ間のリレーションを表示できるようになったことです。これによってデータベース内での関連した情報を閲覧したり探したりするのが容易になります。

データエクスプローラーを4D に埋め込みblank

2つ目の改善はツールバーにデータエクスプローラー用のアイコンが追加されたことです。これによって外部Webブラウザを開くことなく、4D から簡単に開くことができるようになりました。ユーザーはツールバーから直接データエクスプローラーにアクセスすることができるようになったことで、時間を節約するとともに生産性も向上することでしょう。

 

 

配布

複製された組み込みクライアントアプリの使用

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

 

組み込みサーバープロジェクト内でのディレクトリファイル管理

サーバー側では、カレントユーザーは必ずDesigner です。そのため、ランタイムエクスプローラーへのアクセスは常に可能です。この振る舞いを変えたい場合、4D v20 では配布された組み込みサーバーにおいてデータエクスプローラーおよびランタイムエクスプローラーへ管理者がアクセスすることを制限することが可能になりました。

 

クライアントアプリケーションのサイズを減らす、他

4D v20 では4D アプリケーションのビルドにもさまざまな改善が追加されています。例えば、不要なライブラリを削除する(例えばCEF/Web エリア、Mecab、4D Updaterなどを削除する)ことでアプリケーションのサイズを減らすことができます。また同じストラクチャーからコンパイルされた複数のバージョンにおいてそれらのライブラリを内蔵するストラクチャーを作成したいような場合のために、コンパイル済みストラクチャーをビルドする際の最終ディレクトリを変更しました。そして日本語版をご使用のお客様のために、macOS では日本語版の4D はインターナショナル版と同じインストーラーにまとめました。

 

Windows 上でのクロスプラットフォーム用クライアント/サーバーアプリケーションのビルドがシンプルに

Silicon の登場以降、クロスプラットフォーム用クライアント/サーバーアプリケーションのビルドは変わりました。サーバーをMac用にビルドする限りは、Intel とSiliconの両プラットフォーム用にコンパイルすることができるため、そんなに大きな問題はありません。しかしWindows では、Silicon Mac用にコンパイルをすることはできませんでした。4D v20 ではMacからWindows マシンへと転送するファイルの数を抑える新機能が導入されました。4D はまた、Mac 上でクライアントをビルドする際にはコンパイルされたデータベースディレクトリを生成します。このフォルダにはアプリケーションのコンパイルされたコードのみが含まれるため、比較的サイズが小さくて済みます。

 

CI/CD: コンパイルされたストラクチャーまたはコンポーネントをBuild4Dを使用してビルド

プロジェクトモードの導入以降、プロジェクトのコンポーネントを操作することが簡単になりました。ここ最近のRリリースでは、あなたのチーム、あなたの作業方法、そしてあなたの用途に応じた、独自のビルドチェーンを作成することができるような幾つかの機能が追加されました。

独自のビルドチェーンを作成する、または4D を継続的統合ツールに組み込むのを手助けするため、4D では Build4D という名前のコンポーネントの開発を進めてきました。これはソースも含めて GitHub で公開されています。最初のステップとして、Build4D ではコンパイルされたストラクチャーとコンポーネントを作成することができます。今後もこの機能は拡張を続け、いづれはシングルユーザー向けアプリ、クライアントアプリ、サーバーアプリの管理ができるようになっていきます。

 

Windows リモートデスクトップサービス上でローカルなリソースをユーザー間で共有する

もしあなたがWindows リモートデスクトップサービスにおいて、ローカルリソースをユーザーアカウントフォルダにではなく共有フォルダにダウンロードするようにして欲しいとフィーチャーリクエストをしていたのなら、4D v20 ではよい報せがあります。

BuildApp プロセスでのプロジェクトで、ローカルリソースの共有を許可する新しいオプションを開発することでカレントのアーキテクチャーを考え直した結果、最適化をすることができました。

これを有効化するには新しいBuildApp XML キーを使用します: /Preferences4D/BuildApp/CS/ShareLocalResourcesOnWindowsClient

この最適化の結果、以下のような結果が得られました:

  • ローカルリソースはそれぞれのユーザーごとにサーバーからダウンロードされるわけではないため、時間の節約になります。
  • また、ローカルリソースはリモートデスクトップ環境下のそれぞれのユーザーに対して複製されるわけではないため、ディスク容量の節約にもつながります。

ORDA

4D v20 では、引き続き ORDA に対する改善が追加されています。ORDA、Object Relational Data Access とは、オブジェクト指向プログラミングリレーショナルデータベースの利点を組み合わせた、データにアクセスするための革新的な方法で、これによってデベロッパーはデータアクセスを管理することよりビジネス上の問題を解決することに注力できるようになります

4D v20 では以下のような新機能が追加されています: 

ユーザー権限管理(REST サーバー) 

REST リソースにおいてデータクラスを公開するか公開しないか、あるいはデータクラス内の属性の一部を公開するかしないかを決められる機能(これはデータへのアクセスを制限するための便利な方法でした)に加えて、4D はさらに一歩進んで、認証されていないユーザーからデータを保護するための、強力で完全にカスタマイズ可能なシステムを提供します。このシステムは、がアクセスしているかと、どのデータにアクセスしているかという点に基づいてデータを保護します。

この新機能はORDA の概念とスケーラブルWeb セッションに基づいています。これはREST リクエスト、リモートデータストアで受信したリクエスト、および4DACTION や4D タグなどの、すべてのWeb プロセスをカバーしています。

 

REST リクエストを完全にコントロールすることでパフォーマンスを最適化

4D v20 は、クライアント/サーバーおよびREST の両方においてパフォーマンスを向上するために、ORDA コンテキストとキャッシュをより細かにコントロールすることができるようになりました。

 

計算属性

これはビジネスロジックをよりクラスとORDA クラスに取り込むための新しい方法です。これまでの、ビジネス関連のフォーミュラ(文字列の連結、消費税の計算など)を4DのUIで定義しなければならなかった時代はもう終わりです。今後は直接クラス内にて複雑な計算を定義できる上、その計算結果を他のどんなストラクチャーフィールドと同じように、REST APIで、モバイルアプリで、あるいはORDA ベースのインターフェースで、自由に使うことができます。

 

ORDA エイリアス

4D v20 にはORDA の新しい概念が追加されています: エイリアスです。これらは計算属性の論理的かつ補完的延長とでも言うべきものです。名前の示す通り、エイリアスは、実態は既存のデータストアオブジェクトに対するショートカットです。これは計算属性同様、”entity dataclass”において定義されます。計算属性はどんな計算やフォーミュラでも処理できる一方、エイリアスは開発を素早く、簡単にするためのショートカットです。使用例としてはリレートされた属性にアクセスすることです(これによってリレーションを使用したデータベースの複雑さを隠すことができます)。

 

ヌル値を空値にマップをデフォルトでオフに

データベースにおいて新しいフィールドを作成する場合、4D ではヌル値を空値にマップするかどうかを選択することができます。4D v20 以降、新規作成されたプロジェクトにおいては、4D はデフォルトではヌル値を空値にマップしなくなりました。これはとても有益な変化で、なぜならORDA はNull を完全にサポートしている上、これによって不恰好な回避策をあれこれ講じる必要がなくなるからです。

 

RestModel アップデートを通してペシミスティックロック(悲観的ロック)を管理する

4D v20 では、REST API を使用して、エンティティをロックまたはロック解除することができるようになりました。これは特に以下のような場合に有用です:

  • REST API を使用して作業するのに慣れていて、コードに統一性を持たせたいような場合。ORDA データモデルに、エンティティをロック/ロック解除する関数を書く必要はありません。
  • REST API を使用してペシミスティックロックをスムーズに使用したい場合。

 

BLOB の完全サポート

4D v20 以降、BLOB はORDA で完全にサポートされるようになりました。ORDA デベロッパーは、他のデータタイプ同様、ORDA シンタックスを用いてBlob をデータベース内に保存することができます。

 

2つのエンティティセレクションを比較する

一般的に、オブジェクト指向プログラミングにおいて効率的に仕事をし、可能な限り行数を少なくする必要がある場合には、堅牢で最適化された関数が必要だと言えます。そのため、4D v20 ではエンティティセレクションオブジェクトにおいて新しい関数が追加されています: selected() 関数です。これを使用することで、2つのエンティティセレクションを比較して検証することができます。

 

4D Write Pro

 

過去の数バージョンにおいて、4D Write Pro は劇的に改善したと言えます。事実、我々4D チームでは、4D Write Pro を潜在的なテンプレートベースのドキュメント生成器にしようと投資をしてきました。これを使用すれば、手作業による文書作成やエラーの危険性を除去することができます。

4D Write Pro では、4D データベースから直接引っ張ってきたデータを使用することで、コンテキスト情報で記入済みのドキュメントを自動的に生成することができます。これには、名前、日付、住所情報、電話番号に加えて、その他多種多様なデータが含まれます。4D Write Pro その情報をテンプレートと組み合わせることで、合理的かつ効率的なドキュメント作成プロセスを提供します。

4D v20 ではまた、ヘッダー、データソース、キャリーオーバー行、そしてそのほかたくさんの強力な新機能を導入しています。あなたがビジネスのプロであろうとデベロッパーであろうと、これらの機能がワークフローと生産性を著しく向上させるのに便利であることを実感できることでしょう。

 

4D Write Pro とテキストボックス: docx 読み込み/書き出しオプションblank

テキストボックス を使用すると、テキスト、表、画像、フォーミュラ、その他の要素を格納したフローティングしているコンテナをドキュメントの任意の場所に、挿入することができるようになります。この機能はv20 で改善され、これらの要素をdocx ドキュメントから読み込み、あるいはdocx ドキュメントに書き出ししたときにドキュメントに含めることができるようになりました。

 

データコンテキストを定義

4D v20 では、ORDA およびオブジェクト指向開発の世界を4D Write Pro ドキュメントにも開きます。4D Write Pro ドキュメントにはデータベースによってはよくデータや計算の結果を返す フォーミュラ が格納されています。コンテキストのおかげで、 This キーワードを使えばデータをドキュメントに割り当てるのはとても簡単です。4D Write Pro を使用してテンプレートを作成し、そこから個人に特化したドキュメントを作成するための完璧な方法です。

 

表にエンティティセレクションとコレクションを動的に割り当てる

表に手動でデータを入力していくのは、とても手間のかかる作業です。そういう場面こそ データコンテキストが貴重なオプションとして活躍 し、また ORDA とオブジェクト指向開発の世界が4D Write Pro テンプレートとつながる場面です。

今後は4D Write Pro の表に”データソース”を定義することができるようになりました。それがエンティティセレクションであろうとコレクションであろうと、この”データソース”はそのテーブルに自動的に値を入れてくれます。表はセレクションの大きさに応じて自動的に延長され、必要であれば下位ページも追加されます。これを使用することで、あなたのアプリケーションのエンドユーザーは、自動的にデータが記入されるテンプレートを自分でデザインしたり編集したりすることができます。

 

下部キャリーオーバー行 (小計)

何ページにも及ぶような、巨大な売上表を想像してみてください。各ページに、その小計を計算し、そしてそれを次のページに持ち越してそこでの小計と合算したい場合を考えます。これが必要となるケースは多く、例えば長い請求書を編集している場合などは、時として法律上必要となることもあります。

4D v20 では 自動的に値が記入される 小計行を、表の各部分の下部に挿入することができるようになりました。

これは以下の2つの方法で作成することができます:

  • インターフェースを使用する(ツールバーでもサイドバーでもどちらでも可能です)。表メニューには新しい項目”下部キャリーオーバー行”が含まれています。
  • プログラミングを使用する。この場合、新しい wk bottom carry over row 定数を使用します。

また、キャリーオーバー行内のセルのコンテンツを定義するためには、コレクションまたはエンティティセレクションで利用可能なすべての関数(min/max/sum/など)で新しい属性 previousItems を使用することができます。

 

表のブレーク行blank

例えば、人物とその人の住んでいる大陸、国、都市などの一覧がある場合、それを大陸ごと、そして国ごと、そして都市ごとにグループ分けしたいような場合があるでしょう。こうすることでデータを理解しやすく、また分析しやすくすることができます。

表が、並べ替えがされたデータソースからのデータが割り当てられた場合、4D Write Pro は並べ替えに使用された値が変化したときにブレーク行を挿入することができます。これを使用することで、ユーザーは任意の条件によってデータをグループ分けすることができるようになります。

この機能を使用する他のシナリオでいえば、例えば関連会社に基づいたレポートを作成するときに、従業員の一覧を各大陸での会社ごとにグループ分けするような場合にも使用できます。適切な並べか条件を指定することで、4D Write Pro は各大陸ごとの各会社ごとにグループ分けをすることができます。

 

4D v20 では表のレイアウトをよりきめ細やかに定義するための新しい属性が追加されています。表の行内での改ページです。これを使用することで複雑な4D Write Pro ドキュメントを簡単に作成できるようになりますが、それ以上に重要なのは、より見た目でアピールするドキュメントが作成できるようになるということです。これはセルに長いテキスト(あるいは複数の段落)が含まれているような場合に有用です。また、セル(ひいては表の行)を分割可能と定義することで、ドキュメントのページ上の空いたスペースを有効活用できるという方法も便利かもしれません:

  • wk page break inside paragraph を使用すると、文字通り段落に対して適用することもできますが、ドキュメント自身、特定のセクション、テキストのレンジなど、他の任意のターゲットに対して適用することもできます。どの場合においても、属性はターゲット内の段落に対して割り当てられます。これは純粋にプログラミングを便利にしてくれます。
  • wk page break inside table を使用すると、表を2つ(またはそれ以上の数)に分割することができます。分割は表内の行の間で行われます(通常の分割と同じです)。
     
  • wk page break inside row も表を分割させることができますが、こちらは行内部で分割します。なお、このオプションは前のオプションと連動していることに注意してください。表が分割できない場合、行を分割することもできません。

 

また、表の行内部での改ページは、ツールバーとサイドバーウィジェットを使用しても設定可能であるということを覚えておいてください。

 

表のヘッダー

この機能は、プログラミングまたは4D Write Pro インターフェースウィジェットを通して利用可能な、新たな表の表示オプションをもたらします。4D v20 以降、表内にヘッダーを定義して、それをカラムブレークや改ページの後に自動的に追加させるようにすることができます。

 

ドキュメントの変更を検知

4D Write Pro ドキュメントが編集モードにある場合、エンドユーザーが実際に変更を行なったかどうかを知ることができればそれは便利だと言えます。この情報を使用することで、アクションやインターフェースをよりユーザーフレンドリーに調整することができます。

新しい document.modified プロパティは、ドキュメント内の変更を瞬時に検知し、適切にアクションを実行します。アクションは透過的なもの(例えばドキュメントが未保存の状態で開かれたままであれば自動保存を行う、など)もあれば、条件に応じて適切にインターフェースを変更するなど、見た目にも分かりやすいものもあります。

 

フォーミュラをユーザーフレンドリーに表示

フォーミュラは誰もが大好きなものであり、また4D Write Pro ドキュメントの一部であるとも言えます。これを使用することで、データベースから取得したたくさんの情報をドキュメントに統合することができ、またそれによってドキュメントの作成がより直感的で自動的に行えます。

しかしながら、時としてフォーミュラは、レイアウトの観点から異様に長かったり、あるいはエンドユーザーには読みにくかったりもします。

そのため、4D v20 ではフォーミュラを ⓕ 記号として表示することができるようになり、これによってフォーミュラの位置を表示して、ドキュメントをより正確かつ透過的にすることができます。

これを行うには以下の方法があります:

  • プロパティリスト内の新しい”フォーミュラソースを記号として表示”プロパティを使用する
  • インターフェースの新しい要素を使用する
  • プログラミングを通して、新しいwk display formula as symbol 属性を使用する

 

 

空の画像の表示を無効化する

4D Write Pro ドキュメントには、異なるソースからの異なるフォーマットの画像を格納することができます。これらの画像は時として、正当な理由で、表示されないことがあります。例えば無効なURL、空の画像を返すフォーミュラ、プラットフォームでサポートされていないフォーミュラ、などです。。。

しかしながら、空だったとしてもこれらの画像は必ず小さな空の長方形をもって、その論理的な位置が表されます。4D v20 で追加された新しいオプションを使用すれば、空の画像を完全に非表示にすることができます。これは以下の3つの方法で設定できます:

      • 最初の方法は最も分かりやすい方法で、プロパティリストを使用することです。これにはアピアランステーマ内に新しいエントリーがあります。
      • またはユーザーインターフェースを使用します。この場合新しい要素が追加されています。ツールバー、サイドバー、どちらでも設定可能です。
      • あるいはプログラミングを使用します。この場合は新しい wk visible empty images 引数を使用します。

 

新しい画像表示オプション

4D v20 以降、新しい wk image display mode 属性を使用することで、4D Write Pro ドキュメント内のインライン画像およびアンカーされた画像は7種類の新しい表示タイプを使用できるようになりました:

  • 合わせるようにスケール(デフォルト)
  • トランケート
  • トランケート(中央合わせ)
  • プロポーショナル
  • プロポーショナル(中央合わせ)
  • 繰り返し
  • 繰り返し(中央合わせ)

また、新しいwk background display mode 属性を使用することで、ドキュメント、セクション、段落などの背景に使用されている画像の書式設定も簡単になりました。

フォーミュラの表示状態の管理

表示については、すでにいくつかの表示オプションが4D Write Pro ドキュメント内で利用可能です。フォーミュラに関しては4D v20 では wk formula highlight オプションが追加され、以下の4つの値を取ることができます:

  • 0: フォーミュラと値のハイライトは行わない
  • 1: フォーミュラのみハイライトする(デフォルト値)
  • 2: 値のみをハイライトする
  • 3: フォーミュラと値の両方をハイライトする

これはまた標準アクションを使用して設定することも可能です。これはチェックボックス、標準ボタン、ドロップダウンリストに対して使用できます。

 

段落をつなげる

ドキュメントレイアウトをより良くコントロールするために、4D v20 ではある段落と次の段落をつなげたままにするかどうかを選択することができる新機能が追加されています(つなげたままにした場合、自動改ページやカラムブレークで分割されなくなります)。

 

SVG フォーマットに書き出し

4D Write Pro ドキュメントは既に色々なフォーマットへの書き出しが可能です: PDF、標準テキスト、Microsoft Word、HTMLなどです。このリストに、新しくSVG フォーマットが追加されました。これを使用することで、例えば、最初のページを画像として書き出して、macOS/Windowsの両プラットフォームや、ブラウザ上、モバイルデバイスなどで表示可能なプレビューを作成したり、あるいは4D Write Pro のブロックを画像として4D View Pro ドキュメントなどの他のドキュメント内に挿入したりすることができます。

SVG は画像フォーマットでもあるので、ドキュメントのどの部分を書き出ししたいかを選択することができます。最終的な画像はドキュメントのページレンダリングの状態に基づきます。これはページの方向や余白など、すべてのレイアウトオプションを加味します。

インターフェースウィジェットの改善

4D v20 ではインターフェースウィジェットにもたくさんの新機能が追加されています:

  • 両方のインターフェースに、フォーミュラを挿入するためのメニューが追加されました。
  • また、タイポグラフィールールをより遵守するため、またより読みやすくより美しいドキュメントを作成するため、以下のいくつかの段落属性を追加しました:
    • ウィドウアンドオルファンコントロール
    • 内部での改ページを避ける
    • 次の段落と繋げる
    • 行の高さ
  • サイドバーウィジェットでは、改ページ、セクションブレーク、カラムを管理できるようになりました。またページの向き、書式、タイプ(下書き、ページ、埋め込み)、あるいは一部の要素(非表示文字、ヘッダー、フッター)の表示状態などのビューオプションを管理できるようになりました。
  • ツールバーウィジェットについては、フィールド、タイトル、作者、主題、会社、注記を入力できるようになりました。

 

ダークモードのサポート

macOS 上では、開発中でも配布段階でも、ライトモード/ダークモードを選択でいるようになりました。ダークモードに対応していなかった以下のウィジェットも、ダークモードへの対応が完了しました(macOS のみ):

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

 

画像設定ダイアログ

4D Write Pro インターフェースコンポーネントには、新しいピクチャー設定ダイアログが追加されています。これを使用することで、以下のようなことを簡単に行うことができます:

  • 画像のサイズ
  • 表示フォーマット
  • 余白とパディング
  • アンカーされた画像の、ページ上での位置

 

このダイアログはコンテキストメニューを使用して表示するか、あるいは”On double click”などのフォームイベントのときに”WP PictureSettings”コンポーネントメソッドを呼び出すことでも表示することができます。

またこのリリースではツールバーウィジェットを使用して画像をURL から追加することもできます。

 

継続したセクションブレーク

4D v20 以降、4D Write pro は継続したセクションブレークをサポートします。継続したセクションブレークは、あるセクションの右側に、改ページをすることなくセクションを追加できる機能です。これを使用することで、同一ページ内に異なる数のカラムを配置することなどができます。

継続したセクションブレークを挿入するには、以下の方法を使用して挿入します:

  • プログラミングを使用する。この場合、新しい値 wk continuous section break をサポートするようになった WP Insert break コマンドを使用します。
  • 標準アクションが割り当てられたメニューを使用するか、標準アクションをボタンに割り当てて使用します。
  • ユーザーインターフェースを使用する。

 

 4D View Pro
 

営業であろうと、あるいは財務、会計、データ解析、あるいは長大で扱いづらいデータセットを扱うその他あらゆる職種であっても、 4D View Pro はその答えとなるツールです。これは統合された強力なスプレッドシートの利点をフルに活かすことができる、4D データにダイレクトにアクセス可能なマルチリンガルな製品なのです。もはやスプレッドシートには見えないほど視覚的に進化したダッシュボードをビルドできる機能から、毎朝オフスクリーンで作成されて自動的に管理部へと送信されるレポートまで、4D View proは有意義なビジネス上の決断を下すために必要なものが全て揃っているのです。

そして4D v20 では、間違いなく有用だと感じられる新機能をもって、このプロダクトはかつて無いほど強力なものに成長しました。:

ピボットテーブル

4D v20 のピボットテーブルは、あなたのユーザーに営業またはマーケティング部門の人間が含まれていた場合、一度は試してみるべき機能です。これは4D View Pro リボンからのデータを容易に要約して解析するためのツールです。

 

CSV: 新しい読み込み/書き出しフォーマット

4D v20 ではCSV ファイルを読み込み、書き出すことができるようになりました。CSV は、多くのアプリケーションで広くサポートされている、一般的なデータ交換用のフォーマットです。例えば、他の情報システムから送られてきたCSV ファイルのデータをVP Import document および VP Export document を使用することで表示することができます。これらのコマンドはCSV のような区切り文字テキストファイルフォーマットをサポートするようになりました。

 

シート管理

4D v20 では、4D View Pro ドキュメント内のシートをプログラミングで管理できるようになりました。以下のコマンド群を使用することで、シートを作成したり、改名したり、非表示にしたり、削除したり、あるいは現在ユーザーがどのシートを開いているのかなどを知ることができるようになりました:

  • VP SET SHEET COUNT: 必要なシートの数を一度で定義する
  • VP ADD SHEET: 特定のインデックス位置に(カスタムの名前がついた)シートを挿入する
  • VP SET SHEET NAME: シートに分かりやすい名前を設定することで、ユーザーを案内する
  • VP SET CURRENT SHEET: 現在選択されているシートを変更する
  • VP SET SHEET OPTIONS: 例えば計算のための情報のみを格納しているシートを非表示にする

 

UI から改ページを管理する

4D v20 では、ユーザーインターフェースから改ページを管理することが可能になりました。これを行うためにはコンテキストメニュー内の新しいエントリーを使用します: “Add page break” および “Remove page break“。  また、新しい VP SET SHOW PRINT LINES および VP Get show print lines コマンドを使用することで、印刷ラインの表示/非表示が設定できるようになりました。

 

ワークブックオプション

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

テンプレートを使用して開発プロセスをスピードアップ

既存のテンプレートを使用してレポートやスプレッドシートを作成することで、開発はスピードアップします。エンドユーザーがコピーペースト機能を使用するのと同じように、4D v20 では、デベロッパーとして、他の場所、または他のエリアから、シンプルにセルのレンジを”コピー”してくることができます。 VP MOVE CELLS コマンドを使用すると、他の場所、あるいは他のエリアにあるセルのレンジをコピー/カットしてきてペーストすることが可能です。またレンジをコピーするための別の方法としては、 VP Copy to object コマンドを使用してレンジをオブジェクトにコピーし、例えばデータベースに保存し、必要なときにこのオブジェクトを VP PASTE FROM OBJECT コマンドを使用してペーストすることができます。

 

印刷インターフェース

カスタマーが印刷の設定をするのを容易にするために、リボンツールバーには新しいボタンが追加されました: “ページレイアウト”タブと”ページ設定”ダイアログを通して印刷設定をサポートします。このダイアログにはページ、余白、ヘッダー/フッター、シートのためのタブが含まれており、これらを使用することでユーザーは VP SET PRINT INFO コマンドで利用可能な多数のオプションを管理することができます。

 

データコンテキストを使用してシートに入力をする

4D View Pro ではデータを読み込み、テンプレートを作成するための新しい方法を提供します: データコンテキストです。これを使用することでプレースホルダーを持ったドキュメントを作成し、データコンテキストを設定することでデータを自動的に流し込むことを可能にします。

 

コレクションを表として表示する

4D View Pro では既にデータをスプレッドシート内に簡単に読み込んで表示するための方法が用意されています。4D v20 では新しい表機能が追加され、これを使用することでヘッダー、表のリサイズ、サマリー行、カラムの並べ替え、フィルターなどの追加のプロパティを利用することができます。この機能にはまたデータクラスやコレクションから素早くデータを読み込むための機能も含まれています。新登場の VP CREATE TABLE コマンドをぜひお試しください。

 

行とカラムの管理

4D v20 は、エンドユーザーの要望に応じてカラムや行を追加/削除することで表のカラムと行をより効率的に管理するための複数の新しいコマンドを用意しています。

この新機能とデータコンテキストを組み合わせることで、たとえそれがレポート、請求書、契約書、あるいは他のどんな書類タイプであっても、どんな状況でも正確な情報を持ったビジネスコンテンツを自動的に作成するためのより先進的なテンプレートをデザインすることができます。

 

表のスタイルのカスタマイズ

表は4D View Pro ドキュメントにおける重要な部分です。そのため、過去のリリースを通して、私たちは表に関連した新機能を提供してきました。4D v20 ではドキュメントの他の部分とマッチするためにそれらの表のスタイルを設定するための新機能が追加されました。

今後は、 VP Set table theme コマンドを使用することで、60 以上の定義済み表スタイルをプログラミングで適用することができるようになります。これらのスタイルがどれも用途に合わない場合、あなた独自のテーマを作成してそれを表に適用することもできます。

 

 各R-releases を詳しく見てみる