ラベル Around Delphi の投稿を表示しています。 すべての投稿を表示
ラベル Around Delphi の投稿を表示しています。 すべての投稿を表示

2021年5月5日

マイナーリリースを区別する新しい標準条件シンボル

Delphi Master Release List · ideasawakened/DelphiKB Wiki · GitHubを見ていて気が付いたのですが、いままで標準条件シンボルの定義やCONDITIONALEXPRESSIONSではできなかった、マイナーリリース間を区別する(たとえば10.4.1と10.4.2を見分ける)ための新しい標準条件シンボルがRAD Studio/Delphi/C++Builder 10.4.2 Sydneyで導入されたようです。

RAD Studio/Delphi/C++Builder 10.4.1 SydneyまではSystem.pasに
const
  RTLVersion = 34.00;
 {$HPPEMIT '#define RTLVersionC 3400'}
とRTLVersionが定義(34.0)されていたものが、10.4.2 Sydneyでは
const
  RTLVersion = 34.00; RTLVersion1041 = True; RTLVersion1042 = True;
 {$HPPEMIT '#define RTLVersionC 3400'}
と、RTLVersion1041/RTLVersion1042(いずれもTrue)の定義が追加されています。10.4/10.4.1ではこれらの定義が存在せず、10.5でもどうなるのかがいまのところわかっていないので使用方法も判然としないのですが、とりあえず
{$IF RTLVersion = 34.0}
{$IF RTLVersion1042}
  Label1.Caption := 'Delphi 10.4.2.';
{$ELSE}
  Label1.Caption := 'Delphi 10.4 or 10.4.1.';
{$ENDIF}

{$ELSE}
  Label1.Caption := 'Not Delphi 10.4.x.';
{$IFEND}
こんな感じになるでしょうか。

2021年4月29日

[書籍]Delphiで作るAndroidスマホアプリ

Amazon(JP)で注文した

Delphiで作るAndroidスマホアプリ (Amazon JP)/山菅昇一、山菅昇太郎著/インプレスR&D/ISBN 9784844379584/2,200円

が配送されてきました。

2021年3月16日

[書籍]Object Pascal Handbook Delphi 10.4 Sydney Edition

Amazon(JP)で注文した

Object Pascal Handbook Delphi 10.4 Sydney Edition (Amazon US, Amazon JP)/Marco Cantù著/ISBN 979-8554519963/5,606JPY(printed)

が配送されてきました。2021/03/14に注文して2日目の到着でした。

2020年11月18日

RAD Studio ロードマップ 2020/11

RAD Studio/Delphi/C++Builderのロードマップが更新されています。

RAD Studio 2020年11月付ロードマップ (en)
RAD Studio 2020年11月付ロードマップのPM解説 (en)

次期アップデートとなる10.4.2(2021/1H)と次期メジャーリリースの10.5(2021/2H)が予告されています。

また後で雑にまとめます(たぶん)。

2020年5月19日

新サポートナレッジベースサイト公開

先日の新ポータルサイトに続いて、サポートナレッジベースサイトとなるSupport Wikiが公開されています。

Support (ja)
Support (en)
Support (de)
Support (fr)

新しいサポートナレッジベースサイト「Support Wiki」オープン!

従来のEDNやSupport KBで公開されてきたアーティクルは今後こちらで扱われるようになるとのことです。ただ言語別(en/de/fr/ja)に完全に分かれてしまっている(検索も言語別に分断されている)ことや、日本語のメインページはすべてのページを通して確認できない(カテゴリに入っていくか検索しないといけない)こと、逆に英語/ドイツ語/フランス語のメインページは一覧のみでカテゴリ分けされていないこと、情報としてもまだ網羅性が足りない(もっとたくさんの情報があるはずですよね)など、改善の余地がまだまだありそうです。今後の内容の充実に期待したいところです。

ちなみに従来のEDNやSupport KBのアーティクルがどれだけあるかというと、これだけあります。
EDN Article Index 30001-
EDN Article Index 31001-
EDN Article Index 32001-
EDN Article Index 33001-
EDN Article Index 34001-
EDN Article Index 35001-
EDN Article Index 36001-
EDN Article Index 37001-
EDN Article Index 38001-
EDN Article Index 39001-
EDN Article Index 40001-
EDN Article Index 41001-
EDN Article Index 42001-
EDN Article Index 43001-
EDN Article Index 44001-

2020年4月20日

新ポータルサイト公開

以前からアナウンスされていたエンバカデロの新しいポータルサイトが公開されています。

Registered Products Portal

新しいエンバカデロ・ライセンス/ダウンロード・ポータル (en)

これまでのEDN(Embarcadero Developer Network)やCC(Code Central)に替わって、今後ライセンス管理や製品のダウンロードはこのポータルサイト経由になるとのことです。これにより、従来CCで

30915 Delphi 10.3.3 Open Array Patch
https://cc.embarcadero.com/Item/30915

というダウンロードページになっていたものが、

Delphi 10.3.3 Open Array Patch
https://my.embarcadero.com/#downloadDetail/661

のようになるとのことです(EDNやCCは順次フェードアウト予定)。

また製品以外のサンプルコードなどはGitHubに移行するとのことです。

参考: The Future of CodeCentral

2019年12月24日

[書籍][eBook]Mastering Delphi Programming

Packt Publishingで注文した

Mastering Delphi Programming: A Complete Reference Guide (Amazon US, Amazon JP)/Primož Gabrijelčič著/Packt Publishing/ISBN 9781838989118/44.99USD(printed+ebook)

