4D V17での新機能

このドキュメントは4D v17 で利用可能な全ての新機能をまとめたもので、これらはv16 のR リリースプログラム中か、あるいは4D v16 R6 から4D v17 への最後のステップの間に導入されたものです。それぞれの機能には関連したブログの記事があり、記事には具体的な例題があります。これらのブログの記事へは、昨日のタイトルをクリックするとそこに飛べます。

また、 blank ラベルが付いているセクションは、4D v16 R6 から4D v17 の間に新たに追加された新機能であることを意味しています。

このドキュメントは7つの章に分かれています:

ORDA

4D v17 では、データベースをオブジェクト志向のアプローチで管理できるようにするために革新的なコンセプトを導入します: ORDA (Object Relational Data Access) です。

このリリースに含まれる機能をご紹介します:

データの作成、更新、削除 blank

ORDA では、CRUD (作成、読み込み、更新、削除) オペレーションは抽象化レイヤーを通してデータベースに対して実行されます。この抽象化レイヤーはデータストアと呼ばれ、これはデータベースモデルにインターフェースを提供するオブジェクトであり、またオブジェクトを通してデータを提供します。ORDA では、作成更新削除オペレーションはカレントセレクションやカレントレコードに対してではなく、エンティティに対して実行されます:

  • 作成: new() メソッドを使用して新しいエンティティをインスタンス化し、save() メソッドでエンティティを保存することで作成が行われます。
  • 更新: エンティティに対して同じ save() メソッドを使用することで更新が行われます。
  • 削除: エンティティ、あるいはエンティティセレクションに対して drop() メソッドを使用することで削除が行われます。

ドキュメントを読む

 

データベースをクエリ blank

ORDA では、データストアとはデータベースモデルにインターフェースを提供するオブジェクトであり、またオブジェクトを通してデータを提供します。またORDA では各テーブルのカレントセレクションやカレントレコードを扱うことはせず、その代わりにオブジェクトであるエンティティを扱います。複数のリンクしたテーブルを容易にクエリしたり、同じテーブルへの再帰的リレーションを管理したり、また単一のクエリ内で複数の論理演算子を使用したりすることが可能になります。4D v17 ではデータクラス(≒テーブル)をクエリするために複数の方法提供しています: クエリを単一の文字列として渡したり、プレースホルダーを使用してクエリ文と値を渡したり、あるいは動的にビルとされたコレクションを使用してクエリ文と値を個別に渡すこともできます。 ドキュメントを読む

 

カレントセレクションとORDAを行き来する blank

ORDA は既存のコードと統合することができます!テーブルのカレントセレクションをエンティティセレクションから更新したり、あるいはテーブルのカレントセレクションからエンティティセレクションを取得することも可能です!これのために新しいコマンドが追加されました: USE ENTITY SELECTION コマンドは対応するテーブル内のカレントセレクションを更新するのに使用し、 Create entity selection コマンドは対応するデータクラスからエンティティセレクションを取得するのに使用します。 ドキュメントを読む

 

エンティティ、オブジェクト、コレクションへの変換 blank

ORDA では、エンティティとエンティティセレクションをデータベースから切り離し、独自に動作させることができます。また既存のオブジェクトやコレクションをデータベースへと移動させることもできます。エンティティをオブジェクトへと書き出すためには、toObject() メソッドを使用します。またエンティティセレクションをコレクションへと書き出したい場合には toCollection() メソッドを使用します。オブジェクト経由でエンティティを読み込むのは fromObject() メソッドを使用することで可能で、エンティティセレクションをコレクション経由で読み込むのは fromColletion() メソッドを使用することで可能となります。 ドキュメントを読む

 

ロックの管理

オプティミスティック・ロック blank

ORDA では、データベースにエンティティを保存しようとした時に発生しうるエラーを管理するためのメソッドのセットを提供することによって、オプティミスティック・ロックを使用できるようにしています。このプロセスはかなり単純なものです。reload() メソッドを使用してエンティティをデータベースからリロードしたあと、 touchedAttributes() メソッドを使用することで最後に読み込み・保存された時からどのプロパティが書き換えられているかを知ることができ、また diff() メソッドを使用することで二つのエンティティを比較することもできます。 ドキュメントを読む


ペシミスティック・ロック blank

オプティミスティック・ロックの他に、ORDA ではペシミスティック・ロックを使用することもできます。 lock() メソッドを使用してエンティティをロックすると、エンティティがアンロックされるまでは他のプロセスからこのエンティティに参照を保存しようとしてもできません。これは、今後はエンティティがロックされているかどうかを読み込む前にチェックする必要がないということです。なぜならエンティティを更新しようとした時に、 save() メソッドがロックの理由を詳細に記した結果を返すからです。 ドキュメントを読む

 

エンティティセレクション内のエンティティを管理する blank

