プログラミングに関連した新機能
クラス
4D v18 R3 では4D ランゲージに新しいコンセプトが導入されます。「クラス」です。クラスは、プロパティとファンクションを通じてオブジェクトの振る舞いを定義することができます。クラスが定義されると、このクラスのオブジェクトをコードのどこにおいてもインスタンス化することができます。各オブジェクトはそのクラスのインスタンスとなります。クラスは他のクラスを拡張することができ、そのファンクションから継承します。
4D では2種類のクラスが使用できます。4D コマンドによって返される4Dビルトインのクラスと、cs コマンドによって返されるユーザー定義クラスです。
クラスのインスタンスであるオブジェクトを作成するには、cs コマンドとnew メンバーファンクションを使用します。もう一つ押さえておきたい重要な概念はコンストラクターです。コンストラクターを使用するとデフォルト属性を持ったオブジェクトを作成・インスタンス化することができます。これはオブジェクトが初期化されたときには自動的に呼ばれます。クラスの作成は、”新規”メニュー、ツールバーの”新規”ボタン、あるいは”エクスプローラー”ダイアログから行うことができます。作成するとクラスエディターが表示され、そこでコンストラクターとファンクションを作成することができます。
クラス継承
クラス継承は、他のクラスの振る舞いを継承するクラス定義を可能にします。親 クラスは継承されるクラスです。あるクラスから他のクラスへと継承をするためには、Class extends キーワードを使用します。子 クラスにおいてコンストラクターを何も定義しなかった場合、親 クラスのコンストラクターが自動的に呼ばれるようになります。Super コマンドを使用することで親 クラスのコンストラクターを呼び出すことができます。
単一の4D インスタンスから複数のWeb サーバーを開始
4D v18 R3 では、メイン(ホスト)データベースにおいてWeb サーバーを開始・モニターできるのに加えて、ホストされたコンポーネントからもWeb サーバーを開始・モニターすることができます。新しいWEB server コマンドを使用すると各サーバーごとの個別のオブジェクト経由でWeb サーバーを管理することができるようになります。また任意の引数を渡すことで、どのサーバーを使用するかを定義することができます:
- Web database server を指定するとカレントデータベースWeb サーバー(コマンドが呼び出された場所によってホストデータベースまたはコンポーネントデータベース)を指定して操作します。
- Web host database server を指定するとコンポーネントからホストデータベースのWeb サーバーを指定して操作します。
- Web request receiving server を指定すると、例えばWeb サーバー管理共同メソッドなどにおいて、リクエストを受信したWeb サーバーを指定して操作します。
二つのメンバーメソッドを使用することで、Web サーバーを開始または停止させることができます: start() および stop() です。利用可能なWeb サーバーの一覧を取得したい場合、WEB Server list コマンドを使用すると、ホストデータベースから利用可能なWeb サーバーを表したオブジェクトのコレクションを返します。
改善されたXPATH のサポート
4D v18 R3以降、XPath の実装は標準のものにより準拠した形になり、//、@、*、last() などの式をサポートするようになった結果、よりシンプルに検索することができるようになりました。互換性上の理由から、変換されたデータベースのおいては以前の標準ではない実装がデフォルトで維持されます。変換されたデータベースにおいて拡張された機能を利用したい場合には、データベース設定の互換性 ページ内の標準のXPathを使用する 互換性オプションを選択する必要があります。
オブジェクトとコレクションの改善
OB Copy() コマンドとcollection.copy() メンバーメソッドは、どちらも4D v18 R3 において改善されました。これらは共有オブジェクトまたはコレクションに標準(非共有)のオブジェクトを追加することができるようになりました。これによって、標準のオブジェクトの中身を共有オブジェクトまたはコレクションにコピーしたい場合に、複雑なコードを書かなくても済むようになりました。これに加えて、オブジェクトをハッシュマップとして管理する新しいコマンドが用意されました:
- OB Keys: オブジェクトのプロパティ名をコレクションとして返します。
- OB Values: オブジェクトのプロパティ値をコレクションとして返します。
- OB Entries: キープロパティ(プロパティ名)と値(プロパティ値)を持ったオブジェクトのコレクションを返します。
オフスクリーンのWebエリアを作成する
4D v18 R3 では、WA Run offscreen area コマンドを使用することで、オフスクリーンモードのWeb エリアを使用することができます。これはメモリ内にWeb エリアを作成し、Web エリアにとって有用な情報を引数として受け入れます。引数として渡せるのは以下のような情報です:
- 読み込みURL
- Webエリアの名前
- Web エリアにてイベントが発生した場合に呼び出すフォーミュラ
また、オフスクリーンのWeb エリアでのデバッグを容易にするため、新しいコマンドが追加されました: WA OPEN WEB INSPECTOR です。これはWeb インスペクターを開き、ページが正常に読み込まれたか検証したり、JavaScript コードがエラーを生成したかどうかを調べることができます。
4D Server の管理
4D Server のアクティビティをモニターする
サーバーを遅くしうるオペレーションを検知するために、4D v18 R3 では新しいSTART MONITORING ACTIVITY コマンドが用意されました。これは特定の時間を超えて実行するオペレーションを記録するためのものです。このコマンドは2つの引数を受け付けます。記録し始める時間とモニターするオペレーションです。このコマンドで指定した条件に基づいて記録されたアクティビティは、Get Monitored Activity() コマンドを使用することで全て取得することができます。4D アプリケーションのアクティビティの記録を停止したい、あるいはアクティビティの一覧を消去したい場合には、STOP MONITORING ACTIVITY コマンドを呼び出します。
ORDA
エンティティセレクション用の新しいメソッド
4D v18 R3 では新しいメンバーメソッドが利用できるようになりました:
- extract() メンバーメソッド: エンティティセレクションからデータを抽出することができます。これによってエンティティセレクションのデータから抽出したデータでできた、カスタマイズされたコレクションを作成することができます。取得したいデータクラス属性と、返されるコレクション内でのその名前を指定することができます。
- refresh() メンバーメソッド: ORDA キャッシュ内のエンティティセレクションのデータを無効化し、次にデータが必要になった時にはサーバーからデータの更新をトリガーします。デフォルトではORDA キャッシュは30秒後に失効するため、瞬時にデータを最新版にしたい場合などにこのメンバーメソッドを使用してください。
リストボックスの行の選択
4D v18 R3 ではエンティティセレクションの行の選択を容易にする新しいコマンドが追加されました:LISTBOX SELECT ROWS です。このコマンドは引数としてエンティティセレクションを受け入れ、エンティティセレクションに合致した行が直感的に選択されます。また、それらを選択行に追加/選択行から削除することも可能です。またコレクション型リストボックスの場合には、選択したいオブジェクト参照を格納したコレクションをコマンドに渡します。
プロジェクトデータベース
メソッドのドキュメンテーション
4D v18 R3 以降のプロジェクトモードのデータベースにおいて、メソッド(プロジェクトメソッド、トリガメソッド、プロジェクトフォームメソッド、テーブルフォームメソッド)に対して独自のドキュメントを書いて提供することが可能になりました。ドキュメンテーションはdocumentationフォルダ内の、メソッドまたはフォームと同じ名前のファイル内に保存されます。新しいドキュメンテーションのフォーマットはMarkdown 方式で、これはドキュメンテーションの標準フォーマットであり、改善されたフォーマットスタイルを使用することができます。このフォーマットは4Dエクスプローラー、GitHub、その他のツールなどで表示することができます。このコメントには要素の詳細や、その要素がデータベース内においてどのように動作するかを理解するための必要な情報などを書くことができます。プロジェクトモードデータベースにおいて、ドキュメンテーションファイルを作成・編集するためには、エクスプローラー内で”作成”ボタンをクリックするか、あるいはメニュー項目の”ドキュメント編集”を洗濯します。4D は対応したファイルを、設定されたテンプレートでデフォルトのエディターで開きます。
自動フォントサイズのフォントサイズを定義
4D はそれぞれのプラットフォームに対応した3つの自動テーマを用意しています。4D v18 R3 ではこれらの自動テーマのサイズを上書きすることができ、表示されるテキストをより細かにコントロールすることができるようになります。
4D for iOS
すぐにそのまま使えるテンプレート
プロジェクトエディターでは、40以上のそのまま使えるテンプレートが使用できます。このギャラリーはGitHub上で利用可能な最新のテンプレートの動的なリストに基づいています。テンプレートを使用するためには、リストフォーム/詳細フォームの両方において”テンプレートをもっとダウンロードする”アイコンが用意されています。このアイコンはフォームセクションのテンプレートのリストを表示します。テンプレートを選択すれば、4D for iOS が自動的にインストールを行うので、あとは自分の用途に応じて改善をするだけです。
Eメール
EメールをMIMEフォーマットでダウンロードする
4D v18 R3 ではEメールをオリジナルの、受信した時のままのフォーマットで保存することができるコマンドを用意しています。POP3_transporter.getMIMEAsBlob( ) メソッドを使用すると、特定のメッセージのMIME コンテンツを格納したBLOB を取得することができるので、データベース内、または違う場所などに保存することができます。
4D Write Pro
表とその要素のための新しい標準アクション
4D v18 R3 では4D Write Proに新しい自動アクションが追加されました。これらのアクションは表、行、そしてセルに対して実行することができます。これらのアクションによって表の境界線のタイプ、セルの背景色、行の縦方向並び、ドキュメント内での表の揃え、余白、パッディング、その他40以上のオプションを定義することができます。結果として、4D Write Pro のインターフェースは表の表示能力という意味において大きく改善したと言えます。表、行、カラム、セルの表示をそれぞれ変更するために、4つの新しいボタンが追加されています。
プロテクト属性のサポート
4D v18 R3 では、4D Write Pro ドキュメントの一部(または全部)を”編集不可”に設定することができます。このプロテクションには2つの段階があり、初めに、ドキュメントのどの部分がプロテクトされるかを定義します(デフォルトでは、全ての部分がプロテクトされます)。次に、ドキュメントプロテクトフラグを有効化し、プロテクトを設定した部分が実際にプロテクトされるように する必要があります。この目的のために、WP SET ATTRIBUTES コマンドで使用できる新しい属性が2つ作成されました。wk protected はドキュメントに属するほぼ全ての種類のターゲットに対してプロテクト属性を適用し、wk protection enabled は全体のプロテクションを有効化/無効化します。
4D View Pro
ワークシートのオプションをより細かくカスタマイズ可能に
新しく追加されたVP SET SHEET OPTIONS コマンドを使用すると4D View Pro エリアの様々なシートのオプションを定義することができるようになります。これを使用すると、例えば以下のようなことを設定できます:
- ワークシートをプロテクトし、そのシート内のセルを編集不可にする
- ワークシートのタブ、固定行、グリッド線、選択範囲の背景と境界線をカスタマイズする
- ワークシートのグリッド線と行/カラムヘッダーの表示/非表示を切り替える