が配送されてきました(今回の配送もDHLで、インドのチェンナイからの発送でした)。2019/12/16に注文して9日目の到着、44.99USD=5,042JPY(1USD=112.07JPY)でした。

2019年8月13日

RAD Studio ロードマップ 2019/08

RAD Studio/Delphi/C++Builderのロードマップが更新されています。

2019年8月Delphi Androidベータプランと8月付ロードマップアップデート (en)

前回からの大きな変更として、次期アップデートとなる10.3 Rio Release 3(10.3.3)の追加(2019/4Q頃)と、それに伴う次期メジャーリリース(10.4)の2020年への延期がアナウンスされています。またC++のAndroid 64bitサポートが復活しています。

雑なまとめ:
  • 次期アップデート(10.3.3)は2019年の終わり頃
    • iOS13/macOS Catalinaサポート
    • DelphiでAndroid 64ビットをサポート
  • 次期メジャーリリース(10.4)は2020年前半
    • macOS/iOSでMetal 2をサポート
    • Androidのプッシュ通知とGoogle Playサービスの再構成
    • LiveBindingのパフォーマンス向上
    • Delphi/C++Builderとも全てのプラットフォームでメモリ管理を統一(モバイル環境でのARCサポートの削除)
    • オンライン/オフラインインストーラを統合
    • Delphiで(カスタム)マネージドレコード型をサポート
  • その次のアップデート(10.4.x)は2020年の中頃以降
    • デバッガをLLDBベースのものに統合
    • MSIXアプリケーションパッケージ形式のサポート
    • DelphiでiOS 13のシミュレータ(64ビット)をサポート
    • C++BuilderでAndroid 64ビットをサポート
    • C++BuilderにWhole Tomato Visual Assistを統合
2019年8月後半から10.3.3のNDAベータ("Sugarloaf")が開始され、Google Playストアでの展開を可能にする特別なEULAが適用されることになるとのことです。

2019年5月25日

[書籍][eBook]Delphi Programming Projects

Packt Publishingで注文した

Delphi Programming Projects (Amazon US, Amazon JP)/William Duarte著/Packt Publishing/ISBN 9781789130553/39.99USD(Print+eBook)

が配送されてきました(今回の配送もDHLで、インドのチェンナイからの発送でした)。2019/05/14に注文して12日目の到着、39.99USD=4,484JPY(1USD=112.13JPY)でした。

2019年5月24日

RAD Studio ロードマップ 2019/05

RAD Studio/Delphi/C++Builderのロードマップが更新されています。

RAD Studioロードマップ(2019年5月付) (en)
2019年5月付RAD Studioロードマップへのプロダクトマネージャからのコメント (en)

今回のロードマップの注目点は
  • 次期アップデート(10.3.2)は2019年の中頃
    • DelphiでmccOS 64ビットをサポート
    • C++ Windos x64コンパイラでC++17をサポート(現在はC++11)
  • 次期メジャーリリース(10.4)は2019年末
    • macOS/iOSでMetal 2をサポート
    • LiveBindingのパフォーマンス向上
    • Delphi/C++Builderとも全てのプラットフォームでメモリ管理を統一(モバイル環境でのARCサポートの削除)
    • DelphiでAndroid 64ビットをサポート
    • オンライン/オフラインインストーラを統合
    • Delphiで(カスタム)マネージドレコード型をサポート
  • その次のアップデート(10.4.x)は2020年
    • デバッガをLLDBベースのものに統合
    • iOSでMetal GPUドライバをサポート
    • DelphiでiOS 13のシミュレータ(64ビット)をサポート
    • C++BuilderにWhole Tomato Visual Assistを統合
といったところでしょうか。ところで10.4のコードネームがついてないのは飽きちゃったんですかね。

2019年3月19日

[書籍][eBook]Hands-On Design Patterns with Delphi

Packt Publishingで注文した

Hands-On Design Patterns with Delphi (amazon US, amazon JP)/Primož Gabrijelčič著/Packt Publishing/ISBN 9781789343243/44.99USD(Print+eBook)

が配送されてきました(今回も配送はDHLで、インドのチェンナイからの発送でした)。2019/02/28に注文して19日目の到着、44.99USDがdiscountで36.90USD=4,200JPY(1USD=113.84JPY)でした。

2018年8月9日

RAD Studio ロードマップ 2018/08

RAD Studio/Delphi/C++Builderのロードマップが更新されています。

RAD Studioロードマップ(2018年8月付) (en)
August 2018 Roadmap Commentary from Product Management

注目点をいくつかピックアップしておきます。
  • 次期リリース(10.3 "Carnival")は2018年後半
  • IDE Fix Packから一部の修正をバックポート
  • Object Pascalではレコード型関係の強化(ジェネリックス向)
  • Clang/LLVMベースのC++ Windows/x86コンパイラのC++17対応
  • AndroidでZオーダのサポート、ネイティブコントロール
  • Android 8.0/API level 26対応
  • macOS 64ビット版はAppleの方針変更に伴って優先順位が若干下がり2019年の10.3.xに持ち越し(Delphi/C++Builderとも)
  • 10.3.xではWindows x86以外のC++コンパイラのC++17対応
  • Androidの64ビット対応はさらに後(2019年後半以降)の10.4で
  • Object Pascalのnull許容型やその他の言語機能拡張も10.4に持ち越し
全般的にはサブスクリプションが前提になっていることをいいことに、ずるずるといろんなものが後回しになっている、という気もします。品質向上はいいことですが。