ORDA ではエンティティセレクションを容易に作成・追加するメソッドを提供しているほか、エンティティセレクションオブジェクト内でエンティティを管理するメソッドも提供しています。これによって、複数のエンティティセレクションを同時に扱いながらも、それらの内部を独立して管理することもできます。エンティティセレクションは newSelection() メソッドを使用することで作成され、 add() メソッドを使用することでエンティティを追加することができます。エンティティセレクションでは、 first() および last() メソッドを使用することで最初と最後のエンティティを取得することができ、またエンティティでは previous() および next() メソッドを使用することで前の、あるいは次のエンティティを取得することができます。 ドキュメントを読む

 

エンティティセレクションでの論理演算子 blank

論理演算子はエンティティセレクションに対して使用することが可能で、これによって二つのエンティティセレクション(クラシック言語でいうところのセット)の交差、和集合、差を取得することができます。 ドキュメントを読む

 

エンティティセレクションの計算 blank

ORDA ではフィルターを通してデータをつなぎ合わせて集計値を得るための機能を提供しているのに加え、データセットに対して検査をして計算を実行し、集計操作を行うための機能も提供しています。例えば、 sum()average()count()min() および max() メソッドを使用することで、その名前で分かるとおりの機能を実行することができます。 ドキュメントを読む

4D ランゲージ

コーディングエクスペリエンスをより容易に、かつ直感的にするために4D ランゲージにもたらされた大きな改善点は、以下の通りです:

オブジェクト記法

オブジェクト記法を使用すると、あなたのコードの書き方とデータベースエンジンの使い方は劇的に変化することになります。コーディングはより早くなり、理解が容易になります。例えば、 $myobject.attribute.subattribute:=5 とシンプルに書くことができたり、 $person.children[2].firstname と書くことで属性にアクセスできたり、あるいはオブジェクト記法を式にも使用することができます。例えば、テキストへん薄のようなフォームオブジェクトを作成し、オブジェクト属性を [person]relatives.grandfather.grandfather.firstname のように代入することができます。変数を表示するためだけに、 OB Get を何度も使用して値を読み出して一時変数に割り当てる、といったことをしなくてよくなります。オブジェクト記法の一つの利点は 未定義のプロパティと値を使用できることです。なぜなら4D ランゲージは未定義の値を式のどこにでも受け入れるようになったからです。また、未定義の値を変数に代入した時、変数はその型に応じてデフォルトの値へと設定されます。これはつまり、存在しないオブジェクトのプロパティを読み出してもエラーが発生せず、コードの実行が停止されないということを意味します。 ドキュメントを読む

 

共有オブジェクトと共有コレクション

共有オブジェクトと共有コレクションは、プリエンプティブプロセス間において情報を共有するための、簡単かつ効果的な方法です。共有オブジェクトと共有コレクションは標準のものと同じように振る舞いますが、インスタンス化において New shared object および New shared collection のコマンドを使用して”共有”であると宣言される必要があります。一度インスタンス化してしまえば、他の変数同様、読み出しに直接使用することができます。書き込みと編集には、 Use および End use キーワードでコードを囲う必要があります。 ドキュメントを読む

 

新しい反復子: For each/ End for each blank

4D ランゲージに新しいループが追加されました。 For each / End for each は、コレクションなどの新しいデータタイプに対して繰り返しを実行できるようにします。またこれを使用するにはループに入る前にコレクションに属している項目がいくつあるのかを事前に知っておく必要があります。またこれを使用してオブジェクトのプロパティに対して繰り返しを実行することもできます。これはオブジェクトのプロパティ名を事前に知らずとも一般的なコードを書きたい時に有用であると言えます。 ドキュメントを読む

 

コレクション

コレクションとは、4D ランゲージに追加された新しい型です。コレクションはとても柔軟で、あなたの開発期間を短縮しうる存在です。一見、コレクションは配列のように見えるかもしれません。ですが、配列が高度に最適化された同じ型のリスト(倍長整数配列、テキスト配列、等)であるのに対して、コレクションは様々な型(倍長整数、テキスト、数値、ピクチャー、オブジェクト、あるいは他のコレクション等)のリストを格納できるコンテナのようなものです。またこれはオブジェクト記法を使用してアクセス可能です。 New collection コマンドは新しい空の、あるいは値があらかじめ入れられたコレクションを作成します。コレクションの操作を容易にするために、オブジェクト記法で使用するための新しいメソッドが多数追加されました。これらのメソッドによって、例えば要素の追加/削除、コレクションの並べ替え、あるいはそれ以上のことができるようになります。既に40を超える新しいメソッドが利用可能です。 pop()push()concat()resize()query()slice()、などです。 ドキュメントを読む

 

Null コマンド

新しい Null コマンドを使用すると、オブジェクト属性あるいはコレクションのメンバーに未知の、あるいは足りてない値がないかどうかをチェックすることができます(0 という値あるいは”” という空の文字列と、未設定の値というのは異なることに注意してください)。またこれを使用して属性値をunknown へと設定することもできます。このコマンドはオブジェクト記法でも使用可能です。 ドキュメントを読む

 

