Biz/Browser XE互換モード(β版)¶
概要¶
Biz/Browser DT(以下DT)には初版よりBiz/Browser Vエミュレータ機能が搭載されています。
これはBiz/Browser V実行環境そのものをDTのタブに埋め込む形で動作しており、実行エンジンレベルで完全に独立して動作します。
この方式は高い後方互換性と引き替えにDTの機能を利用することができない弊害がありました。
バージョン1.3.0より、DTの実行エンジン上でBiz/Browser XE(以下XE)用に開発されたアプリケーションを動作させる方法として、互換モードおよび互換パッケージ(クラスライブラリ)が追加されています。
実行エンジンの互換モード
XEとDTの実行エンジンの動作差異を緩和するモードです。
DTでは実行エンジンに様々な改良が施されているため、XEとはスクリプトの実行結果が異なる部分があり、それを旧バージョンと同等の解釈に補正します。
互換クラスライブラリ
XEのクラスセットを再現するライブラリです。
DTでは既存のクラスセットを統廃合し、高機能かつ、シンプルで分かり易い体系に再構成を行いました。
しかしそのため、XEのアプリケーションをDTで実行した場合、そのままではクラスが存在しない、プロパティが存在しない、などのエラーが発生し動作させることができません。
XEと同等の機能のクラスやプロパティを実装したクラスセットをDTのクラスセットを拡張する形で実現したものがXE互換クラスライブラリとなります。
XEのアプリケーションは互換クラスを介しDTの機能を実行する形となります。
構造上、アプリケーションはXEの機能(互換クラスライブラリ)とDTクラスライブラリの双方の機能を利用することが可能です。
またスクリプトの実行、オブジェクト描画もDTのエンジンにより実行されるため、最新の実行環境で既存のアプリケーションを動作させることが可能となります。
制約事項
Biz/Browser Vまでの既存の製品では、Windows専用アプリケーションという特性を活かし、Windows固有の機能を活用するように設計されています。
しかし、DTはマルチプラットフォームを指向して開発されており、OS固有の機能差異を無くすため、OS固有機能をなるべく使用しないように設計されています。
そのため、Windows固有の機能を活用した一部の機能は互換クラスライブラリでは再現できません。
互換モードでの初期化¶
下記、いずれの場合も、初期化時に実行エンジンが互換モードに設定され、自動的に互換クラスライブラリがimportされ、名前空間の指定なしに使用可能な状態(using namespace CRS::Compatible::V51::*された状態)になります。
逆に標準のDTクラスセットのusing namespace指定は解除されますので、互換モード上でDTのクラスを使用する場合は明示的に名前空間を指定する必要があります。
XE互換モードでのアプリケーション実行方法¶
ログイン画面からの実行
DT起動時のログイン画面にて、互換パッケージ(β)オプションを選択し、XEアプリケーションへのURLを入力し実行します。
Application.loginメソッドからの実行
TARGET_COMPATTAB(新しくタブを開いて実行)または、TARGET_COMPATWINDOW(新しくウィンドウを開いて実行)オプションを指定します。
コーディング例:
Form frmXELogin {
x = 0;
y = 0;
width = 800;
height = 600;
if (!Application.DESIGNTIME) {
# ここに初期化処理を記述してください。
Application.login("http://aries/biz/TestSuite41/login.crs", Application.TARGET_COMPATTAB);
}
}
Biz/Designer DTでの編集、デバッグ¶
プロジェクト設定
[Biz/Browser XE互換モード(β)]チェックをONにした場合、プロジェクト全体をXEアプリケーションプロジェクトと見なし、ファイル編集、テスト実行を互換モードで実行します。
旧Biz/Designerプロジェクトのインポート
[既存のプロジェクトを開く...]でBiz/Designer XEまたはBiz/Designer Vで作成されたプロジェクト(bdpファイル)を指定した場合、自動的に[Biz/Browser XE互換モード(β)]がチェックされた状態でインポートされます。
bdpファイルは[ファイル名].bakへリネームされ、新しいDT用のプロジェクトファイルに変換されます。
現状プロジェクト個人設定ファイル(bdlファイル)はインポート対象外となりますので、個人設定ファイルに記載されている一部の設定はインポート対象外となります。
XE互換モードとBiz/Browser XEとの差異、制限事項¶
XE互換モードはDTのエンジンとクラスライブラリ上で動作しているため、DTの振る舞い・動作に依存する部分があります。
以下、主な差異について記載します。
実行エンジンの動作差異
ガベージコレクションの実行タイミングの違い
オブジェクトが破棄されることを期待したコーディングは動作タイミングが変わる可能性があります。
例えばFileオブジェクトなどをCloseせず、スコープを抜けた場合、従来とファイルがクローズされるタイミングが変化する可能性があります。
コンストラクタの引数の厳密化
Biz/Browser V以前のエンジンではコンストラクタ引数のチェックが甘く、コンストラクタの引数の個数が仕様通りでない場合もエラーとならず動作してしまうケースがありました。
DTではコンストラクタ引数も厳密に個数のチェックが行われるため、仕様外のコンストラクタ引数を定義している場合エラーとなります。
プロパティ属性の変更
Biz/Browser V以前のエンジンではプロパティ属性として、生成時(定義時)のみ書き込み可能な属性がありました。
DTでは定義時のみ書き込み可能な属性は撤廃されたため、生成後も変更可能となっています。
代入文での暗黙のnew
Biz/Browser V以前では代入文においてnewを省略する記法が可能でしたが、DTではこの記法はエラーとなります。
例:
var s = String("文字列"); /* new String("文字列")と等価 */
参照演算のタイミング
Biz/Browser V以前では参照演算の再評価を常時行いますが、DTではパフォーマンス向上のため変更された変数に関してのみ行うため、常時更新されることを意図した式は期待した結果とならない場合があります。
例:
value &= ^.object.calculateValue();
右辺に更新対象の変数がないため、DTでは初回のみ実行されます。
イベントの発生
イベント発生契機はクラス派生元のDTのクラスの発生タイミングに依存します。
DTではクラス別にばらつきのあったイベントを統一化しており、そのためXEでは発生しなかったイベントが発生する可能性があります。
イベントオブジェクトの内容はXEと互換性を持つよう調整されます。
IMEの確定タイミング
IME未確定状態で他のオブジェクトへフォーカスを移動した場合、XEでは入力がキャンセルされますが、DTでは入力確定されます。
DTの構造による動作差異
Rootオブジェクト
XEではRootオブジェクトはメインウィンドウを表していますが、DTではRootオブジェクトはタブ内の範囲を表します。
そのためRootに対して実行するプロパティ、メソッドに関して反映される動作が異なるものがあります。
XML DOMエンジンの差異
DTとXEで内蔵されるXML DOMエンジンの仕様が異なるため、XMLの規約としては同等の結果でありつつも、実行結果に微細な差異が発生する場合があります。
ウィンドウ制御
Windows APIによりウィンドウを直接制御するXEと異なり、マルチOS共通の制御を行うDTでは、ウィンドウ最大化などの制御、ウィンドウボタンの制御などに、設定順序や組み合わせの制約があります。
ファイル処理
マルチOS共通化のため、ファイルシステムからWindows固有の詳細な情報を取り出すことはできません。
またファイルのロック処理などが異なる場合があります。
ふりがな入力処理
IMEの入力に関してWindows APIを直接制御しているXEと異なり、マルチOS共通ライブラリ経由で制御するDTではふりがな入力処理(TextBox.SetIMECompObjectメソッド)に関して詳細な編集操作は行えません。
暗号化アルゴリズム、および暗号化CARファイル
XEで使用できる暗号化アルゴリズムの内Windowsの実装に依存していないBlowfishアルゴリズム以外には互換性がありません。
またそれに伴い、暗号化されたCARファイルは互換モードでは読み込むことができません。
サポートされる画像フォーマット
マウスカーソル用のWindows固有フォーマットであるcur・aniファイル、アイコン画像用のicoファイルを読み込むことはできません。
改行文字の扱い
文字列表示の際、XEではCR・LFの2文字の文字コードで改行表示が行われますが、DTでは文字列内にCR単独・LF単独の文字であっても改行処理が行われます。
Dialogオブジェクトのモーダル・モードレス動作
XEではDialogオブジェクトがモーダルとモードレスの中間の状態(ウィンドウの切り替えはできるが、ウィンドウ内のオブジェクトを操作できない)でしたが、DTでは一般的なモーダルウィンドウとして表示されます。
TabFrameクラスの複数行タブモード
XEで使用できたTabFrameクラスの複数行タブモード(Arrangement=$MULTILINE)はDT搭載の描画ライブラリの制約上サポートされていません。
Internet Explorer連携機能
Windows固有機能であるInternet Explorerとの連携機能は使用できません。
β版で判明している差異、制約¶
現状β版で判明している差異、制約は今後のリリースで修正される予定です。
接続ライセンス
接続ライセンスに関してはXEのものではなくDTの接続ライセンスが必要となります。
hasConnectionLicenseメソッドは現状常にtrueを返します。
nullや未定義オブジェクトとの演算
null値や、未定義のオブジェクトとの演算結果がXEと異なります。
XEではnull値や未定義オブジェクトとの演算は演算の対象外とされ演算されます。
DTではnull値や未定義オブジェクトとの演算結果はnullとなるため、式の中に未定義オブジェクトが含まれる場合演算結果が異なる場合があります。
エラー・例外処理
DTの基底クラスで発生した例外は現状DTの例外コードとメッセージをもったExceptionオブジェクトが作成されます。
そのため例外コードを判定して処理を行うコードは正常に動作しない場合があります。
値から文字列への変換ルールの違い
値から文字列(String型)へ代入を行う際、自動的に文字列化が行われます。
その際の変換ルールがXEとDTで異なります。
値
XEでの文字列
DTでの文字列
Date型
2020/04/01 00:00:00
2020/04/01
2020/04/01 00:00:00
null値
null
(null)
""(空文字)
ブール値
true
1
true
false
0
false
表示の差異
スクロールバー
ContainerObjectの内積の計算方法の違いのため、サイズぎりぎりに子オブジェクトを配置した場合、スクロールバーが表示される場合があります。
UIデザイン
UIのデザインは基底クラスであるDTのオブジェクトのものが使用されるため、XEの画面とは意匠が異なります。
フォントサイズの差異
フォントサイズ計算方式がXEではフォントセルの高さを基準としていますが、DTではフォント自体の高さを基準としているため同じポイントを指定した場合も微妙にサイズが異なります。
キー入力の優先度
キー入力を行った場合のKeyDownイベントの発生、オブジェクトでのキー処理、AltKeyプロパティ、NextTabKeyプロパティなどの優先順位がXEと異なります。
AutoTab動作
XEではAutoTabプロパティを設定していても、値のペースト操作ではタブ移動は発生しませんが、DTではペースト操作でもタブ移動が発生します。
Rootオブジェクト
RootオブジェクトにはXE固有の制御機能が実装されており、現状では以下の機能は未対応です。
プロパティ
AltKeyPriority
InputTimeout
CacheMode
TitleBar
メソッド
CacheSetup
HardCopy
PrintScreenMask
SetIcon
未実装クラス
以下のクラスはβ版では未実装となります。
一部のクラスは、クラス定義のみが実装されています。
パッケージ
クラス
System
RegexPattern
RegexMatcher
Standard
Graph
GraphAxis
GraphSeries
Doc
FocusOperationEvent
SVGButton
Extension3
TreeView
TreeItem
Extension4
ListView
ListViewItem
ListViewSubItem
ListViewHeader
ProgressBar
DragSource
DroppedEvent
TrayIcon
StyleEdit
Converter
Typesetter
Http
HttpDownload
Mail
Smtp
Pop3
MailMessage
MailHeader
MultiPartMessage
MultiPartMessagePart
PrintStream
PrintStreamDocument
PreviewForm
PrintStreamPage
Security
Encryptor
Decryptor
Hash
XPath
XPathException
XPathEvaluator
XPathExpression
XPathNSResolver
XPathResult