2017年5月12日

RAD Studio ロードマップ 2017/05

RAD Studioのロードマップの2017/05版が公開されています。

RAD Studio Roadmap May 2017
May 2017 Roadmap Commentary from Product Management

日本語訳もそのうち公開されると思われますが、注目点をいくつかピックアップしておきます。
  • RAD Studio 10.2.1 Tokyoは今年(2017年)半ばくらいにリリース、C++BuilderのLinux Serverサポートを追加
  • RAD Studio 10.2.2 Tokyoは2017年末くらいにリリース、AndroidのZ-オーダサポートとWindows 10/WinRT関係の更新、C++のリファクタリングでリネーム機能のサポートとコード補完、コードインサイトの強化といったあたり
  • RAD Studio 10.3 コードネーム "Carnival"は2018年で、FMXでAndroidのネイティブコントロールのサポート、LLDBの統合、C++17サポート、Delphiで64bit macOSのサポートの追加、DelphiでNullable型サポートや文法面の強化など
2017/05/19追記: 日本語訳が公開されました。

RAD Studioロードマップ(2017年5月付)

2017/05/22追記: コメントについても日本語訳が公開されています。

製品マネージャからの2017年5月付け製品ロードマップに関するコメント

2016年2月9日

RAD Studio 2016 ロードマップ

RAD Studioのロードマップは1年くらい前に更新されてそのままになっていました。2015年05月のデベロッパーキャンプのときにMarco Cantuさんに『ロードマップの更新は?』と聞いたところ、『モバイル関係の流れが速いのでロードマップを出すのは難しい』という回答でした(それは困る、とは伝えましたが)。しかし2015年秋のIDERAによる買収によって路線の修正が行われ、2016年01月にロードマップを更新する、というAtanas Popovさんの発言もあり、1月末くらいからどうなってるの?という声も出ていましたが、やっとロードマップが更新されました。

Embarcadero RAD Studio 2016 Product Approach and Roadmap

以下今後のリリースに関する適当な要約:
  • 2016年春リリースのコードネーム"Big Ben"のキーテーマは"品質、最初のユーザ体験と導入"で、新しいインストーラとGetItによりインストールの柔軟性とインストール時間の短縮を図る。2016年のリリースに以下の機能を含めるためチームは作業をしている。
    • VCLとFMXの両方でフォームデザイナをセパレート/フロート可能に
    • C++に関するリファクタリング
    • FireUIアプリケーションプレビュー(IDEのフォームデザイナであらゆるターゲット上でのプレビュー)
    • Firemonkeyの拡張
      • アドレス帳/コンタクトコンポーネント
      • スタイルデザイナとリストビューアイテムデザイナ
      • 多くの機能、リストビューのタッチアニメーション、グリッドの改善、Windowsのアクセラレータキーのサポート、フォント拡張、その他
    • マルチデバイスデザイナの改善
        デバイス上のフォームデザイナプレビュー
      • Android Wearスタイルと新しいFireUIビュー
    • IoT (Internet of Things)
      • Bluetooth LEサポートの拡張
      • そのままでもカスタムでもIoTスマートデバイス、センサ、ウェアラブルを簡単に使えるAPIコンポーネントであるIoT接続フレームワーク
      • Bluetooth LEおよびZ-Waveデバイスをサポートするコンポーネント
      • ThingPoint(EMS機能を拡張するIoTデバイスのためのエンタープライズなアクセスポイント)
    • Windows/VCL
      • Windows 10のBluetooth LEサポートを含むWinRTブリッジの改善
      • DirectX 12サポート
    • Delphiコンパイラおよび言語
      • すべてのプラットフォーム上でUtf8Stringをネイティブサポート
      • Windowsなど非ARCプラットフォーム上でのweak/unsafeインタフェース参照のサポート
    • すべてのプラットフォームでC++ Clang 3.3に移行
    • FireDACドライバ更新(Oracle、DB2、InterBase、SQLite、Advantage)
  • その次の2016年秋リリースのコードネーム"Godzilla"ではDelphi/C++BuilderアプリケーションがLinux上で動くようになる。夏にはDelphi for Linuxのテクニカルプレビューを出すのでぜひフィードバックしていただいて、可能な限り安定して強固なものにしていきたい。秋のリリースを目標としているものは以下の通り。
    • WebBrokerによるApacheモジュールとDataSnap/EMSサポート
    • FireDACによるLinuxデータベースアクセス
    • IoTサポートを含むコンソールアプリケーションのLinuxプラットフォームサポート
    • 公式にはUbuntu ServerとRedHat Enterpriseをサポート(これ以外のディストリビューションの公式サポートは需要に応じて広げてゆく)
    • WindowsベースのIDEとクロスコンパイラ、PAServer経由のデプロイとデバッグ
    • LinuxコンパイラはIntel 64ビットサーバ用で、LLVMベースのARCサポート
  • Linuxサポートの後についてはさらに以下のようなものを考えている。
    • IDEのUIの改善とスタイル
    • すべてのC++コンパイラをより新しいClangベースのものに更新
    • パッケージマネージャおよびインストーラとしての両方でGetItの更なる改善
    • 新しいWindows 10のVCLコンポーネント
    • Firemonkeyのネイティブコントロールの更なる改善
    • Windows 10 Centennialサポート(MicrosoftによるCentennial ユニバーサルWindowsプラットフォームブリッジのリリース待ち)
    • 将来のiOSおよびAndroidのバージョンのサポート