オブジェクトを使用して開発

オブジェクト内の日付

日付は、オブジェクト内で文字列ではなくて日付型として設定することが可能になりました。これによってオブジェクト内の日付の使用がより簡単で直感的になりました。また OB SET および OB Get は、 is date 定数なしでも使用することが可能になりました。もちろん他の一般的なオブジェクト同様にオブジェクト記法を適用することができます。オブジェクト内部で日付型を使用するためには、データベース設定の互換性ページから、”オブジェクトではISO日付フォーマットの代わりに日付型を使用する“をチェックするだけです。 ドキュメントを読む

オブジェクト内でのピクチャーのサポート

ピクチャーは、オブジェクトフィールド、あるいはオブジェクト型変数内部に保存することが可能になりました。 OB Get および OB SET コマンドは新しい Is picture 定数をサポートし、ピクチャーをオブジェクトフィールドに保存することが可能になります。もちろんここでもオブジェクト記法を使用することができます。 ドキュメントを読む

JSON オブジェクトの評価

追加された新しいオプションによって、JSON 文字列を解析する際のデバッグの時間を減らすことができます。 JSON Parse での任意の * 引数を渡すことで、追加のデバッグ情報 (__symbols property) が作成され、これに各プロパティとオブジェクトのサブプロパティのパス、行位置、行のオフセットが含まれます。また例えオブエジェクトが正しく書かれていたとしても、必要な仕様やコンテンツの規則を満たしてないこともありえます。新しい JSON Validate コマンドは、オブジェクトの構造が指定された仕様(JSON スキーマ) に合致しているかどうかをチェックすることができます。 ドキュメントを読む

オブジェクトの簡単な初期化の方法

New Object コマンドを使用すると、たった1行のコードで空のオブジェクトを作成するか、あるいは初期プロパティと値を持ったオブジェクトを作成することができます。 ドキュメントを読む

単一のオブジェクト内の要素の一覧をクエリ

リンクされた引数を使用することで、オブジェクト内の配列を検索することが可能になりました。 QUERY BY ATTRIBUTE コマンドを使用すると、単一のオブジェクト内の要素の一覧内に対して複合クエリを実行することができるようになります。AND 結合で連結された複数のクエリ引数で配列の属性内を検索する場合、少なくとも一つの要素で引数が合致するレコードを取得するか、あるいは同じ要素内の引数が合致するレコードを取得するかを選択することができます。 ドキュメントを読む

オブジェクト属性でレコードを並べ替え

新しいORDER BY ATTRIBUTE コマンドを使用することで、セレクションを例えばリストボックス内などに表示する場合に、特定のオブジェクト属性に基づいてレコードを並べ替えすることが可能になりました。 ドキュメントを読む

 

プリエンプティブマルチスレッド

プリエンプティブマルチスレッドによって、アプリケーションがマルチコアコンピューターの利点を最大限生かすことができるようになります。結果として、アプリケーションの実行速度が速くなり、またより多くの接続ユーザーをサポートすることができるようになります。20以上のコマンドがプリエンプティブプロセスで使用できるように改善されました。 ドキュメントを読む

 

動的なフォーム

動的なフォームを作成し、使用することが可能になりました。テキストベースのフォーマット(JSON) に保存された情報によって、幅広い新しい機会への可能性の扉が開かれることでしょう。エンドユーザーのコンテキストに完全に適合したフォームの作成、複数のデータベース間で同じフォームを共有する、などです。フォームのテキスト形式の詳細情報は4D オブジェクトあるいはファイルへと保存することができます。そしてランタイムにおいて、フォームを読み出すことができます。以下のコマンドは、4D オブジェクトあるいはJSON ファイルへのパスを受け取れるように改善されたコマンドです: Open form window, DIALOG, FORM SET INPUT, FORM SET OUTPUT, OBJECT SET SUBFORM, OBJECT GET SUBFORM, FORM LOAD, Print form ドキュメントを読む

 

フォーム間での通信がシンプルに

フォームにオブジェクトをバインドし、新しい Form コマンドで使用することで、煩雑なコードやグローバル変数を使わないようにすることができます。必要なことは、引数をオブジェクトに入れて DIALOG コマンドを使用してフォームに渡すだけです。このオブジェクトのどのプロパティも、 Form コマンドを使用することでこのフォームから利用可能になります。これはまたサブフォームに対しても有効です。 ドキュメントを読む

 

標準アクションを用いた新しいプログラミングの可能性

