2014年9月6日

IDE Fix Pack 5.71

Andreas HausladenさんIDE Fix Pack for XE7がアップデートされてVersion 5.71となっています。XE7で関数名のマングリングルールが変更されていたのに対応するのを忘れていたとのことで、これを修正するとともにXE7で修正されて不要になったパッチを3つ削除したとのことです。

IDE Fix Pack 5.71 for XE7 – bug fix release | Andy's Blog and Tools

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年9月1日

2014/09開催のセミナー

  • Web Seminar
    • 2014/09/02 15:00-20:00(JST) Webセミナー「RAD Studio次期バージョンいよいよ登場!」
      • 15:00 次期バージョンブリーフィング
      • 15:45 新バージョンの機能を活用するための無料トレーニング◆FireMonkeyフレームワーク基礎
      • 16:15 デブサミ関西先取り情報◆アトラシアンオフィス訪問
      • 16:30 新バージョンの機能を活用するための無料トレーニング◆データアクセス基礎
      • 17:00 デベロッパーTV◆RAD Studio新バージョン特集
      • 18:00 デブサミ関西先取り情報◆もう怖くないモバイルアプリ開発
      • 18:15 新バージョンの機能を活用するための無料トレーニング(再)◆FireMonkeyフレームワーク基礎
      • 18:45 デブサミ関西先取り情報(再)◆アトラシアンオフィス訪問
      • 19:00 エヴァンジェリスト高橋RAD Studio新バージョン徹底デモ
    • 2014/09/17 16:30-19:30(JST) RAD Studio XE7 Webセミナーマラソン「2」「RAD Studio新バージョンの特長総ざらい」
      • 16:30 高橋智宏のDelphi / C++Builder 新機能解説(1) - 最新ライブラリ/言語機能の活用
      • 16:55 お知らせ◆iTuneカードやエンバカデログッズが当たるキーワードを発表
      • 17:00 デベロッパーTV番外編◆大阪から中継!
      • 18:00 高橋智宏のDelphi / C++Builder 新機能解説(2) - データベースアクセスとサーバーサイド開発
      • 18:25 お知らせ◆iTuneカードやエンバカデログッズが当たるキーワードを発表
      • 18:30 伊賀敏樹のシステム設計指南 - みんなDBスキーマ設計どうやってるの?
      • 18:55 お知らせ◆iTuneカードやエンバカデログッズが当たるキーワードを発表
      • 19:00 高橋智宏のDelphi / C++Builder 新機能解説(3) - モバイルアプリ開発 基礎から応用まで
      • 19:25 お知らせ◆iTuneカードやエンバカデログッズが当たるキーワードを発表
  • Live Seminar

2014年8月26日

DDevExtensions 2.82/IDE Fix Pack 5.7

Andreas HausladenさんDDevExtensionsがアップデートされてVersion 2.82になっています。クラス補完関係の機能追加とXE6上での不具合修正が含まれています。またIDE Fix PackもアップデートされてVersion 5.7になっています。こちらはいくつかのfixが追加されています。

DDevExtensions 2.82 and IDE Fix Pack 5.7 released | Andy's Blog and Tools

2014年8月19日

C++14標準規格承認

C++の新しい標準規格(C++1y)のDIS(Draft International Standard)に対する投票が終了し、全会一致で承認された、というニュースが入ってきました。

C++14の仕様策定が完了しました - Faith and Brave - C++で遊ぼう
We have C++14! : Standard C++

これによりC++の標準規格が改定され、年内にもC++14(ISO/IEC 14882:2014(E) Programming Language C++)となります。C++14ではC++11の変更内容を実装した結果として判明した不備や機能不足を補うような、小規模な変更が主とのことです。詳細は高橋晶さんの

C++14の言語拡張まとめ - Faith and Brave - C++で遊ぼう

が参考になります。次の改定は2017年ごろが予定されており、C++1zとかC++17と呼ばれています。

問題はC++BuilderでのC++14サポートと、x86のコンパイラ(BCC32)のClang/LLVM化がいつになるのか、ですね。あまり遅れずに2015/1H予想のXE8に入るとよいのですが。

2014年8月13日

Microsoft Monthly Update 2014/08

今日はMicrosoftのセキュリティアップデートの日です。
MS14-043
MS14-044
MS14-045
MS14-046
MS14-047
MS14-048
MS14-049
MS14-050
MS14-051

2014/08/16追記: MS14-045(KB2982791)を適用するとRAD Studio/Delphi/C++BuilderのIDEが生成する一時的なフォントリソースファイルがIDE終了後もWindowsによりロックされ続けてしまい、Delphi 8-2010が2回以上起動できないという障害が報告されている。回避策として今のところはKB2982791(MS14-045: Description of the security update for kernel-mode drivers: August 12, 2014)とKB2970228(Update to support the new currency symbol for the Russian ruble in Windows)の更新プログラムをアンインストールするか、IDE Fix Pack 2.8以降をインストールするかのいずれか。