公式の日本語訳も出ました(つか負けた)。

Embarcadero RAD Studio 2016年の製品アプローチとロードマップ

2015年3月3日

RAD Studio 2015 ロードマップ

またもや長らく更新されていなかったRAD Studioのロードマップが久しぶりに更新されています(2015年Q1版)。

RAD Studio 2015 Roadmap - Blogs

適当な要約:
  • 新しいプラットフォームとコンパイラ
    • iOS
      • C++/Object Pascalの両方でiOS 64ビットプラットフォーム用の新しいツールチェインを準備中
      • Appleのユニバーサルバイナリをサポート
    • Windows x86 C++
      • x64と同様にC++11を含むLLVMベースのツールチェイン
  • 開発環境(IDE)
    • Object Pascal/C++の両方で開発者の生産性を拡張
    • 大規模メモリモデルによるIDEの安定性の向上
    • IDEに統合されたライブラリマネージャテクノロジー
    • 複数デバイスプレビューを含むFireUIマルチデバイスデザイナの拡張
  • Windows 10サポート
    • VCL/FMXの両方に
    • 新しいコンポーネントとライブラリ
    • Broad APIのカバー
    • 新しいWindows 10のプラットフォームテクノロジとの統合
  • VCL/RTL
    • スタイル、フル4Kモニタサポート、大きいフォントなどの拡張によるVCLの改良
    • アプリケーションの分析(VCL/FMXの両方)
    • 全てのプラットフォームに対応するネイティブHTTP(S)クライアントライブラリ
  • FireMonkey
    • コントロールの拡張
      • 地図のような新しいモバイル用コンポーネント
      • WebBrowserのようにデスクトップに欠けていたコンポーネント
      • さらなるiOSの制御とzオーダ管理
    • パフォーマンスの最適化
  • Internet of Things
    • ビーコン技術のサポートによるモバイル近接統合
    • 異種APIによる異なるデバイス/ガジェットとの接続のコンポーネントベースモデル
    • データ収集/分析のためのリモートエンドポイント
  • エンタープライズ/多層
    • FireDAC:新しいエンタープライズ級のデータベースドライバ、パフォーマンスの向上
    • InterBase XE7のチェンジビュー
    • EMS(エンタープライズモビリティサービス)とのより緊密な統合
    • NoSQLデータベースのサポート
    • EMS:プッシュ通知といくつかの拡張
    • DataSnapのコアwebテクノロジのクリーンアップと改善
  • そのほかのプラットフォームに対する技術的な調査
    • Android/iOSの2015年バージョン(現時点でGoogle/Appleからアナウンスされていないもの)
    • WebBroker、DataSnap、EMSなどのLinuxのサーバ側のwebサービスアプリケーションのサポート
    • AndroidのIntelプラットフォームのサポートの選択肢
    • Mac OS Xの64ビット用ツールチェイン
  • 2015年の最終的な検討事項
    • 2015年において2回の製品リリース
      • 最初のリリース後にロードマップを更新
    • アップデートサブスクリプションに含まれるもの
      • 過去のリリースを含む継続的なアップデート
      • 他では入手できないコンテンツと機能
    • 新しい挑戦と機会に取り組むための機能
面倒で結局要約せずにほぼ全訳してしまった…。

2015/03/16追記: 日本語版のロードマップが公開されています。

RAD Studio 2015年ロードマップ

2014年9月3日

DelphiのRTLで定義済の属性