標準アクション– First Record color?value=red など–は、ボタンに、あるいはユーザーインターフェースのメニュー項目に、あるいはプログラミングによって、割り当てることができるようになりました。一つの利点としては、4D はアクションが適用不可能な場合にはメニュー項目あるいはボタンの無効化を自動的に管理するということです。これに加えて、標準アクションをプログラミングで容易に管理するために、以下の二つの新しいコマンドが4D ランゲージに追加されました:

  • INVOKE ACTION を使用することで、任意の標準アクションをトリガーすることが可能で、オプションでターゲットコンテキスト(カレントフォームあるいはメインフォーム)を指定することも可能です。
  • Get action info コマンドを使用することで、カレントのコンテキストにおいて、ある標準アクションが利用可能で有効かどうかを調べることができます。

ドキュメントを読む

 

キャッシュマネージャーの優先度コントロール

64-bit 版4D には、キャッシュメモリ内のオブジェクトに対する自動優先度管理機構に基づいた、 完全に最適かされたキャッシュマネージャーが含まれています。キャッシュメモリ内のオブジェクトの優先度を完全にコントロールすることで、より先進的な微調整が可能になります。

特定のケースと上級者向けの使用法のために、以下の二つの4D コマンドのセットを使用することでキャッシュ優先度をカスタマイズすることができます:

ドキュメントを読む

 

セキュリティ

4D v17 では、以下のような改善点で、セキュリティ関連の事柄で大きく飛躍します:

あなたのビジネスアプリケーションにおいてよりセキュアな環境を作成するために必要なビルトインのツールおよび技術についてのより詳細な情報については、4D のセキュリティガイドを参照してください。

4D Web サイトにA+ ランキング blank

4D Web サーバー上でHSTS(HTTP Strict Transport Security)機能を有効化するだけで、あなたのWebサイトはSSL ラボからA+ のランキング(最上位のレート)をもらうことが可能になります。HSTS を使用するとWeb サーバーがブラウザに対して、自身がセキュアなHTTPS 接続経由でしか通信をしないということを宣言します。一度有効化すると、4D Web サーバーは自動的にHSTS 関連の情報をレスポンスヘッダーへと追加します。ブラウザが、4D Web サーバーからの、HSTS 情報を含んだ最初のレスポンスを受け取ると、ブラウザはそれを記録します。そのから先は、どんなHTTP リクエストも自動的にHTTPS へと変換されます。また、 Web HSTS max age オプションを使用することで、ブラウザがどのぐらいの時間その情報を保存するかを指定することができます。 ドキュメントを読む

 

4D Web サーバー内でのパーフェクトフォワードセキュリティの有効化

4D Web サーバーのデフォルトのセキュリティは、パーフェクトフォワードセキュリティ(PFS) をサポートするようになったことでより強化されました。この実装によってあなたのアプリケーションは一部のネットワークセキュリティ機能とより適合するようになっただけでなく、Web セキュリティ監査テストでより高くランク付けされるようになります。PHS はTLS がサーバーで起動されれば自動的に有効化されます。 WEB Get server info コマンドを使用すると、PFS が有効化されているかどうかを確実に調べることができます。PFS を使用するのに必要な条件が全て満たされていれば、新しい perfectForwardSecrecy 属性はtrue になります。また、一部の既知のセキュリティ上の問題から、4D Web サーバーではRC4 アルゴリズムは廃止予定になっているということに注意してください。 ドキュメントを読む

 

4D Web サーバーで強化されたセキュリティ

4D はTransport Layer Security (TLS v1.0、TLS v1.1、および TLS v1.2) をサポートすることで、クライアント/サーバー間での暗号化された通信を実現しています。サポートされる最小のバージョンはTLS v1.2 で、それより古いバージョンは安全ではない可能性があるため、接続されません。ただしTLS v1.2 をサポートしない古いブラウザ(あるいはツール)をサポートしたい場合には、 Get database parameter および SET DATABASE PARAMETER コマンドの新しい Min TLS version セレクターを使用してセキュリティレベルを下げることができます。 ドキュメントを読む

 

ハッシュとパスワード検証

ハッシュ機構はパスワードを保管するのに理想的な機構です。ハッシュされたパスワードを生成および検証するために、2つの新しいコマンドが作成されました。Generate password hash および Verify password hash です。どちらもbcrypt アルゴリズムに基づいたもので、これは遅くなるよう設計されています。そのため、ブルートフォースアタック(総当たり攻撃)には時間がかかり、危険は最小限に抑えられます。 ドキュメントを読む

 

SHA-2 のサポート

ダイジェスト昨日は、データ交換あるいはデータ比較の際にデータの整合性をチェックするのに便利です。Generate digest コマンドは改善され、SHA-2 をサポートするようになりました。このコマンドはSHA-2 ファミリーの2つのアルゴリズムをサポートします。SHA-256 とSHA-512 です。シンタックスは何も変わらず同じで、 SHA256 digest および SHA512 digest 定数が追加されています。 ドキュメントを読む

 

デフォルトで”最新のバックアップから復元する”がONに

