12 Athens - Release 3
メインページ への移動
以前のリリースでの新機能 への移動
RAD Studio 12.3 Athens の更新版がリリースされました(2025年3月12日)。
- バージョン 12 Athens での新機能についてはこちらから参照してください。
- バージョン 12 Athens - Release 1 での新機能についてはこちらから参照してください。
- バージョン 12 Athens - Release 2 での新機能についてはこちらから参照してください。
RAD Studio 12 Athens - Release 3(別名 12.3)がインストール可能となりました。 RAD Studio 12.3 は、製品全体にわたる既存機能の改善と、新機能の追加に重点をおいています。
RAD Studio 12.3 は、品質向上に特にフォーカスしていますが、C++ ツールチェーンと IDE においては機能拡張が顕著に行われています。 主な機能と品質向上が行われた領域は次のとおりです:
- 64 ビット IDE の最初のリリース
- C++ Clang ツールチェーン
- Android API レベル
- Smart CodeInsight
- RAD Studio WebStencils
- ライブラリ
目次
- 1 12.3 における製品領域での主な強化点
12.3 における製品領域での主な強化点
64 ビット IDE 初期リリース
RAD Studio 12.3 では、64 ビット IDE の初期リリースが行われています。[プラットフォームの管理]ダイアログ ボックスで該当ションを選択してインストールします。IDE の 64 ビット バージョンを実行するため、スタート メニューに [RAD Studio(64 ビット初期リリース)] ショートカットがあります。
この 64 ビット IDE の初期リリースは、Win64 の通常の Windows 開発に役立つように設計されています。次の機能がサポートされています:
- コンパイルおよびデバッグ用 Delphi Win64 / C++ Win64 の最新プラットフォーム
- VCL / FMX アプリ、パッケージ、DLL、静的ライブラリ、およびコンソール アプリケーション
- VCL / FMX のフォーム設計
- コード編集
- FireDAC および dbExpress
- 64 ビット データベース ドライバ
ターゲット プラットフォーム
本リリースでは、64 ビット IDE 初期リリースは、コンパイルおよびデバッグ用の Delphi Win64 および C++ Win64 Modern ターゲット プラットフォームをサポートします。
新しい 64 ビット IDE でプロジェクトを開く際、Win64 のターゲット(Delphi Win64 または C++ Win64 Modern)が見つからないと、自動的に追加およびアクティブ化されます。サポートされているターゲット プラットフォームの詳細については、64 ビット IDE のページを参照してください。
Win64 以外のプラットフォーム
Win64 以外のプラットフォーム(Windows 32 ビット、Linux、iOS など)のプロジェクトは、いずれも 64 ビット IDE で開くことができます。ただし、それら Win64 以外のプラットフォームは 一時的に非表示 となります。初期リリースでは、Win64 プラットフォームのみが使用可能です。
32 ビット IDE でプロジェクトを保存して再度開くと、それらのプラットフォームが再び表示されます。
IDE の 64 ビット ビルドでプロジェクトに変更を安全に行い(プロジェクト オプションなど)、後で 32 ビット IDE でプロジェクトを開くことができます。
Delphi デバッガ
64 ビット IDE では、Delphi Win64 に対して新しい LLDB ベースのデバッガを使用するようになりました。
また、IDE パッケージは TDS ではなく RSM ファイルでビルドされています。
このデバッガは、32 ビット IDE から Delphi Win64 アプリをデバッグするために使用されるデバッガとは異なるため、デバッグの使用感も異なります。IDE 自体と同様、これは新しい Delphi デバッガの最初のリリースです。
C++ / Delphi のデバッグ
C++ ユーザーは、パッケージに動的にリンクする際、Delphi コードもデバッグできるようになりました(すべてのパッケージと同様に、.rsm ファイルを使用)。つまり、C++ から Delphi コードにステップ インでき、その逆も可能です。1 つのプロジェクトで、C++ ソースと Delphi ソースの両方が同じモジュールにリンクされている場合(これはパッケージへの静的リンクを含む)、Delphi ソースはデバッグできません。このバージョンでは、動的パッケージ リンクが必要です。
レジストリと設定
インストーラで 64 ビット IDE を選択すると、32 ビット バージョンと 64 ビット バージョンの両方が一緒にインストールされます。ほとんどの設定は両方の IDE バージョン間で共有されます。これにより、実行中のバージョンに関係なく、プロジェクト リストを同一に、またテーマの設定や、その他の一般的なオプションを同じにしたりすることができます。
一部の特定キーには、2 つのバージョンがあります。64 ビット IDE で使用されるキーには、接尾辞「x64」が使用されます。
コンポーネントとパッケージ
設計時のパッケージが 64 ビットになりました。64 ビット IDE でパッケージを開くと、64 ビット Windows プラットフォームがまだ存在しない場合は追加されます。
その他の 64 ビット IDE 機能
本リリースは Win64 のみを対象としていますが、その他大部分の IDE 機能は想定どおりに動作します。すべてのコンポーネントが存在し、フォーム設計(VCL と FMX の両方)、コード編集、デバッグ、データベース ドライバ、データベース コンポーネント(FireDAC、dbExpress の使用を含む)などの標準 IDE 機能が、想定どおり動作します。
以下は、64 ビット IDE 機能の一部のリストです:.
- 64 ビット IDE は、コンパイル時に Delphi コンパイルの 64 ビット ビルドを使用します。
- Windows 64 ビット Modern プラットフォームは、IDE のビットに対して、64 ビット コンパイラ、リンカ、およびデバッガ バイナリを使用します。
- 高エントロピー ASLR は、コード エディタ DLL、すべての IDE パッケージ、および IDE 自体に対して有効になっています。
- デバッガ設定は、64 ビット IDE については、別のレジストリに格納されます。
64 ビット IDE のこの初リリースを出荷できることを嬉しく思います!
Android ターゲット API レベル 35
RAD Studio バージョン 12.3 は、Delphi for Android のターゲット API レベルを、レベル 35 に更新しています。 RAD Studio 12.3 は、ストア アプリの要件である API レベル 35 を 2025年8月までにとターゲットに設定しています。目標は新しい API レベルに達することでしたが、必要な変更には複数のテクノロジが含まれており、いくつかの関連要件を考慮してツールチェーンを更新する必要がありました。詳細は次のとおりです:
- RAD Studio 12.3 では、NDK 27.1.12297006 Android SDK コンポーネントをインストールするため、デフォルト Android SDK インストールをアップグレードしています。
- 本リリースでは、デフォルト Android SDK インストールを、コマンドライン ツール Android SDL コンポーネントのバージョン 16.0 をベースにするようアップグレードしています。.
- Android NDK 27 への移行後、Android SDK 設定ダイアログは、適切な Android SDK オプションのデフォルト値を自動的に設定します。次の図は、機能マネージャの画面のオプションを示しています:
その他の Android の更新
以下は、Android での変更と改善の一覧です:
- 本リリースでは、DCCAARM および DCCAARM64 コンパイラを更新して、ターゲット エミュレーションを外部リンカに渡すようにしています。
targetSdkVersion
マニフェスト属性のデフォルト値は 35 となりました。- ユーザーは、「アプリケーション ストア」ビルド タイプに対するように、「開発」ビルド タイプに対してもプロビジョニング オプションを指定することができます。カスタム オプションが指定されない場合、「開発」ビルド タイプのデフォルトのプロビジョニング オプションが使用されます。
- 本リリースでは、バックトレース ルーチンをサポートするため、
--allow-rosegment
オプションを、Delphi Android コンパイラに追加しています。新しい--allow-rosegment
コンパイラ オプションでこれを無効にすることができます。 - 本リリースでは、FireMonkey フレームワークが依存する Jetpack Core ライブラリ バージョンをアップグレードしています。
この新しいリリースでは、Android 15 の要件へ 1 つのソリューションとして、16 KB ページ サイズのサポートを追加しています。
- DCCAARM および DCCAARM64 の Delphi Android コンパイラには、新しいオプション --max-page-size:<pageSize> があります。
- DCCAARM コンパイラは、デフォルト値の 4096 を最大ページ サイズとして使用します。
- DCCAARM64 コンパイラは、デフォルト値の 16384 を最大ページ サイズとして使用します。
- 同様に、{$MAXPAGESIZE <intconst>} 指令でも設定できます。すべてコンパイラはこの指令を認識しますが、Android コンパイラ以外はこれを無視します。これは、プロジェクト(.dpr)やパッケージ プロジェクト(.dpk)のソース ファイルで指定できます。これは、ユニット ソース ファイルにある場合に無視されます。
- 指定された値は、符号なし 64 ビット値として扱われ、外部リンカに渡されます。Delphi コンパイラはその妥当性をチェックしませんが、外部リンカは不正な値をエラーとします。
領域別の品質強化
本リリースでは、主に品質について重点が置かれており、次のセクションでは一部の強化について説明します。
C++ Builder Clang コンパイラ
命令セットのサポート
RAD Studio バージョン 12.3 命令セットは AVX2 までが正式にサポートされています。これには、SSE2(Win64 でのデフォルト)、SSE3、SSSE3、SSE4.1、SSE4.2、AVX、AVX2 が含まれます。
より新しい命令セットを選択すると、以前の命令セットが暗黙的に有効になります。
これにより、コンパイラはコードに最適な命令セットを使用して最適化できます。特定の命令セットを使用してコンパイルする場合、その命令セットをサポートしていない CPU ではアプリケーションが実行されないことに注意してください。デフォルトの命令セットは SSE2 (Windows 64 ビットの標準)のままですが、お使いのアプリでさらにパフォーマンス上のメリットを提供できることを嬉しく思います。
コンパイルのパフォーマンス
12.3 リリースでは、コンパイラの速度とパフォーマンスを向上させています。テストの結果、一般的なケースでコンパイラが最大 15% 高速化しました。BOM 付き UTF-8 でフォーマットされたソース ファイルでは、コンパイラ速度はさらに最大 5~6 % 向上します。結果は使用環境によりますが、本リリースではコンパイル速度が 20% 向上する可能性があります。Modern ツールチェーンで使用される STL と RTL は、BOM 付き UTF-8 でフォーマットされています。
サニタイザと安全性
プロジェクト オプション ダイアログには、[安全性]セクションが新たに追加されました。これは、ソース コードとアプリケーションの安全性と品質を、有効かつ向上させるための設定です。本リリースでは、2 つの新しい設定が追加されています:
- アドレス サニタイザ: 解放後の使用、二重解放、境界外へのアクセスなど、さまざまなメモリ エラーを検出します。
- 未定義動作サニタイザ: これは、動作している「ように見える」ものの、実際には C++ 標準で定義されていない動作が原因で、サイレント エラーや予期しない動作が発生する可能性がある、さまざまな操作を検出します。
例としては、符号付き整数のオーバーフロー、データ型に対して幅が広すぎるビットシフト、さまざまな方法での不正な逆参照ポインタ、などがあります。両者とも、アプリの動作のランタイム チェックを有効にします。これら 2 つのサニタイザの詳細については、次の Clang ドキュメント ページを参照してください: 「アドレス サニタイザ」、「未定義動作サニタイザ」。
サニタイザは C++ コードでのみ、問題を検出する点に注意してください。両方とも有効になっている場合、それを変更した際にはプロジェクトをクリーンし再ビルドする必要があります。これは、サニタイザのサポートあり、なしのオブジェクト ファイルが、一緒にリンクされてはいけないためです。
品質
新しいツールチェーンがリリースされたため、本リリースでは主に品質に重点を置いています。
- ウィザードはサービス アプリケーションの正しいコードを生成し、Modern プラットフォームでコンパイルできるようにします。サービス プロジェクトがあり、「
use of undeclared 'service controller
」といったエラーが発生する場合、新しいプロジェクトを作成してコードを追加してください。 - 接尾辞
$(Auto)
は、C++ パッケージで機能し、他のテキストと混在させられます。たとえば、$(Auto)x
は「...290x.bpl」ファイルを生成します。 - フラグ
-ffunction-sections
and-fdata-sections
は省略可能となり、デフォルトではオフとなりました。これらは最終バイナリのサイズを縮小するのに役立ちますが、場合によっては必要なセクション(一部のサードパーティ ライブラリが依存している)を削除することがあります。アプリを最適化するために提供されているすべての設定を使用し、コードベースに最も適したものをテストすることをお勧めします。 - .cc 拡張子を持つ C++ ファイルを使用すると、コンパイル時に期待どおりに動作します。
その他のさまざまな品質問題も解決されており、すべての C++ プロジェクトで Modern ツールチェーンを使用することをお勧めします。
さらに、IDE に読み込まれる設計時のパッケージに対して、既存の C++ パッケージ サポートがサポートされています。
Delphi LSP
Delphi LSP の機能強化では、品質向上に重点が置かれています。
- LSP のコード解析時の主要なコンパイラの問題が解決されました。
- 32 ビット IDE を使用し、Delphi LSP エンジンの 64 ビット バージョンの使用が有効になっている場合、Windows 以外のプラットフォームがアクティブであると、次の警告メッセージが表示されます:
“[LSP] Currently the 64-bit LSP server only supports targeting Windows platform”.
BLE と Bluetooth
12.3 リリースでは、サポートされているすべてのプラットフォームでの Bluetooth サポートの品質向上に重点を置いています。
Smart CodeInsight の改善
RAD Studio 12.3 リリースでは、バージョン 12.2 で導入された AI エンジン統合の品質の向上に重点を置いています。このセクションでは、Smart CodeInsight の新しい実装と改善について説明します。
バージョン 12.3 よりでは、Smart CodeInsight の設定ダイアログでは、AI エンジンから取得された使用可能なモデルのリストが表示され、これは最初に設定する必要があります。
次の例は、OpenAI で利用可能なモデルの一覧です。
Smart CodeInsight チャット ウィンドウは、Markdown をサポートするようになり(API 呼び出しによって返された場合)、より読みやすい情報を提供します。実装では、HTML および Markdown プレビューのエディタで既に使用されている、Delphi HTML コンポーネントを利用しています。次に例を示します:
RAD Studio バージョン 12.3 では、チャット ウィンドウからエディタ コンテキストを読み取ることができ、現在選択されているテキストまたはユニット全体を挿入するボタンがあります。ボタンの他に、チャット ウィンドウから $SELECTION
や $UNIT
トークンを使用することができます。たとえば、チャット ウィンドウに 「Explain this code $selection
」と入力すると、アクティブ AI エンジンに現在選択されているソース コードと共にリクエストが送信されます。
エディタで選択されているテキストの現在のモデルを使用し、コマンドを送信するが、その結果はエディタではなくチャット ウィンドウに返す機能が追加されました。
その他の注目すべき改善は以下の通りです:
- RAD Studio バージョン 12.3 では、AI をベースとした新しい Find Unit コマンドが追加されています。特定のクラスまたはデータ型を使用できるようにするために、uses ステートメントに追加するユニットを AI エンジンに問い合わせます。
- Smart CodeInsight によってエディタに追加されたテキストを削除するには、[元に戻す]機能を使用します。
- Smart CodeInsight の構成の URL と追加パラメータは、一部のコード編集ルールの対して検証されます。
- Smart CodeInsight プラグイン パラメータにリクエスト タイムアウトが含まれるようになりました。
WebStencils の改善
RAD Studio 12.2 で導入された HTML テンプレート ライブラリである WebStencils は、次のように拡張されました:
- RAD Studio 12.3 より、WebStencils は、次のような構文の入れ子クラス/オブジェクトへのアクセスを提供しています:
@MyObject.SubObject.PropertyName
- 同じ構文を使用して、入れ子になったデータセット内のサブテーブルにアクセスできます:
@MyDataSet.DataSetField.SubField
.
- WebStencils 指令に関連しない場合、
@
シンボルの処理は、より柔軟になります。ヘッダーでなど、一部のユースケース シナリオでは、シンボルを 2 重にする必要はありません。 - 本リリースでは、RAD Server や WebStencils での UTF8 文字の処理方法が改善されました。
FireDAC とデータベース
FireDAC とデータベース アクセス全般に関して、主な変更点は次のとおりです:
- 本リリースでは、TFDTable コンポーネントの SQL クエリ マッピングへのフィルタリングが改善されました。
- Refind データベース コンポーネントの変換ツールでは、IBX から FireDAC への移行スクリプトが提供されるようになりました。使用方法などの詳細については、ドキュメント ページを参照してください。
- 本リリースでは、Oracle DRCP(データベース常駐接続プール)をサポートしています。
- 本リリースでは、MySQL 8.4 への接続をサポートしています。
MS SQL サーバー
- Microsoft SQL Server 2022 の公式サポート
- FireDAC での MSSQL シーケンスのサポート
- 同じテーブル タイプの複数の TVP パラメータを持つ、MSSQL のストアド プロシージャのサポート
Mongo DB
- 本リリースでは、FireDAC のサポートが更新され、バージョン 3.0 から 8.0 が含まれるようになりました(これには、クライアント DLL libbson および libmongoc をバージョン 1.29.0 に更新する必要がありました)。
- MongoDB データベース(FireDAC)に接続するための新しいパラメータ
- UseSRV - DNS で構成された利用可能なサーバーのリストを有効にするには、True を指定します。MongoDB Atlas に接続する際には、これを True に設定する必要があります。
VCL の品質
VCL では、リリース 12.3 で VCL スタイルに関する問題に対応しています。本リリースでは、また、VCL コントロールの HighDPI やその他の一般的な UI の問題にも対応しています。他の問題の中では、次の点が改善されています:
- フレーム上でのスタイル付き TStatusBar
- スタイル付きメインメニューとそのマージン
- TToolbar での TCheckbox の表示.
- テーマを複数回切り替えた際の境界線とコントロールの描画
- TComboBoxEx の描画
- CheckBoxes の THeaderControl 描画
- イメージ付き TButton の ImageMargins
- OwnerDraw メニュー項目に対する OnMeasureItem の呼び出し
- TImageCollection エディタがファイル名やサイズ セパレータとして選択された文字を覚えている
- TVirtualImageList コンポーネントの TImageCollection エディタでの .ico ファイルのサポート
FireMonkey の品質
本リリースでは、多くの品質改善と FireMonkey の新しい VCL スタイル機能が提供されています。新しい機能としては、FireMonkey スタイル コンバータで新しい VCL スタイルが利用可能になりました(bin\vsf2fm.exe
で利用可能)。
vsf2fm <file or folder> Params: -origin - raw converter result -bin - convert to binary fsf-format instead of textual style-format -idx - convert to indexed binary fsf-format instead of textual style-format
ツールの一般的な使用法は次のとおりです:
vsf2fm -idx iOS7.vsf iOSAlternate.vsf
注目すべき FMX の改善
注目すべき修正点について以下に記載します:
- RAD Studio に同梱されている
Skia4Delphi
バージョンを最新バージョンにアップグレード - 改善された Mac 上での VertScrollBox スクロール バー
- TMemo の更なる改善には次が含まれます: TMemo 内での Text の移動、新しい行へのキャレットの移動、OnMouseUp イベントでの CaretPosition の利用、コントロールのサイズ変更時でのキャレット位置。
- Mac 上および TskLabel 内での Skia の改善
- ListBox と ListView(フィルタ)の改善
- Windows 以外のプラットフォームでの動的スタイル読み込み
- Windows での Z オーダー マネージャの改善
RAD サーバーの改善
次のセクションでは、RAD Studio 12.3 リリースにおける RAD サーバーの改善点を一覧します:
- GET と LIST のリクエストで異なる日付/時間の形式値が返されることを回避するため、RAD Studio バージョン 12.3 ではコードを改善し、
roFDDateTimeFormat
が導入されています。これは、GET/PUT/POST JSON レスポンスにおける日付/時間の値の表現をコントロールします。 - RAD Studio 12.3 では、
emsserver.ini
における MasterSecret と Appsecret のクリア テキスト値を保存しないようにするオプションが含まれています。この値は、"#<MD5 hash>#"
形式をサポートするようになりました。さらに、EMSDevServer での[キーの難読化]ボタンは、プレーン テキストの MasterSecret/AppSecret 値を上記の形式に変換します。 - 本リリースでは、
emsserver.ini
の [variables]セクションに格納される、全インスタント用カスタム変数の概念が追加されています。これらの変数は、次で使用されます:- カスタム リソース エンドポイント コード
- TEMSFileResource プロパティ(設定依存パッチの定義などで): PathTemplate =
“$(Project1)/templates”
- TEMSDataSetResource プロパティ
- 本リリースでは、エンドポイントを非表示にする新しい RAD サーバーの属性、
EndpointHide
が追加されています。これは、コンポーネント エンドポイント TEMSDataSetResource や TEMSFileResource に役立ちます: 例:
[EndpointHide('put')] [EndpointHide('post')] [EndpointHide('delete')]
その他の改善点
以下は、RAD Studio 12.3 におけるその他の品質改善点の一覧です:
- WSDL インポータでの問題は解決され、SOAP の品質は向上しました。
- TRegistry.ReadMultiString は、空白行に対応しました。
- エディタ キャレットの色と形状が変更できるようになりました。これはアクセサビリティに有用です。
a
- TDump メニューが Delphi プロジェクトで有効になりました。
- エディタ描画と逆アセンブリ描画での問題が解決されました。