Delphi 2010で追加された新しいRTTIに含まれる属性機能ですが、Delphiのバージョンにより違いがあるものの、RTLで予め定義されている属性がいくつかあります。ところがこれらの定義済の属性についてヘルプにはきちんとした記述がありません。ということで調べてみました(XE6/XE7は手元にないので調べていませんが、既存のものについてはXE5と大きく異なる部分はないと思いますDelphi XE6/XE7/XE8/10 Seattle/10.1 Berlinについても確認しました)。

  • System ユニット
    TCustomAttribute
    [2010..13 Florence]カスタム属性のルートクラス
    属性を新たに定義するときはTCustomAttributeから派生させる
    WeakAttribute [Weak]
    [XE3..13 Florence]循環参照などのARCがオブジェクトの破棄を行えないような状況を防ぐ"弱い"参照であることを示す
    10 Seattleおよびそれ以前ではNEXTGENコンパイラのみ
    参考: コンパイラ属性 - RAD Studio
    参考: 弱い参照 (Delphi モバイル コンパイラでの自動参照カウント)
    UnsafeAttribute [Unsafe]
    [XE3..13 Florence]オブジェクトの生成時など参照カウントが0となるような状況でARCによる破棄を防ぐ
    10 Seattleおよびそれ以前ではNEXTGENコンパイラのみ
    参考: コンパイラ属性 - RAD Studio
    参考: Unsafe 属性 (Delphi モバイル コンパイラでの自動参照カウント)
    参考: モバイル開発のためのDelphi言語 (ホワイトペーパ)
    RefAttribute [Ref]
    [XE3..13 Florence]定数パラメータを強制的に参照渡しにする
    ヘルプによればRefAttributeはXE4の新機能だが、実際にはXE3でも使用可能
    参考: コンパイラ属性 - RAD Studio
    参考: 定数パラメータ (パラメータ(Delphi))
    VolatileAttribute [Volatile]
    [XE4..13 Florence]スレッドによって書き換えられる可能性があるフィールドに対して、コード生成時にレジスタまたはその他の一時メモリ領域に値をコピーするような最適化を行わないようにする
    10 Seattleおよびそれ以前ではNEXTGENコンパイラのみ
    参考: コンパイラ属性 - RAD Studio
    参考: Delphi コンパイラの新しい属性 (Delphi XE4 および C++Builder XE4 の新機能)
    参考: volatile (コンパイラ属性)
    StoredAttribute [Stored]
    [XE7..13 Florence]System.Classes.StoredAttributeを参照
    HPPGENAttribute [HPPGEN]
    [XE8..13 Florence]C++Builder用のhppファイル生成時に使用する情報らしいが詳細不明
    HFAAttribute [HFA]
    [XE8..13 Florence]pageId=86770118(なにそれ)に情報があるらしいが詳細不明(For internal use only.とコメントあり)ARM64プラットフォーム向けにレコード型/配列型に対して生成されたRTTI HFA情報をオーバライド
    AlignAttribute [Align]
    [10 Seattle..13 Florence]メモリ上のオブジェクトのアライメントを指定するものらしいが、For internal use only.とコメントあり
  • System.Classes ユニット
    ComponentPlatformsAttribute [ComponentPlatforms(<params>)]
    [XE2..13 Florence]コンポーネントが動作するプラットフォームを指定する
    パラメータ(Word値)にはSystem.Classesで定義されている以下の定数の論理和を指定する
    • pidWin32 [XE2..13 Florence]
    • pidWin64 [XE2..13 Florence]
    • pidOSX32 [XE2..13 Florence]
    • pidiOSSimulator32 [10.3 Rio..13 Florence], pidiOSSimulator [XE3..13 Florence]
    • pidAndroidArm32 [11 Alexandria..13 Florence], pidAndroid32Arm [10.3 Rio..13 Florence], pidAndroid [XE3..13 Florence]
    • pidLinux32 [XE3..13 Florence]
    • pidiOSDevice32 [XE8..13 Florence], pidiOSDevice [XE3..13 Florence]
    • pidLinux64 [XE8..13 Florence]
    • pidWinNX32 [XE3..13 Florence]
    • pidWinIoT32 [XE8..13 Florence] ("Embedded IoT (Internet of Things) Windows w/ Intel Galileo")
    • pidiOSDevice64 [XE8..13 Florence]
    • pidWinARM32 [10.3 Rio..13 Florence], pidWin32ARM [11 Alexandria..13 Florence], pidWinARM [10 Seattle..10.2 Tokyo]
    • pidOSX64 [10.1 Berlin..13 Florence], pidOSXNX64 [10.1 Berlin..10.2 Tokyo]
    • pidLinuxArm32 [11 Alexandria..13 Florence], pidLinux32Arm [10.1 Berlin..10.4 Sydney]
    • pidLinuxArm64 [11 Alexandria..13 Florence], pidLinux64Arm [10.1 Berlin..10.4 Sydney]
    • pidAndroidArm64 [11 Alexandria..13 Florence], pidAndroid64Arm [10.3 Rio..13 Florence], pidAndroid64 [10.1 Berlin..10.2 Tokyo]
    • pidiOSSimulator64 [10.3 Rio..13 Florence]
    • pidOSXArm64 [11 Alexandria..13 Florence]
    • pidWinArm64 [11 Alexandria..13 Florence]
    • pidiOSSimulatorArm64 [11 Alexandria..13 Florence]
    • pidWin64x [12 Athens..13 Florence]
    TDefaultAttributeBase
    [XE3..13 Florence]DefaultAttribute/NoDefaultAttributeの継承元
    DefaultAttribute [Default(<param>)]
    [XE3..13 Florence]プロパティの格納指定子defaultと同等の指定
    パラメータにはデフォルト値(Boolean型、AnsiChar型、Char型、Integer型、Cardinal型、Int64型、UInt64型、String型、Extended型のいずれか)を指定する
    NoDefaultAttribute [NoDefault]
    [XE3..13 Florence]プロパティの格納指定子nodefaultと同等の指定
    StoredAttribute [Stored(<param>)]
    [XE3..XE7]プロパティの格納指定子storedと同等の指定
    パラメータには真偽値(False | True)またはストレージハンドラ(Boolean型のプロパティまたはパラメータを持たずBoolean値を返すメソッド)の名前を指定する(XE8以降はSystemユニットに移動)
    ObservableMemberAttribute [ObservableMember(<param>)]
    [XE3..13 Florence]LiveBinding対応コンポーネントで、LiveBindingコンポーネントが式を生成するときに使用するメンバ名をパラメータで指定する
    ObservableMemberExtAttribute [ObservableMemberExt(<param>)/ObservableMemberExt(<param>,<param>)/ObservableMemberExt(<param>,<param>,<param>)]
    [10.4 Sydney]LiveBinding対応コンポーネントで、LiveBindingコンポーネントが式を生成するときに使用するメンバ名/フレームワーク/トラッキングをパラメータで指定する
  • System.JSON.Types ユニット
    JsonNameAttribute[JsonName<param>]
    [12 Athens..13 Florence]TJsonSerializerでキー名を明示的に指定
    JsonExcludeValueAttribute[JsonExcludeValue<param>]
    [13 Florence]TJsonSerializerでシリアライズから除外
  • System.JSON.Serializers ユニット
    JsonConverterAttribute[JsonConverter<param>]
    [10.3 Rio..13 Florence]TJsonSerializerで使用するコンバータの指定
    JsonIgnoreAttribute[JsonIgnore]
    [10.3 Rio..13 Florence]TJsonSerializerで無視するメンバの指定
    JsonNameAttribute[JsonName<param>]
    [10.3 Rio..11 Alexandria]TJsonSerializerでキー名を明示的に指定(12 Athens以降はSystem.JSON.Typesユニットに移動)
    JsonInAttribute[JsonIn]
    [10.3 Rio..13 Florence]JsonSerialize属性のパラメータにTJsonMemberSerialization.Inを指定したときにTJsonSerializerでシリアライズ/デシリアライズ対象とする
    JsonObjectHandlingAttribute[JsonObjectHandling<param>]
    [10.3 Rio..13 Florence]TJsonSerializerでデシリアライズするときのクラス型のメンバの扱いを指定
    パラメータには列挙型TJsonObjectHandlingから以下のいずれかの値を指定
    • Auto [10.2 Tokyo..13 Florence]
    • Reuse [10.2 Tokyo..13 Florence]
    • Replace [10.2 Tokyo..13 Florence]
    JsonObjectOwnership[JsonObjectOwnership<param>]
    [10.3 Rio..13 Florence]TJsonSerializerでデシリアライズするときにクラス型メンバを生成した場合の元のインスタンスの扱いを指定
    パラメータには列挙型TJsonObjectOwnershipから以下のいずれかの値を指定
    • Auto [10.2 Tokyo..13 Florence]
    • Owned [10.2 Tokyo..13 Florence]
    • NotOwned [10.2 Tokyo..13 Florence]
    JsonSerializeAttribute[JsonSerialize<param>]
    [10.2 Tokyo..13 Florence]TJsonSerializerでシリアライズ/デシリアライズするメンバの指定
    パラメータには列挙型TJsonMemberSerializationから以下のいずれかの値を指定
    • Fields [10.2 Tokyo..13 Florence]
    • Public [10.2 Tokyo..13 Florence]
    • In [10.2 Tokyo..13 Florence]
    JsonValueSerializeAttribute[JsonValueSerializee<param>]
    [13 Florence]TJsonSerializerでシリアライズ/デシリアライズするかどうかの指定
    パラメータには列挙型TJsonValueSerializationから以下のいずれかの値を指定
    • Always [13 Florence]
    • ExcludeDefault [13 Florence]
    • ExcludeSpecial [13 Florence]
    • ExcludeAll [13 Florence]
  • Data.DBXJSONReflect ユニット (XE5でREST.JsonReflect ユニットに置き換えられた)
    JsonReflect [JsonReflect(<params>)]
    [XE..13 Florence]TJSONMarshal/TJSONUnMarshalでオブジェクトをJSON形式でマーシャル/アンマーシャルするときの動作をカスタマイズする
    パラメータにはコンバータタイプ、リバータタイプ、インターセプタの型、ポピュレーションカスタマイザの型、マーシャリングのときに生成される中間オブジェクトを自動的に解放するかどうかを指定する
    JSONBooleanAttribute
    [XE..13 Florence]JSONMarshalled/JSONOwnedの継承元
    JSONMarshalled [JSONMarshalled(<param>)]
    [XE..13 Florence]フィールドや型がマーシャル/アンマーシャルの対象になるかどうかをパラメータ(False | True)で指定する
    JSONOwned [JSONOwned(<param>)]
    [XE..13 Florence]フィールドがアンマーシャルの際に解放されるかどうかをパラメータ(False | True)で指定する
  • Datasnap.DSAuth ユニット
    TRoleAuth [TRoleAuth(<params>)]
    [XE..13 Florence]DataSnapで認証を行ったときに、サーバメソッドクラスやサーバメソッドに対してアクセスを許可/拒否するロールを指定する
    パラメータには許可ロールのリストと拒否ロールのリストを指定する
    参考: ロール (認証と権限付与)
  • REST.Json.Types ユニット
    JSONBooleanAttribute [JSONBoolean]
    [XE6..13 Florence]Data.DBXJSONReflect.JSONBooleanAttributeを参照
    JSONMarshalledAttribute [JSONMarshalled]
    [XE6..13 Florence]Data.DBXJSONReflect.JSONMarshalledを参照
    JSONOwnedAttribute [JSONOwned]
    [XE6..13 Florence]Data.DBXJSONReflect.JSONOwnedを参照
    JSONNameAttribute [JSONName]
    [XE6..13 Florence]12 AthensでSystem.JSON.Types.JsonNameAttributeのエイリアスになった
    JSONSerializeAttribute [JSONSerialize(<param>)]
    [12 Athens..13 Florence]データメンバシリアライズのオブジェクトタイプを指定
    パラメータには列挙型TJsonMemberSerializationから以下のいずれかの値を指定
    • jmFields [12 Athens..13 Florence]
    • jmPublicProps [12 Athens..13 Florence]
    • jmPublishedProps [12 Athens..13 Florence]
    • jmAllPubProps [12 Athens..13 Florence]
  • REST.JsonReflect ユニット
    JsonReflect(XE5)/JsonReflectAttribute(XE6以降) [JsonReflect]
    [XE5..13 Florence]Data.DBXJSONReflect.JsonReflectを参照(XE6でクラス名が変更)
    JSONBooleanAttribute [JSONBoolean]
    [XE5]Data.DBXJSONReflect.JSONBooleanAttributeを参照(XE6以降はREST.Json.Typesユニットに移動)
    JSONMarshalled [JSONMarshalled]
    [XE5]Data.DBXJSONReflect.JSONMarshalledを参照(XE6以降はREST.Json.Typesユニットに移動)
    JSONOwned [JSONOwned]
    [XE5]Data.DBXJSONReflect.JSONOwnedを参照(XE6以降はREST.Json.Typesユニットに移動)
  • EMS.ResourceTypes ユニット
    TResourceCustomAttribute [TResourceCustom]
    [10.1 Berlin..13 Florence] EndPointRequestSummaryAttribute(10.1 Berlin..10.2 Tokyo)/EndPointRequestParameterAttribute(10.1 Berlin..10.2 Tokyo)/EndPointResponseDetailsAttribute(10.1 Berlin..10.2 Tokyo)/EndPointObjectsYAMLDefinitionsAttribute(10.1 Berlin..10.2 Tokyo)/EndPointObjectsJSONDefinitionsAttribute(10.1 Berlin..13 Florence)/AllowAnonymousTenantAttribute(10.1 Berlin..10.2 Tokyo)/ResourceNameAttribute(10.3 Rio..13 Florence)/EndPointObjectsYAMLDefinitionsAttribute(10.3 Rio..13 Florence)の継承元
    TEndpointCustomAttribute [TEndpointCustom]
    [10.3 Rio..13 Florence]ResourceSuffixAttribute/EndpointNameAttribute/EndPointRequestSummaryAttribute/EndPointRequestParameterAttribute/EndPointResponseDetailsAttribute/AllowAnonymousTenantAttribute/EndPointProduceAttribute/EndPointMethodAttributeの継承元
    ResourceSuffixAttribute [ResourceSuffix]
    [XE7..12 Athens]EMSでURLのサフィックスを指定する
    参考: EMS リソースの概要 - RAD Studio
    EndpointHideAttribute [EndpointHide(<param>)]
    [13 Florence]EMSで指定されたサフィックスのエンドポイントを隠す
    ResourceVersionAttribute [ResourceVersion]
    [13 Florence]EMSでリソースのバージョンを指定する
    ResourceNameAttribute [ResourceName]
    [XE7..12 Athens]EMSでリソース名を指定する
    参考: EMS リソースの概要 - RAD Studio
    EndpointNameAttribute [EndpointName]
    [XE7..12 Athens]EMSでエンドポイントメソッド名を指定する
    参考: EMS リソースの概要 - RAD Studio
    EndPointRequestSummaryAttribute [EndPointRequestSummary]
    [10.1 Berlin..12 Athens]EMSでメソッドの説明をAPIドキュメント上に生成する
    参考: カスタム API ドキュメント - RAD Studio
    EndPointRequestParameterAttribute [EndPointRequestParameter]
    [10.1 Berlin..12 Athens]EMSで要求内で使用されるパラメータの説明をAPIドキュメント上に生成する
    参考: カスタム API ドキュメント - RAD Studio
    EndPointResponseDetailsAttribute [EndPointResponseDetails]
    [10.1 Berlin..12 Athens]EMSで要求応答の説明をAPIドキュメント上に生成する
    参考: カスタム API ドキュメント - RAD Studio
    EndPointResponseHeaderAttribute [EndPointResponseHeader]
    [13 Florence]EMSで要求応答のヘッダを指定する
    EndPointObjectsYAMLDefinitionsAttribute [EndPointObjectsYAMLDefinitions]
    [10.1 Berlin..12 Athens]EMSでYAML版のオブジェクトの定義をAPIドキュメント上に生成する
    参考: カスタム API ドキュメント - RAD Studio
    EndPointObjectsJSONDefinitionsAttribute [EndPointObjectsJSONDefinitions]
    [10.1 Berlin..12 Athens]EMSでJSON版のオブジェクトの定義をAPIドキュメント上に生成する
    参考: カスタム API ドキュメント - RAD Studio
    AllowAnonymousTenantAttribute [AllowAnonymousTenant]
    [10.2 Tokyo..12 Athens]EMSでテナント検証の手順をスキップする
    参考: サンプル RAD サーバー マルチテナント アプリケーション - RAD Studio
    EndPointProduceAttribute [EndPointProduce]
    [10.3 Rio..12 Athens]
    参考: RAD Server 拡張 URL マッピング - RAD Studio
    EndPointConsumeAttribute [EndPointConsume]
    [10.3 Rio..12 Athens]
    参考: RAD Server 拡張 URL マッピング - RAD Studio
    EndPointMethodAttribute [EndPointMethod]
    [10.3 Rio..12 Athens]
  • Macapi.ObjectiveC ユニット
    MethodNameAttribute [MethodName]
    [XE4..12 Athens]Delphiで定義したObjective-Cのメソッドに対して、Objective-C上の本来のメソッド名を指定する
  • Androidapi.JNIBridge ユニット
    JavaSignatureAttribute [JavaSignature]
    [XE5..12 Athens]Delphiで定義したAndroid(JNI)のクラス(インタフェース)に対して、Android上の本来のクラス名を指定する
  • System.Win.WinRT ユニット
    WinRTClassNameAttribute [WinRTClassName]
    [10 Seattle..12 Athens]Delphiで定義したWinRT APIのインタフェースに対して、WinRT上の本来のクラス名を指定する
  • Web.HTTPDMethods ユニット
    HTTPDConfigAttribute [HTTPDConfig]
    [13 Florence](調査中)
    HTTPDDirectiveAttribute [HTTPDDirective]
    [13 Florence](調査中)
  • Web.Stencils ユニット
    WebStencilsVarAttribute [WebStencilsVar]
    [12 Athens Update 2..13 Florence](調査中)