データを破損から防ぐために、新規に作成されたデータベースでは、データベース設定の”バックアップ“のページの”データベースが壊れていたら、最新のバックアップから復元する“がデフォルトでチェックされています。これによってより高レベルの保護を提供しています。 ドキュメントを読む

4D Write Pro

 

マルチカラムのドキュメント blank

4D Write Pro でマルチカラムのドキュメントを作成できるようになりました。また、複数のカラムを持っている既存の4D Write ドキュメントも変換できるようになりました。WP SET ATTRIBUTES および WP GET ATTRIBUTES コマンドは、カラムを管理する以下の新しい属性をサポートするように更新されました:

  • wk column count: ドキュメントあるいはセクションにおけるカラム数を定義
  • wk column spacing: 二つのカラム間の間隔を定義
  • wk column rule style, wk column rule color, wk column rule width: 垂直方向のカラムのセパレーターのスタイル(点線、破線、など)、色、そして幅を定義

ドキュメントを読む

 

4D Write Pro ドキュメントのどの部分でも位置を取得 blank

4D Write Pro 専用の、新しいコマンドが利用できるようになりました。WP Get position です。特定のレンジ、要素、あるいは参照を渡すと、このコマンドは5つの重要なデータ情報をまとめたオブジェクト変数を返します。レンジが始まるセクション番号、ページ番号、カラム番号、行数、そして行内部でのレンジの最初の文字の位置まで分かります。 ドキュメントを読む

 

4D Write Pro で要素にプログラムでアクセスする blank

WP Get elements コマンドは様々なタイプの要素(段落、表、画像、など)のコレクションを返します。型指定されたレンジが渡された場合、コマンドは渡された型と同じ型のみを格納したコレクションを返します(ただし第2引数で指定があった場合を除く)。そうでない場合、コマンドは型に関わらず、利用可能な要素を全て格納したコレクションを返します。 ドキュメントを読む

 

テキスト挿入を簡単に管理するには blank

WP SET TEXT コマンドを使用すると、ドキュメント内のどの位置にでも好きにテキストを書くことができます。このコマンドは他の4D Write Pro の”挿入”系コマンドと同じように使用されます。コマンドは3つの引数を受け取ります。レンジオブジェクト(テキストを挿入したい位置)、テキスト自身、そして最後にテキストをレンジの前に挿入するか後ろに挿入するか、あるいはレンジ自身を置き換えるかを定義する定数を渡します。 ドキュメントを読む

 

4D Write Pro の表

4D Write Pro で表が使えるようになりました!個別のセルを持った本物の表で、セルに大きテキストを入力した場合には、テキストは自動的に折り返され、セルの幅は変わりません。表をゼロから作成して、そのカラム、行、あるいは個々のセルのスタイルをプログラミングで変更することができます。

WP Insert table コマンドを使用すると、指定されたセル、行をもつ表(あるいは空の表)を作成することができます。4D Write Pro ドキュメント内での表を管理するために、以下のコマンドが作成されました: WP Table append rowWP Table get rowsWP Table get columnsWP Table get cells。これらのコマンドは全てスレッドセーフ(プリエンプティブスレッドで使用可能)です。 ドキュメントを読む

 

標準アクション機構は4D Write Pro にも拡張

80 を超える4D Write Pro 専用の新しい標準アクションが作成され、これらの新しいアクション(Bold, Color, Spell Check, Freeze expression, Show System Font Picker Dialog など)によって4D Write Pro エリアを容易に管理できるようになりました。80 を超えるアクションが利用可能です。今後は独自の4D Write Pro ユーザーインターフェースを、1行もコードを書かずに作成することが可能です。 ドキュメントを読む

 

標準アクションを使用して、独自のツールバーをデザイン

プログラミングをすることなく、独自の4D Write Pro ツールバーを簡単に作成してみましょう。シンプルでありながらとても強力な標準アクション機構は、チェックボックスやポップアップにまで割り当てられるように拡張されました。

標準アクションを使用することで、自動機構の利点を生かすことができ、その結果時間を節約することができます。オブジェクトの有効化/無効化はコンテキストに応じて4D によって自動的に管理されており、カレントの状態(チェックボックス)あるいは値(ポップアップ)はカレントのテキストセレクションに応じて自動的にアップデートされます。 ドキュメントを読む

 

4D Write Pro の独自のコンテキストメニューをデザイン

Dynamic pop up menu コマンドは更新され、標準アクションに基づいた独自の4D Write Pro コンテキストメニューをデザインすることが可能になりました。 ドキュメントを読む

 

4D Write Pro でのピクチャーの扱い

絶対位置のピクチャー

特定の位置でのピクチャーの挿入が完全にコントロールできるようになりました。テキストの前、あるいは後ろ、またはページにアンカーしたりドキュメントの特定の位置(ヘッダー、フッター、セクション)に置くことが可能になりました。 WP Add picture コマンドを使用することでページにピクチャーを追加することができ、そのあとで細かな位置と他のプロパティを定義することができます。自動アクションを使用することもできますし、あるいは WP GET ATTRIBUTES および WP SET ATTRIBUTES コマンドに追加された多数のセレクターを使用することもできます。 ドキュメントを読む

