暗号化
4D v17 R5 では、4D データベースを暗号化する、ビルトインされた新機能が導入されました。データは全テーブルあるいは選択されたテーブルに対して、コードでまたはユーザーインターフェースを通して暗号化することができます。4D の暗号化ツールはパスフレーズに基づいています。パスフレーズは文、あるいは言葉のコンビネーションから構成されており、これを使用して、AES アルゴリズムでデータを暗号化するためのバイナリー暗号化キーが生成されます。暗号化されたデータファイルを使用するためには、パスフレーズかバイナリー暗号化キーが必要になります。
一つ注意しなければならない重要なポイントがあります: 暗号化キーを紛失してしまったら、回避策はありません。データは永久にロックされたままになってしまいますので、気をつけて保管してください!
MSC経由で暗号化
新しいEncryptable 属性が、デザインモードのテーブルで利用可能です。これはあるテーブルが暗号化可能だと指定することで、そのテーブルの暗号ステータスを設定します。データの暗号化の準備ができたら、一番簡単な暗号化の方法はMSC の新しい暗号化ページ経由で実行することです。このページではデータの暗号化をモニターするために必要な機能が全て提供されています。このページを使用してデータファイルを暗号化または復号化することができる他、パスフレーズを変えて再暗号化することもできます。
4D コマンドで暗号化
MSC に加えて、4D v17 R5 では暗号化に必要な大部分の機能をサポートするために設計されたコマンドたちを用意しています。例えば、Encrypt data file() コマンドを使用して暗号化を管理したり、あるいはprovideDataKey() コマンドで開いているデータファイルのデータ暗号化キーを提供したりすることができます。あるいはencryptionStatus() コマンドを使用してデータファイルが暗号化されているかどうか、有効なデータ暗号化キーが提供されているかどうかをチェックすることもできます。コマンドの完全な一覧はDoc Center でご覧いただけます。
4D for iOS – PREVIEWー
アクション
アクションが4D for iOS で使用できるようになりました。これによってモバイルアプリをより操作しやすくなります。これらのアクションを使用すると、指をスワイプしたり、メニューからアクションを選択することで、ユーザーがタスクを「完了」や「済み」に設定したりチェックするイベントにフラグをつけたりといったことができるようになります。新しいOn Mobile App Action database データベースメソッドを使用すれば、全てのアクションを宣言することもできます。それに加えて、プロジェクトエディターにはAction セクションが追加されたので、アクション要素(名前、アイコン、短い名前/長い名前、スコープなど)をここで定義することもできます。
インクリメントデータ同期
4D v17 R5 では、4D for iOS にインクリメントデータ同期がそなわっています。これはデータセット全体を常にデバイスに送信し続けるのではなく、更新された、あるいは削除されたレコードを常に記録しておいて、その変更されたデータだけをデバイスに更新するということです。これに加えて、データはアプリの起動時だけではなくて、アプリが最前面に来た時、あるいはユーザーアクション(スワイプなど)のタイミングでも更新されるようになります。
N対1リレーション
4D v17 R5 では、4D for iOS はN対1 リレーションをサポートします。リレーション名に分かりやすい名前をつけることでプロジェクトのストラクチャーの定義をシンプルにすることができます。リレートされたフィールドの短い名前/長い名前を変更し、アイコンを選択し、それにクエリを適用してみましょう。
Eメールの送信
SMTP 通信のログ
4D v17 R5 ではEメールのログの新機能を提供しています。SMTP New transporter コマンドです。これはSMTP サーバー(exchange やgmail など)とクライアント間の通信を作成し、その通信の内容を全て、平文の、暗号化されていないテキストで記録します。新しいlogFile プロパティも追加され、これにはSMTP 接続のために定義されたログファイルのフルパスが格納されます。ファイルは二つのバージョンで作成することができます: 一つは標準のバージョン、もう一つは拡張されたバージョンです。どちらのバージョンもSET DATABASE PARAMETER コマンドによってトリガーすることができます。
カスタムのメールヘッダー
4D v17 R5 では新しい5つの定義済みのヘッダーをメールオブジェクト内に直接提供します:
- messageId: 特定のメッセージのバージョンを参照する、単一の固有のメッセージ識別子。
- inReplyTo: カレントのメッセージが返信している、元となるメッセージのメッセージ識別子。
- references: カレントメッセージが関連している他のメッセージのメッセージ識別子のコレクション。
- keywords: 受信者にとって役立つかもしれない重要な単語やフレーズを格納しているオブジェクト。
- comments: メッセージ本文のテキストに関する追加のコメントを格納します。
他のヘッダーが必要であれば、headers コレクションを使用して特定のSMTP ヘッダーをEメールに追加してください。
旧式の文字セットのサポート
4D v17 R5 では、Eメール送信に旧式のエンコーディングを使用することもできます。具体的には、日本語にはISO-2022-JP、英文にはISO-8859-1 です。SMTP New transporter コマンドは、ヘッダーや本文で使用したいエンコーディングのタイプを指定するための引数を受け付けます。
ORDA
値に対する命名プレースホルダー
4D v17 R5 では、値に対する命名プレースホルダーのおかげで一般的なORDA クエリをより簡単に書けるようになりました。これらのプレースホルダーはクエリ設定の中でオブジェクト引数として提供され、クエリ文字列が評価される際に実際の値で置き換えられます。
属性パスに対する命名プレースホルダー
また、属性パス(テーブルのフィールド名)に対してもプレースホルダーを使用することができます。2つの種類のプレースホルダーが使用できます: インデックスプレースホルダー – クエリ文字列の中で :paramIndex (例. :1, :2,… この場合1ずつインクリメントしてきます)として、それに対応する値が連続したvalue 引数として提供されます。もう一つは命名プレースホルダーで、 – :paramName として挿入され、実際の値はクエリ文字列内のオブジェクト引数の属性として提供されます。
クライアント/サーバーモードでのパフォーマンスの最適化
ORDA を使用して、クライアント/サーバーモードでの巨大なテーブル(特にリレーションを持つもの)にアクセスすることは、4D v17 R5 で格段に素早くなりました。リストボックスやコードのループ内(例: While や For each など)でエンティティセレクションを使用する際、使用されたフィールドが自動的に解析され、ネットワーク通信が最適化されます。ネットワークやレコードのサイズにもよりますが、LAN でのパフォーマンスは2,3倍に向上し、WAN であれば30倍もの速度向上が見込めます。そしてそれ以上に良いことは、コードを書き換える必要はなにもない、つまり自動的に行われるということです。
劇的な改善点
改善されたパフォーマンス
常に稼働し続けているサーバー(例: 多数の並列ユーザーまたは並列プロセスがレコードにアクセスする一方で他のユーザーが同じテーブルのレコードを編集/作成しているようなサーバー)では、改善された内部ロック機構によってパフォーマンスを劇的に向上させることができます。これは特に高CPU使用率の状況においては格段に早い(4〜8倍もの)スピードをもたらすことがあります。内部的には、スレッドがマイクロ的なロックを待っている時間が減るからです。
ライブラリーのアップデート
4D v17 R5 は64-bit 版のみになるため、複数のライブラリーがアップデートされました: ハンスペルv.1.7.0 (スペルチェッカー)、PHP v7.3.1、CEF 3626 (Chrome Foundation、内部Webエリア)、OpenSSL v1.1.1 (これによってTLS 1.3がサポートできます)そしてICU 63.1 (新しいUnicodeのバージョンです。なおこのアップデートによって、テキスト、文字、オブジェクトフィールドの再インデックスが必要になります)などです。
マルチクライアントインスタンス
4D v17 R5 では、同じコンピューター上で複数のクライアントを実行し、同じ4D Server に同時に接続することができるようになります。それぞれのクライアント接続は個別のキャッシュフォルダを持ち、それぞれの接続のIP アドレス、ポート、ハッシュコードなどが格納されます。また、同様に、同じマシン上にある複数のクライアントを異なるマシン上の複数のサーバーへと接続することもできます。これには何の追加設定も要りません。
クイックレポートのユーザーインターフェースは”保存 / 名前をつけて保存” ボタンとツールTipによって改善されました。“保存”ボタンを選択すると、画面上のクイックレポートのバージョンがそれに対応するファイルの最後に保存されたバージョンを上書きします。“名前をつけて保存”ボタンを選択すると現在のレポートを異なる名前のファイルに保存することができます。これに加えて、ツールTipによって並べ替えの順番: 昇順と降順を選択できるようになります。
4D ランゲージ
4D のオブジェクトフィールドをSQL エンジンで読むことが可能に
4D v17 R5 のSQL エンジンは、4D オブジェクトフィールドが読めるようにアップデートされました。オブジェクトフィールドの中身を見るために、SQL CAST 関数が拡張され、フィールドをJSON 形式で返すようになりました。
オブジェクト記法でファイルとフォルダを扱う
4D v17 R5 ではオブジェクト記法経由でファイルとフォルダを扱うコマンドを提供しています。新しいFolder コマンドによって、定数、POSIX パス、あるいはプラットフォームパスに応じてフォルダオブジェクトを作成することができます。フォルダオブジェクトにはプロパティ(例: name、modificationDate、modificationTime)とメソッド(例: create()、moveTo()、rename()、delete())があり、これによってフォルダの作成と編集が可能になります。フォルダと同様、File コマンドを使用するとファイルを管理することができます。新しいファイルオブジェクトを使用するとファイルの属性にアクセスし操作することができるようになります。ファイルメソッドを使用することでファイルのコンテンツを読み、ファイルを移動したり削除したりすることができるようになります。
Web プロセスについての情報が増加
4D v17 R5 ではWeb プロセスで使用されるURL に関する情報が利用可能になります。この情報は二つの方法で取得可能です。一つは4D Sever 管理ウィンドウを使用する方法、もう一つは4D ランゲージのGet process activity コマンドを使用する方法です。プロセスタイプがWeb プロセスの場合、新しい”url” 属性がプロセスオブジェクトに追加されます。
4D ユーザーアカウントに別の名前を定義する
カレント4D ユーザーアカウント名の代わりに使用するカスタムの名前を定義する新しいコマンドが追加されました:SET USER ALIAS です。このコマンドは文字列を引数として受け取ります。文字列(alias)は4D 環境において4D ユーザー名を置き換えます。kのコマンドは4D リモートまたは4D シングルユーザー版アプリケーションでのみ呼び出し可能で、4D Server では使用できません。エイリアスを使用することで、独自のユーザー/パスワードシステムを使用したり、あるいは4D にビルトインされたユーザー識別システムを利用しながらも、Active Directory やLDAP といった外部ユーザーディレクトリを使用することができるようになります。
デバッグログの改善
4D v17 R5 では、SET DATABASE PARAMETER コマンドが改善され、特定のプロセス、または特定のメンバーメソッド(コレクションまたはオブジェクトメソッド)だけを対象にログを取ることができるようになりました。新しいセレクター(Current process debug log recording)が追加され、これによってカレントプロセスのデバッグログを開始し、“4DDebugLog_pX_Y.txt” という名前のログファイルを4D logs フォルダに作成します(このファイル名におけるXはプロセスのPIDで、Yはシーケンスファイル番号です)。メンバーメソッドのログを取るためには、新しく32というオプションの値を受け取るようになった Debug log recording または Current process debug log recording セレクターを使用します。
4D Write Pro
4D メソッドへのリンク
4D v17 R5 では新しいコマンド、WP SET LINK が追加されました。これを使用するとURL を設定できる上に、4D アプリケーションから(引数も使用可能)、またはドキュメントのターゲットブックマークからメソッドを走らせることができるようになります。新しいWP Get links コマンドはドキュメント内にある全てのリンクのコレクションを一回の呼び出しで返します。コレクションのそれぞれのリンクはオブジェクトであり、属性にリンクの詳細な情報が格納されています。
タブ設定
4D v17 R5 以降、文字列のコレクション、数値のコレクション、あるいはオブジェクトのコレクションを使用してタブを設定することができるようになりました!デフォルトのタブ値を編集したい場合、オブジェクトと(この目的のため用に追加された)新しいwk tab default 定数を使用してください。
プログラミングでビュープロパティを管理
4D v17 R5 ではビュープロパティをプログラミングで管理できるようになります。WP SET VIEW PROPERTIES コマンドを使用すると4D Write Pro エリアのビュープロパティを動的に設定できるようになります。この設定はWP Get view properties コマンドを使用することで全てのビュープロパティを格納したオブジェクトとして返すこともできます。
ターゲットの追加と、コマンドの改名
以下のコマンドは4D v17 R5 で第1引数に任意の種類のターゲットを受け取るように改善されました。以前同様にレンジを使うこともできますが、参照(ヘッダー、本文、フッター)、要素(ピクチャー、段落)、あるいはドキュメントをターゲットとして使用することもできるようになりました:
- WP SET TEXT
- WP INSERT BREAK
- WP INSERT DOCUMENT
- WP INSERT PICTURE
- WP Insert table
- WP SET ATTRIBUTES
- WP GET ATTRIBUTES
また、多数のコマンドが改名されています:
以前の名前 | 新しい名前 |
WP Create Paragraph range | WP Paragraph range |
WP Create Picture range | WP Picture range |
WP Create range | WP Text range |
WP Create Table range | WP Table range |
WP Get bookmark range | WP Bookmark range |
WP Get selection | WP Selection range |
4D View Pro
リボンスタイルのツールバー
4D v17 R5 では4D View Pro のユーザーインターフェースを強化する、リボンスタイルのツールバーが提供されます。これを使用することで4D View Pro の機能を複数のタブにまとめることができ、機能を見つけやすくなる上に異なるコマンドに素早くアクセスできるようになります。また、このツールバーにはPDF およびCSV 書き出しオプションといった新機能が追加されているという点も見逃せません。
アクティブなセルまたはセレクションを管理する
4D v17 R5では、ドキュメント内のアクティブなセルまたはセレクションを設定・取得するためのコマンドが追加されています:
- VP Get active cell
- VP Get selection
- VP SET ACTIVE CELL
- VP SET SELECTION
- VP ADD SELECTION
- VP RESET SELECTION
また、4D View Pro エリア内の特定の位置(例: 左上端、右下端など)にあるセルを見たい場合には、VP SHOW CELL コマンドを使用することができます。