Delphiのバージョンごとの違い:
  • Delphi 2010ではシステムで使用する定義済の属性はない。
  • Delphi XEではDataSnap関係でTRoleAuthと、DBX関係でJSONリフレクションのためのJSON...が定義された。
  • Delphi XE2ではマルチプラットフォーム対応のためにComponentPlatformsAttributeが定義された。
  • Delphi XE3ではARC対応としてWeakAttribute/UnsafeAttribute/RefAttributeが、またおそらく将来の旧RTTIから新RTTIへの移行のためにTDefaultAttributeBase/DefaultAttribute/NoDefaultAttribute/StoredAttributeが、LiveBinding対応のためにObservableMemberAttributeが、それぞれ定義された。
  • Delphi XE4ではiOS対応としてMethodNameAttributeが定義された。
  • Delphi XE5ではJSONのリフレクションがDBXから分離されたためData.DBXJSONReflectのJSON...がREST.JsonReflectにも再定義され、Android対応としてJavaSignatureAttributeが定義された。
  • Delphi XE6ではREST.JsonReflect.JsonReflectがREST.JsonReflect.JsonReflectAttributeにクラス名が変更され、JsonReflectAttribute以外のJson...の定義がREST.JsonReflectユニットからREST.Json.Typesユニットに移動した。
  • Delphi XE7ではStoredAttributeの定義がSystem.ClassesユニットからSystemユニットに移動し、EMSのためにResourceSuffixAttribute/ResourceNameAttribute/EndpointNameAttributeが定義された。
  • Delphi XE8ではHPPGENAttributeとHFAAttributeが定義された。
  • Delphi 10 SeattleではAlignAttributeとWinRTClassNameAttributeが定義された。
  • Delphi 10.1 Berlinでは全てのコンパイラで[weak][unsafe][volatile]属性がサポートされるようになった(10 Seattle以前はNEXTGENコンパイラのみ)。またEMS APIリソースの取得で使用するカスタムAPIドキュメント用のTResourceCustomAttribute/EndPointRequestSummaryAttribute/EndPointRequestParameterAttribute/EndPointResponseDetailsAttribute/EndPointObjectsYAMLDefinitionsAttribute/EndPointObjectsJSONDefinitionsAttributeが定義された。
  • Delphi 10.2 TokyoではSystem.JSON.Serializersユニットが追加されてJSONシリアライズ関係のJson...が定義され、EMSのマルチテナントサポートのためにAllowAnonymousTenantAttributeが定義された。System.JSON.Serializersユニットについては現時点(2017/04/10)で正式にドキュメントされていないため、LynaさんのDelphi 10.2 Tokyoのdocwikiに書かれてなさそうな変更点。 - 全力わはー、TJsonSerializerの使い方。 - 全力わはー、TJsonSerializerの実用例 - 全力わはーあたりを参照のこと。
  • Delphi 10.3 RioではEMS.ResourceTypesユニット上の属性クラスの継承関係が組み替えられた。
  • Delphi 10.4 SydneyではObservableMemberExtAttributeが定義されたが、11 Alexandriaで削除された。
  • Delphi 12 AthensではJsonNameAttributeの定義がSystem.JSON.Typesユニットに移動し、REST.Json.TypesユニットにJSONSerializeAttributeが定義された(System.JSON.SerializersユニットのJSONSerializeAttributeとは別のものらしい?)。またUpdate 2でWebStencilsVarAttributeが定義された。
  • Delphi 13 FlorenceではJsonExcludeValueAttribute、JsonValueSerializeAttribute、EndpointHideAttribute、ResourceVersionAttribute、EndPointResponseHeaderAttribute、HTTPDConfigAttribute、HTTPDDirectiveAttributeが定義された。