ピクチャー式のサポート

4D Write Pro はピクチャー式をサポートするようになりました。 ST INSERT EXPRESSION コマンドは画像を返す式であればどんなものもサポートするように拡張されました。式には4D 変数、フィールド、関数、あるいはユーザー定義メソッドを用いることができます。4D メソッドを式の中で使用する場合、使用する前に SET ALLOWED METHODS コマンドを使用してそのメソッドの使用を許可しておく必要があるという点に注意してください。 ドキュメントを読む

フルサイズの背景画像

背景スタイル属性の画像クリップと原点指定のおかげで、4D Write Pro でページ全体をカバーする背景ピクチャーを作成することが可能になりました。この属性は以下の方法でコントロールすることができます:

  • 4D ランゲージ: WP SET ATTRIBUTES コマンドを使用することで背景ピクチャークリッピングと原点の、新しいwk paper box の値を設定することができます。
  • 標準アクション: INVOKE ACTION コマンドを使用してコントロールできます。あるいは、他の標準アクションと同様、デザインモードでコントロールすることもできます。
  • 4D Write Pro ウィジェット: “背景画像”と”ドキュメント”項目を選択すると、クリップと原点オプションでは新しいペーパーボッックスが利用できるようになります。

ドキュメントを読む

 

プログラムでヘッダーとフッターを管理

4D Write Pro のヘッダーとフッターをプログラムで管理することで、テンプレートに基づいて他のドキュメントを作成することが可能になりました。これには、二つのカテゴリーに分類される新しいコマンドを使用します:

  • ヘッダー、フッター、あるいはドキュメント本文内部などのあらゆる参照を取得するコマンド。これらを使用して関連したレンジを取得したり、特定のセクションに対してドキュメントを作成したりすることができます: WP Get headerWP Get body および WP Get footer
  • カーソルを特定の位置に移動させるためのコマンド: WP Get frame を使用するとカーソルが現在位置しているフレームへの参照を取得することができ、また WP SET FRAME を使用するとカーソルを特定のフレームへと位置させることができます。

ドキュメントを読む

 

4D Write Pro ハイパーリンク

wk link url 属性を使用することで、会社のロゴや会社名にリンクを追加することができるようになりました。 WP SET ATTRIBUTES および WP GET ATTRIBUTES コマンドを使用することで、ピクチャー、テキスト、あるいはその両方にハイパーリンクを追加することができます。 ドキュメントを読む

 

タブに先頭文字を使用する

4D Write Pro では、デザインを微調整するための新しい機能があります。先頭文字(例えば目次などで使用される、ドットなどの文字)です。先頭文字は、既存のタブのルーラーエリアをクリックしてコンテキストメニューを開くか、あるいは WP SET ATTRIBUTES コマンドの新しい wk tab stop leadings セレクターを使用することでプログラミングによってコントロールすることができます。 ドキュメントを読む

 

4D Write Pro 水平ルーラー

4D Write Pro エリアの水平ルーラーを使用することで、マージンインデントを調整したり、テキスト、グラフィック、タブ、あるいは他のドキュメントの要素の水平並びを調整することができます。 ドキュメントを読む

4D View Pro

 

ドキュメントを4D View Pro へと変換する

既存の4D View ドキュメントを4D View Pro へと変換するための最初のステップが開かれました。 VP Convert from 4D View コマンドを使用すれば、4D View ドキュメントに保存されているほとんどのプロパティと情報は自動的に変換されます。変換される情報にはドキュメントのストラクチャー、値、フォーマット、スタイル、境界線、そして式などが含まれます。 ドキュメントを読む

 

4D View Pro スプレッドシート

新しい4D View Pro フォームオブジェクトと、新しい4D View Pro コマンドを組み合わせると、4D View Pro スプレッドシートを作成することができます。 VP NEW DOCUMENT コマンドで新規ドキュメントを作成し、 VP EXPORT DOCUMENT を使用してディスクに書き出すか、 VP Export to object を使用してデータベースに保存し、 VP IMPORT DOCUMENT または VP IMPORT FROM OBJECT を使用して再度開くことができます。 ドキュメントを読む

 

リストボックスの自動可変行高

4D View Pro では自動可変の行の高さをサポートしています。これはつまりリストボックスは各行の高さをその中身の宇治で自動的に調整するため、テキストやピクチャー全体が適切に表示され、折り返しなどの問題を避けることができるということです。プロパティリストでは3つの新しいプロパティが利用可能になりました: 自動行高、最小行高、および最大行高です。これらの設定を使用することでデベロッパーはリストボックスが自動行高を使用するか、使用するなら最小行高と最大行高はどのぐらいか、を定義することができます。
これらの設定はまた、 LISTBOX SET PROPERTY コマンドと新しい LISTBOX SET AUTO ROW HEIGHT コマンドを使用することで、プログラミングによっても管理することができます。 ドキュメントを読む