2014/08/19追記: MS14-045のKB2982791の更新プログラム、および関連するKB2970228(Windows 7以降)、KB2975719(Windows 8.1/Server 2012 R2)、KB2975331(Windows 8/Windows Server 2012)は取り下げになっています。既に適用済の環境についてもアンインストールが推奨されています。

【リリース後に確認された問題】2014 年 8 月 13 日公開の更新プログラムの適用により問題が発生する場合がある - 日本のセキュリティチーム - Site Home - TechNet Blogs

2014/08/28追記: MS14-045のKB2982791を置き換えるKB2993651の更新プログラムが公開されています。

[MS14-045] 更新プログラム 2982791 の問題を解決する更新プログラム 2993651 を公開 - 日本のセキュリティチーム - Site Home - TechNet Blogs

2014年8月1日

2014/08開催のセミナー

  • Web Seminar
  • Live Seminar
    • 2014/08/05 14:00-16:30(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」(UStream中継あり)
    • 2014/08/26 14:00-16:30(JST) 技術研修セミナー「Appmethod で作る Android / iOS 業務システム開発」 ~ 見積・設計から実装まで ~

2014年7月28日

[書籍]新装版 リファクタリング

ブックファースト 渋谷文化村通り店Refactoring (Amazon.com)の翻訳の改訂版である


新装版 リファクタリング (amazon)/Martin Fowler著/児玉公信、友野晶夫、平澤章、梅澤真史訳/オーム社/ISBN 978-4-274-05019-0/4,536円

を購入。

2014年7月25日

2014年7月20日

Firebird 2.5.3

Firebird Ver2.5.3がリリースされています。

Firebird: Firebird 2.5.3
Firebird 2.5 Release Notes (PDF)

2014年7月9日

Microsoft Monthly Update 2014/07

今日はMicrosoftのセキュリティアップデートの日です。
MS14-037
MS14-038
MS14-039
MS14-040
MS14-041
MS14-042

2014/08/16追記: MS14-037(KB2962872)を適用するとMSHTMLの非互換性によりInstall Shield 2008-2014の起動時にエラーが発生する、という不具合があり、Flexeraでは回避策および暫定版のパッチを公開している。

2014/08/20追記: MS14-037(KB2962872)のMSHTMLの非互換性問題はMS14-051(KB2976627)で修正済であることを確認しました。

2014年7月8日

6th anniversary

忘れかかっていましたがこのblogも丸6年になりました。この1年間(2013/07/08-2014/07/07)のエントリは88で、週平均1.7弱でした。ほとんどお知らせのみの状態ですが、ぼちぼち再起動したいところです。続いてアクセス解析の統計情報から月別ページビュー(PV)を。

2013/07: 5,895
2013/08: 5,594
2013/09: 6,215
2013/10: 6,320
2013/11: 5,397
2013/12: 5,654
2014/01: 8,868
2014/02: 3,924
2014/03: 4,804
2014/04: 4,788
2014/05: 4,909
2014/06: 4,121
2013/07-2014/06合計: 66,489

ページ別ではこの一年もWindowsのSNP(Scalable Networking Pack)を無効にするがトップですが、一時よりはアクセス数が減少気味です。これはSNPがWindows 8以降でデフォルト無効になったことが影響しているかもしれません。

この1年はモバイル対応でリリース間隔が半年になったり、Appmethodがリリースされたりと、Windows/VCL中心のプログラマにとってはあまりいい話題がなかった気がしますが、XE6で久しぶりにWindows関係にも新機能が入りましたので、あとは予定通り品質の向上が望まれるところです(XE6はリグレッションが多すぎ)。まぁこのままいくとXE6はスキップになっちゃうんですけどね。C++もいよいよC++14の規格化が目前ですので、NEXTGENコンパイラもアップデートをお願いしたいところです(こんな話題もありますが)。

2014年7月1日

2014/07開催のセミナー

  • Web Seminar
  • Live Seminar
    • 2014/07/08 14:00-16:30(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
    • 2014/07/17 18:00-19:30(JST) 「RAD Studio XE6 - モバイル開発体験ワークショップ」
    • 2014/07/24 18:00-19:30(JST) 技術研修セミナー「C++で始めるマルチデバイス開発入門」

2014年6月27日

Firebird 2.1.6

Firebird Ver2.1.6がリリースされています。

Firebird: Firebird 2.1.6
Firebird 2.1 Release Notes (PDF)

2014年6月26日

[書籍]LLVM/Clang実践活用ハンドブック

同じくMARUZEN&ジュンク堂書店 渋谷店

LLVM/Clang実践活用ハンドブック (amazon)/出村成和著/ソシム/ISBN 978-4-88337-931-6/2,700円

を購入。積んだ。

2014年6月11日

Microsoft Monthly Update 2014/06

今日はMicrosoftのセキュリティアップデートの日です。
MS14-030
MS14-031
MS14-032
MS14-033
MS14-034
MS14-035
MS14-036

2014年6月1日

2014/06開催のセミナー