なおUnsafe属性のようにメソッドの戻値に属性を指定したい場合は、メソッドの宣言の前に[Result: <attr>]をつけて、
[Result: Unsafe]function Foo: TObject;
のようにします。

2015/06/19追記: Delphi XE6/XE7/XE8に関する情報を追加。
2015/10/05追記: Delphi 10 Seattleに関する情報を追加。
2016/05/02追記: Delphi 10.1 Berlinに関する情報を追加。
2017/04/10追記: Delphi 10.2 Tokyoに関する情報を追加。Lynaさんのところから大量に引用させていただきました。ありがとうございます。
2019/03/07追記: Delphi 10.3 Rioに関する情報を追加。
2023/12/21追記: Delphi 10.4 Sydney/11 Alexandria/12 Athensに関する情報を追加。
2025/10/10追記: Delphi 13 Florenceに関する情報を追加。

2014年3月7日

Appmethod

エンバカデロ・テクノロジーズから新しい開発環境Appmethodがアナウンスされています。

appmethod | Build Apps for Android, iOS, Windows, and Mac

(あとで追記予定)

2014年3月6日

2012年12月24日

[eBook]Parallel Programming with OmniThreadLibrary

LeanpubでPrimoz GabrijelcicさんによるDelphi上のマルチスレッドライブラリOmniThreadLibrary(OTL)の解説書である

Parallel Programming with OmniThreadLibrary/Primoz Gabrijelcic著/Leanpub/30.00USD

を購入(PDF/EPUB/MOBIをダウンロード可能)。

この本は現在も執筆中で、状況はThe Delphi Geek: Parallel Programming with OmniThreadLibrary – Current Statusで確認できます。現時点(2012/12/24)ではだいたい半分ちょっとまで書き進んだ感じです。