プログラミングをより柔軟に

 

マシンのハードウェア情報を取得 blank

Get system info コマンドを使用すると、実行中のマシンの全てのハードウェア情報とシステム情報の詳細を取得します。取得する情報には以下のものが含まれます: 使用されているOS、プロセッサ、利用可能なRAMの大きさ、などです。 ドキュメントを読む

 

4D Web サーバーの詳細な情報

WEB Get server info コマンドを使用すると、4D Web サーバーについての詳細な情報を取得することができます。このコマンドには任意の引数 withCacheInfo があり、これはWeb サーバーのキャッシュ情報が必要な時には有用です。この属性は、デフォルトでは”False”に設定されています。 ドキュメントを読む

 

ユーザーとプロセスについての詳細な情報

Get process activity コマンドは、接続ユーザーセッションと、関連する実行中のプロセスと、 PROCESS PROPERTIES コマンドではアクセスできない内部プロセスを含むすべてのカレントプロセスのスナップショットを返します。これに加え、systemID 属性によってどんなプロセス(ユーザープロセス、4D プロセス、スペアプロセスなど)でも固有に識別することができます。また返されたセッション/プロセス情報から、接続してからそのプロセスによって消費されたCPU時間(秒単位)とアクティビティパーセント(例: 2%)を計算することもできます。これに加えて、このコマンドは結果の解析を容易にします。 ドキュメントを読む

 

ライセンスについての詳細な情報

Get license info コマンドは、インストールされているライセンスと、使用された/利用可能なライセンスについての詳細な情報を返します。 ドキュメントを読む

 

ファイルとフォルダ拡張子の管理

ファイルとフォルダパスの管理を容易にするために、2つの新しいコマンドが追加されました。 Path to object コマンドは引数に渡したパスについての特定の情報(親フォルダ、ファイルあるいはフォルダ名、ファイルまたはフォルダの拡張子)を格納しているオブジェクトを返します。 Object to path コマンドは、引数として渡したオブジェクトの属性からパスをビルドします。ですから、新しいパスを作成するためには、オブジェクトの属性を編集して再結合するだけです。
今後は、廃止予定となった _o_Document type および _o_SET DOCUMENT TYPE コマンドの代わりにこれらのコマンドの使用が推奨されます。 ドキュメントを読む

 

ログファイルへのアクセスが容易に

Get 4D file コマンドは、ログファイルへとより簡単にアクセスできるように改善されました。これにより、ログフォルダを全て格納したフォルダを取得するのではなく、特定のログファイルを簡単に見つけることができるようになりました。このコマンドのために、いくつかの新しいセレクターが作成されました: Request log fileDebug log fileBackup log file、 Verification log fileCompacting log fileRepair log fileHTTP debug log file および Build application log file ドキュメントを読む

 

Timestamp コマンド

Timestamp コマンドを使用すると、ミリ秒を含む、UTC 時間での正確なタイムスタンプを取得することができます。 ドキュメントを読む

ユーザーエクスペリエンス

 

オブジェクト属性でのコード補完とサジェスチョン

メソッドエディターは、オブジェクト属性でのコード補完を提供するように改善されました。オブジェクトの後にドット文字を入力すると、属性のサジェストの一覧が表示され、これによってコーディングの速さを向上させるとともに、入力間違いや打ち間違えを避けることができます。この自動補完機構は、”4D preferences” パネルからカスタマイズすることができ、ドット文字が打ち込まれたあとにサジェスチョンリストが表示される(オプションをチェックした状態)か、tabキーを使用したときだけに限定する(オプションのチェックを外した状態)かを選択することができます。 ドキュメントを読む

 

Alturaに依存しないWindows用の64-bit 版4D プロダクトライン

全てのWIndows 用64-bit 版4D プロダクトラインは、Altura のMac2Win ライブラリに依存しなくなりました。Windows 用64-bit 版4D Server はこれを完成させる最後のステップで、4D v16 R4 で完了しました。これによって、4D はWindows プラットフォームにおいても内部的に現代的な技術を使用することができ、SDI などの新機能を利用することが可能になっています。 ドキュメントを読む

 

Windows でのSDI サポート

Windows 用4D アプリケーションは、グレーのメインウィンドウ(MDI – Multiple Document Interface)を持ち、全てのアプリケーションウィンドウがその内部に(子ウィンドウとして)表示されていました。 SDI (Single Document Interface)アプリケーションはメインウィンドウを持ちますが、メインウィンドウから独立した多数の追加のウィンドウを開くことができます。これらは他のスクリーンへと移すこともできますし、メインウィンドウが非表示のときも表示されたままにすることができます。Windows 用64-bit 版4D の組み込みアプリでは、両方のモードを使用することができます。 ドキュメントを読む

 

リストボックスのヘルプTips

SET DATABASE PARAMETER コマンドを使用することで、4D アプリケーション内の全てのヘルプTips をプログラミングによって無効化/有効化することができます。また、表示までのディレイと表示される最大の時間をランゲージでコントロールすることができます。しかしそれだけではありません。 OBJECT SET HELP TIP コマンドを使用することで、ヘルプTips のテキストを動的に変更することも可能です。それに加えて、LISTBOX GET CELL POSITION コマンドは二つの任意の引数(xとy座標、ピクセル単位)をサポートするようになり、それに対応するカラムと行の番号を返し、これによってリストボックスの特定のカラム、行、あるいはセルニオイテTipsを表示することが可能です。 ドキュメントを読む

 

プログラムでタブの順番を定義

プログラミングによってフォームにおけるオブジェクトの入力順を定義することができます。これによってユーザーがTABキーを押したときのどのフォームオブジェクトにフォーカスが入るかを管理することができます。二つの新しいコマンド– FORM SET ENTRY ORDER および FORM GET ENTRY ORDER –によって、カレントプロセスにおけるカレントフォームオブジェクトの入力順を動的に設定/取得することができます。 ドキュメントを読む

 

IPv6 関連のユーザーインターフェースの向上

IPv6 ネットワーク設定に関連するユーザーのエクスペリエンスが向上するように、UIが改善されました。 ドキュメントを読む

 

”デザインモードを検索”の結果を書き出し

“デザインモードを検索”ダイアログは、結果ウィンドウに関連する二つの新機能を持って改善されました。まず、実行中の検索を中断するための新しいボタンが追加されました。それに加えて、新しく利用可能になったフィルターオプションによってキープしたい検索結果項目を選択し、選択されていない他の項目を全て削除することができるようになりました。また”デザインモードを検索”の結果は改装リストとして表示されています。検索結果はまた、テキストファイルに書き出して例えばスプレッドシートなどであとで開くこともでき、これによって検索結果を簡単に共有・保管できるようになりました。これを使用するためには、”デザインモードを検索”アクションメニュー内にある、結果を書き出しという新しい項目を選択するだけです。 ドキュメントを読む

 

リストボックスのセレクション強調色をカスタマイズ

行単位、あるいはセル単位での強調色を詳細にコントロールすることが可能になりました。これのために、リストボックスのプロパティリストにおいて新しいオプションが追加されました: セレクションハイライトを非表示です。このオプションがチェックされている時、デベロッパーは利用可能なインターフェースオプションを使用してリストボックスのセレクションを見えるようにしなければなりません。そのあとで、特定の背景色、文字色、フォントスタイルをプログラミングで定義することで、選択された行の表示をカスタマイズすることができます。これは表示されているリストボックスのタイプ(セレクション型あるいは配列型)によって、配列または式を使用することで実現可能です。 ドキュメントを読む

 

MacOS Sierra において4D のデザインモードでウィンドウをタブ分け

macOS Sierra において、アプリケーションは複数のウィンドウを表示するのではなく、ウィンドウをタブ分けすることができるようになりました。64-bit 版4D Developer Edition は、4D環境設定の新しいウィンドウタブオプションによって、デザインモードにおいてこのApple の新機能の利点を最大限生かすことができるようになりました。この設定が有効なとき、メソッドエディターおよびフォームエディターウィンドウは単一のウィンドウにおいてタブで組み込むことができます。 ドキュメントを読む

 

クイックレポートエディターにおけるクロステーブル

64-bit 版クイックレポートエディターは、リスト型レポートに加えてクロステーブル型レポートをサポートするようになり、これによってエンドユーザーにレポートをデザインする際のスムーズなユーザーエクスペリエンスを提供することができます。クロステーブルモードを選択することでレポートをピボットテーブルとして表示することができるようになります。また、32-bit 版4D 製品で作成された既存のレポートも引き続き開くことも可能です。 ドキュメントを読む

 

Web エリアの新しいレンダリングエンジン

よりよいユーザーエクスペリエンスと新しいHTML 機能へのサポートのため、4D は64-bit 版での埋め込みWeb エリアオブジェクトでの内部コンポーネントをBlinkへとアップデートしています(Blink はGoogle Chrome でも使用されています)。Blink は市場に出ているものでは最新で最もメンテナンスがされているレンダリングエンジンです。Blink フレームワークに切り替えたことによるアプリケーションのコードの書き換えは一切不要で、Web エリアの使用には決して何の問題もありません。埋め込みWeb エリアのコマンドとイベントは、サポートされなくなった(無視されるようになった)一部のもの以外は全て以前と全く同じように動作します。埋め込みWebレンダリングエンジンを使用オプションがチェックされている時、4D は32-bit 版ではWebKitを、64-bit 版ではBlink を使用します。 ドキュメントを読む

R-リリースの詳細な説明