2015年5月21日

第30回エンバカデロ・デベロッパーキャンプ

本日10:00から第30回エンバカデロ・デベロッパーキャンプ・イン東京がベルサール新宿グランドコンファレンスセンターで行われます。セッション資料は

ダウンロード | デベロッパーキャンプ

からダウンロードできるようになる予定です(2015/05/21 10:00以降)。またUStreamで全セッションの中継が予定されています(CH1がG/Fセッション、CH2がEセッション)。

無事(?)終了しました。セッションスピーカのみなさん、関係者のみなさん、おつかれさまでした。

2015/05/25追記: 早くもセッションリプレイの公開が始まっています。
  • 【G1】ケーススタディセッション ユーザーショーケース「C++Builderを用いたマルチOS対応一般コンシューマ向けスマートフォンアプリ開発事例」
  • 【G2】ジェネラルセッション「IoT時代のマルチデバイス開発環境」
  • 【F3】テクニカルセッション「業務システムにモバイルを!実践エンタープライズモバイル開発プロジェクト」
  • 【E3】Delphi/C++テクニカルセッション「移行プロジェクトでもモバイル開発でも必須!今からでも間に合うデータモジュール活用法」
  • 【F4】Delphi/C++テクニカルセッション「RAD Studio XE8 の新機能とその活用法」
  • 【E4】Delphi/C++テクニカルセッション「今さら聞けない!? FireDAC入門 ~ オンメモリーデータベース編」
  • 【F5】Delphi/C++テクニカルセッション「RAD Studioで始めるモバイル開発 ~ コンポーネントで簡単入門!勘所も押さえよう」
  • 【E5】Delphiテクニカルセッション「DelphiによるEnterpriseアプリケーション開発 ~ 当社パッケージの内部構造、開発方法ご紹介」
  • 【G6】ライトニングトーク「共有!みんなの開発事例、開発経験、テクニック」
2015/05/27追記: セッション資料がダウンロードできるようになっています。

第30回 エンバカデロ・デベロッパーキャンプ資料ダウンロード

2015年5月16日

2015年5月13日

2015年5月6日

RAD Studio/Delphi XE8 iOS 8 Simulator Hotfix (Beta)

RAD Studio/Delphi XE8のiOS 8 Simulator Hotfix (Beta) for XE8がリリースされています。FireMonkeyマルチデバイスアプリケーションをiOS 8.xシミュレータ上で動作させられるようにするもののようです。Updates, hot fixes, and patches are provided exclusively to customers with an active Update Subscription, however, this particular critical patch is being provided to all XE8 customers.とのことで、Update Subscriptionとは関係なくダウンロードできます。

30221 iOS 8 Simulator Hotfix (Beta) for XE8

iOS 8 Simulator Hotfix (Beta) for Delphi and RAD Studio XE8 is available in Registered User Downloads - Blogs
iOS8シュミレータへアプリを配置すると「No such file or directory」エラーが出る件について

2015年5月1日

2015/05開催のセミナー

2015年4月22日

DDevExtensions 2.83/IDE Fix Pack 5.9

Andreas HausladenさんDDevExtensionsIDE Fix PackがRAD Studio XE8に対応しました。

DDevExtensions 2.83 for XE8 released | Andy's Blog and Tools
IDE Fix Pack 5.9 for RAD Studio 2009-XE8 | Andy's Blog and Tools

2015/09/20追記: DDevExtensionsがRAD Studio/Delphi/C++Builder 10 Seattleに対応して再リリースされています。内容に変更はないとのことで、バージョンも2.83のままとなっています。

2015年4月15日

Microsoft Monthly Update 2015/04

今日はMicrosoftのセキュリティアップデートの日です。
MS15-032
MS15-033
MS15-034
MS15-035
MS15-036
MS15-037
MS15-038
MS15-039
MS15-040
MS15-041
MS15-042

2015年4月11日

RAD Studio/Delphi/C++Builder XE7 Update 1 iOS 8.1.3/8.2 Deployment Beta Hotfix

RAD Studio/Delphi/C++Builder XE7 Update 1のiOS 8.1.3/8.2 Deployment Beta Hotfix for XE7がリリースされています。Update subscriptionで提供されていたもの(の一部?)のようで、署名とプロビジョニングを変更してiOS 8.1.3および8.2での問題の回避策を自動化するもの、ということのようです。

30190 iOS 8.1.3/8.2 Deployment Beta Hotfix for XE7 Pro
30189 iOS 8.1.3/8.2 Deployment Beta Hotfix for XE7 Ent and above

2015/05/07追記: 3018930190とも2015/05/06(たぶんPDT)付で更新されています。A rebuilt hotfix was posted on 5/6/2015 to address issues some customers were running into.とのこと。

2015/06/04追記: 3018930190とも2015/06/03(たぶんPDT)付で再更新されています。

2015年4月10日

[書籍]SQL実践入門

紀伊國屋書店新宿本店

SQL実践入門 (amazon)/ミック著/技術評論社/ISBN 978-4774173016/2,786円

を購入。

2015年4月7日

第30回エンバカデロ・デベロッパーキャンプ開催決定

第30回エンバカデロ・デベロッパーキャンプは恒例となった大阪と東京のダブル開催(キャンプ・ツアー)で、2015年05月19日(大阪)および2015年05月21日(東京)に開催されます。

デベロッパーキャンプ

今回は製品担当マネージャであり、Handbookシリーズの著者でもあるMarco Cantùさんの来日がついに実現します。

RAD Studio/Delphi/C++Builder XE8リリース

RAD Studio/Delphi/C++Builder XE8が正式にリリースされました(販売開始は明日(2015/04/08)とのこと)。

RAD Studio XE8の新機能

Delphi® XE8 および C++Builder® XE8 オンライン ヘルプ (en)
XE8 のリリース ノート - RAD Studio (en)
Delphi XE8 および C++Builder XE8 の新機能 - RAD Studio (en)
RAD Studio XE8(Delphi XE8/C++Builder XE8) における不具合修正リスト (en)

30171 Delphi XE8 and C++Builder XE8 ISO

30185 BDE Installer for RAD Studio, Delphi, C++Builder XE8
30197 Missing SQL database files for Delphi XE8 (インストール時のオプションによりiOS用のlibファイルが不足する不具合のfix)
30326 Missing Java2Op files for RAD Studio, Delphi, and C++Builder XE8 (JavaOp2に必要なファイルが不足している不具合のfix)

30146 IP*Works for Delphi XE8
30147 IP*Works for C++Builder XE8
30148 AQtime Standard for RAD Studio, Delphi and C++Builder XE8
30186 FastReport VCL 5 for RAD Studio, Delphi and C++Builder XE8
30149 FastReport FMX for RAD Studio, Delphi and C++Builder XE8
30232 Mida Converter Basic for RAD Studio XE8

30179 VCL Premium Styles Pack for RAD Studio, Delphi & C++Builder XE8
30180 FireMonkey Premium Styles Pack for RAD Studio XE8
30183 RAD Studio XE8 FireMonkey Accessibility Pack
30233 Custom VCL Style for Windows 10
30258 Custom FireMonkey Style for Windows 10

2015/04/07注記: FastReprt VCLはまだリリースとなっていないようです。

2015/04/08追記: FastReprt VCLもリリースされました。

2015/04/11追記: 30148 AQtime Standard for RAD Studio, Delphi and C++Builder XE8が2015/04/10付で差し替えになっています。

2015/08/11追記: 必要なファイルが不足していてJava2Opが動作しない件のfix(30326)のリンクを追加しました。

2015年4月1日

Firebird 2.5.4

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

Firebird: Firebird 2.5.4
Firebird 2.5 リリースノート (PDF)
Firebird 2.5 Release Notes (PDF)

2015/10/10追記: 日本語版のリリースノートのリンクを追加しました。Firebird日本ユーザー会の翻訳によるものです。翻訳に関わった皆さん、ありがとうございます。

2015/04開催のセミナー

2015/04/07追記: RAD Studio/Delphi/C++Builder XE8関係のwebセミナーの情報を追記しました。

2015年3月11日

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年ロードマップ

2015年2月16日

IDE Fix Pack 5.8

Andreas HausladenさんIDE Fix PackがアップデートされてVersion 5.8になっています。このバージョンでは規模の大きなパッケージが別の大きなパッケージに依存しているときのパフォーマンスの改善などの新機能と、Windows 8.1環境下でのDelphi 2009起動時の問題や、一部の環境でIDE Fix Packをインストール/アンインストールしようとしたときにエラーが発生する問題などの修正が行われています、

IDE Fix Pack 5.8 for 2009-XE7 released | Andy's Blog and Tools

2015年2月11日

Microsoft Monthly Update 2015/02

今日はMicrosoftのセキュリティアップデートの日です。
MS15-009
MS15-010
MS15-011
MS15-012
MS15-013
MS15-014
MS15-015
MS15-016
MS15-017

2015年1月14日

Microsoft Monthly Update 2015/01

今日はMicrosoftのセキュリティアップデートの日です。
MS15-001
MS15-002
MS15-003
MS15-004
MS15-005
MS15-006
MS15-007
MS15-008

2015年1月9日

RAD Studio/Delphi/C++Builder XE7 Update 1 Beta hotfix for FireMonkey apps on Android 5.0 (Lollipop)

RAD Studio/Delphi/C++Builder XE7 Update 1のBeta hotfix for FireMonkey apps on Android 5.0 (Lollipop)がリリースされています。Marco CantuさんのLollipop Hotfix (Beta) for Delphi and C++ Builder XE7によると、Android 5 (Lollipop)でデフォルトとなったART KernelとのJNI Bridgeによる配列データの受け渡しの問題(RSP-9738など)に対応するとのことです。

30110 Beta hotfix for FireMonkey apps on Android 5.0 (Lollipop)

2015/01/14追記: RAD Studio XE7 Update 1とAndroid 5.0(Lollipop)との互換性の問題はQC上だとQC129208QC129086が該当するものとのことです。高橋さん、いつも情報ありがとうございます。

InterBase XE3 Update 4 Hotfix 3

InterBase XE3 Update 4 Hotfix 3がリリースされています。バージョンは11.0.4.820となっています。

30112 InterBase XE3 Update 4 Hotfix 3 (11.0.4.820) for Windows

2015年1月6日

シリアルポートをフレンドリ名で列挙する

以前使用できるシリアルポートをレジストリから列挙する方法について書きましたが、今度はシリアルポートをそのフレンドリ名(デバイスマネージャ上で表示される表記)とともに列挙する方法です。

フレンドリ名の取得にはSetup APIを使用しますが、残念ながらDelphiにはSetup API関係の定義が含まれていない(C++Builderならsetupapi.hがあるのですが)ため、まずは必要なWin32APIと構造体を定義します。
{ Setup APIs }
type
  { HDEVINFO }
  HDEVINFO = THandle;
  {$EXTERNALSYM HDEVINFO}

  { SP_DEVINFO_DATA }
  SP_DEVINFO_DATA = packed record
    cbSize: DWORD;
    ClassGuid: TGUID;
    DevInst: DWORD;
    Reserved: ULONG_PTR;
  end;
  {$EXTERNALSYM SP_DEVINFO_DATA}

const
  { Flags for SetupDiGetClassDevs }
  DIGCF_PRESENT         = $00000002;
  {$EXTERNALSYM DIGCF_PRESENT}

  { Property for SetupDiGetDeviceRegistryProperty }
  SPDRP_DEVICEDESC      = $00000000;
  {$EXTERNALSYM SPDRP_DEVICEDESC}
  SPDRP_FRIENDLYNAME    = $0000000C;
  {$EXTERNALSYM SPDRP_FRIENDLYNAME}

  { Scope for SetupDiOpenDevRegKey }
  DICS_FLAG_GLOBAL      = $00000001;
  {$EXTERNALSYM DICS_FLAG_GLOBAL}

  { KeyType for SetupDiOpenDevRegKey }
  DIREG_DEV             = $00000001;
  {$EXTERNALSYM DIREG_DEV}

{ SetupDiClassGuidsFromName }
function SetupDiClassGuidsFromName(const ClassName: PChar;
                                   ClassGuidList: PGUID;
                                   ClassGuidListSize: DWORD;
                                   var RequiredSize: DWORD): BOOL; stdcall;
  external 'SetupApi.dll' name
{$IFDEF UNICODE}
  'SetupDiClassGuidsFromNameW';
{$ELSE}
  'SetupDiClassGuidsFromNameA';
{$ENDIF}
{$EXTERNALSYM SetupDiClassGuidsFromName}

{ SetupDiGetClassDevs }
function SetupDiGetClassDevs(ClassGuid: PGUID;
                             const Enumerator: PChar;
                             hwndParent: HWND;
                             Flags: DWORD): HDEVINFO; stdcall;
  external 'SetupApi.dll' name
{$IFDEF UNICODE}
  'SetupDiGetClassDevsW';
{$ELSE}
  'SetupDiGetClassDevsA';
{$ENDIF}
{$EXTERNALSYM SetupDiGetClassDevs}

{ SetupDiDestroyDeviceInfoList }
function SetupDiDestroyDeviceInfoList(DeviceInfoSet: HDEVINFO): BOOL; stdcall;
  external 'SetupApi.dll' name 'SetupDiDestroyDeviceInfoList';
{$EXTERNALSYM SetupDiDestroyDeviceInfoList}

{ SetupDiEnumDeviceInfo }
function SetupDiEnumDeviceInfo(DeviceInfoSet: HDEVINFO;
                               MemberIndex: DWORD;
                               var DeviceInfoData: SP_DEVINFO_DATA): BOOL; stdcall;
  external 'SetupApi.dll' name 'SetupDiEnumDeviceInfo';
{$EXTERNALSYM SetupDiEnumDeviceInfo}

{ SetupDiGetDeviceRegistryProperty }
function SetupDiGetDeviceRegistryProperty(DeviceInfoSet: HDEVINFO;
                                          const DeviceInfoData: SP_DEVINFO_DATA;
                                          Prop: DWORD;
                                          PropertyRegDataType: PDWORD;
                                          PropertyBuffer: Pointer;
                                          PropertyBufferSize: DWORD;
                                          var RequiredSize: DWORD): BOOL; stdcall;
  external 'SetupApi.dll' name
{$IFDEF UNICODE}
  'SetupDiGetDeviceRegistryPropertyW';
{$ELSE}
  'SetupDiGetDeviceRegistryPropertyA';
{$ENDIF}
{$EXTERNALSYM SetupDiGetDeviceRegistryProperty}

{ SetupDiOpenDevRegKey }
function SetupDiOpenDevRegKey(DeviceInfoSet: HDEVINFO;
                              var DeviceInfoData: SP_DEVINFO_DATA;
                              Scope: DWORD;
                              HwProfile: DWORD;
                              KeyType: DWORD;
                              samDesired: REGSAM): HKEY; stdcall;
  external 'SetupApi.dll' name 'SetupDiOpenDevRegKey';
{$EXTERNALSYM SetupDiOpenDevRegKey}
これらを使用してシリアルポートをそのフレンドリ名とともに取得します。
function EnumSerialCommWithFriendlyName(const S: TStrings): Integer;
var
  Guid: TGUID;
  Size: DWORD;
  hDevInf: HDEVINFO;
  Index: DWORD;
  DevInfoData: SP_DEVINFO_DATA;
  S1: String;
  hRegKey: HKEY;
  S2: String;
  RegType: DWORD;
  PortNo: Integer;
begin

  Result := 0;

  Size := 0;
  if SetupDiClassGuidsFromName('Ports',@Guid,1,Size) = False then
  begin
    RaiseLastOSError;
  end;

  hDevInf := SetupDiGetClassDevs(@Guid,nil,0,DIGCF_PRESENT);
  if hDevInf = INVALID_HANDLE_VALUE then
  begin
    RaiseLastOSError;
  end;

  try
    Index := 0;
    while True do
    begin
      FillChar(DevInfoData,SizeOf(DevInfoData),0);
      DevInfoData.cbSize := SizeOf(DevInfoData);
      if SetupDiEnumDeviceInfo(hDevInf,Index,DevInfoData) = False then
      begin
        Break;
      end;

      SetupDiGetDeviceRegistryProperty(hDevInf,DevInfoData,SPDRP_FRIENDLYNAME,
                                       nil,nil,0,Size);
      SetLength(S1,(Size + SizeOf(Char)) div SizeOf(Char));

      if SetupDiGetDeviceRegistryProperty(hDevInf,DevInfoData,SPDRP_FRIENDLYNAME,
                                          nil,PChar(S1),Size,Size) = True then
      begin
        SetLength(S1,StrLen(PChar(S1)));
        hRegKey := SetupDiOpenDevRegKey(hDevInf,DevInfoData,DICS_FLAG_GLOBAL,0,DIREG_DEV,KEY_READ);
        if hRegKey <> INVALID_HANDLE_VALUE then
        begin
          try
            if RegQueryInfoKey(hRegKey,nil,nil,nil,nil,nil,nil,nil,nil,
                               @Size,nil,nil) = ERROR_SUCCESS then
            begin
              SetLength(S2,(Size + SizeOf(Char)) div SizeOf(Char));
              if (RegQueryValueEx(hRegKey,'PortName',nil,@RegType,Pointer(PChar(S2)),
                                  @Size) = ERROR_SUCCESS) and
                 (RegType = REG_SZ) then
              begin
                SetLength(S2,StrLen(PChar(S2)));
                if CompareText(Copy(S2,1,3),'COM') = 0 then
                begin
                  if TryStrToInt(Copy(S2,4,Length(S2)),PortNo) = True then
                  begin
                    S.AddObject(S1,Pointer(PortNo));
                    if Result < PortNo then
                    begin
                      Result := PortNo;
                    end;
                  end;
                end;
              end;
            end;

          finally
            RegCloseKey(hRegKey);
          end;
        end;
      end;

      Index := Index + 1;
    end;

  finally
    SetupDiDestroyDeviceInfoList(hDevInf);
  end;

end;
手順ですが、まずSetupDiClassGuidsFromNameでデバイスインタフェースクラスが'Ports'のGUIDを取得し、そのGUIDを使用してSetupDiGetClassDevsで現在システムに認識されているDevice Information Setsを取得し、SetupDiEnumDeviceInfoでDevice Information Set一つずつの情報をSP_DEVINFO_DATAに取り出して、SetupDiGetDeviceRegistryPropertyでフレンドリ名を取得します。さらにSetupDiOpenDevRegKeyでデバイス固有情報の含まれるレジストリキー('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum'の下のデバイスごとのキーに含まれる'Device Parameters'キー)を開き、RegQueryValueExで'PortName'という名前でREG_SZの値のデータを文字列として取得し、'COM'で始まっていたらシリアルポートとしてフレンドリ名とともにパラメータ(S: TStrings)に格納します。全てのDevice Information Setをチェックし終わったらSetupDiDestroyDeviceInfoListでDevice Information Sets全体を解放します。 以前のものと同様に必ずしもポート番号順にはなっていないため、必要に応じて結果をソートしてください。

シリアルポートをフレンドリ名で列挙 (Gist)

2014年12月22日

[書籍]MariaDB & MySQL全機能バイブル

MARUZEN&ジュンク堂書店 渋谷店

MariaDB & MySQL全機能バイブル (amazon)/鈴木啓修、山田奈緒子著/技術評論社/ISBN 978-4-7741-7020-6/3,780円

を購入。

2014年12月12日

Firebird 2.5.3 Security Update 1/2.1.7

Firebird Ver2.5.3 Security Update 1(Build 26780)およびVer2.1.7(Build 18553)がリリースされています。

Firebird: Firebird 2.5.3 Security Update 1
Release Notes (PDF)

Firebird: Firebird 2.1.7
Release Notes (PDF)

認証されていないユーザから特別に加工されたパケットを送りつけることでリモートDoS攻撃を受けてしまうセキュリティホールが報告されており、これに対応するものです。信頼できないネットワークからのアクセスを受けるような状況ではアップデートを考慮すべきかと思われます。

2014年12月10日

Microsoft Monthly Update 2014/12

今日はMicrosoftのセキュリティアップデートの日です。
MS14-075
MS14-080
MS14-081
MS14-082
MS14-083
MS14-084
MS14-085

2014年12月8日

[書籍]Web API

MARUZEN&ジュンク堂書店 渋谷店

Web API (amazon)/水野貴明著/オライリージャパン/ISBN 978-4-87311-686-0/2,376円

を購入。

2014年12月4日

InterBase XE7リリース

InterBase XE7(12.0.0.191)がリリースされています。現時点(2014/12/04)でDeveloper EditionとServer Edition(トライアル版)の英語版のみダウンロード可能です。2014/12/12にDeveloper EditionとServer Edition(トライアル版)の日本語版もダウンロードできるようになりました。

エンバカデロ、マルチデバイス対応のハイパフォーマンスデータベースInterBaseの新バージョンを発表 | Press Releases

30090 InterBase XE7 (12.0.0.191) Developer Edition, Japanese
30066 InterBase XE7 (12.0.0.191) Developer Edition, English

InterBase XE7 Readme (en)
InterBase XE7 Readme - InterBase (en)

What's New in InterBase XE7
What's New in InterBase XE7 - InterBase

2014/12/09追記: InterBase XE7(開発コードネーム"DeltaForce")では次のような新機能が追加されたとのことです。
  • Change Views機能(テーブルの変更履歴を簡単に追跡する)
  • 64ビット版LinuxとUbuntu Linuxのサポート(RHEL 6/7、SUSE 11、Ubuntu 14)
  • パフォーマンスの向上(SMP環境でのパフォーマンスの向上、トランザクションの改善)
  • トランザクションIDの64ビット化
  • インクリメンタルデータダンプ(データダンプ時に変更があったページのみを対象に)
  • APIの拡張(オンラインダンプ/インクリメンタルダンプ、ジャーナルアーカイブ関係APIの追加)
  • パフォーマンス監視の更新(パフォーマンスモニタリングカウンタを64ビット化)
  • 以前のバージョンのODSのサポート(ODS 13/14/15をそのまま使用可能に)
詳しくはこちらを。
InterBase XE7 - Blogs
What's New in InterBase XE7 - InterBase

2014年11月14日

RAD Studio/Delphi/C++Builder XE7 Update 1

RAD Studio/Delphi/C++Builder XE7のUpdate 1がリリースされています。

Update 1 for RAD Studio, Delphi and C++Builder XE7

30048 Delphi XE7 and C++Builder XE7 ISO (includes Update 1)

XE7 Update 1 のリリース ノート - RAD Studio (en)

Update 1 Fix List for RAD Studio XE7, Delphi XE7, and C++ Builder XE7

2014/11/19追記: XE7 Update 1でFMX/2DのフォームにTViewport3Dを配置すると、フォームデザイナで開きなおしたときにサイズが正しく反映されない、という問題([RSP-9732] TViewport3D does not resize properly in Update 1)が報告されています。FMXで3Dアプリケーションを開発している方はUpdate 1のインストールを見合わせたほうがよいかもしれません。

2014/12/03追記: XE7 Update 1の[RSP-9732] TViewport3D does not resize properly in Update 1を修正するHotfixがリリースされています。

30070 Hotfix for FMX component with custom size reverting to default

2014年11月12日

Microsoft Monthly Update 2014/11

今日はMicrosoftのセキュリティアップデートの日です。
MS14-064
MS14-065
MS14-066
MS14-067
MS14-068
MS14-069
MS14-070
MS14-071
MS14-072
MS14-073
MS14-074
MS14-075
MS14-076
MS14-077
MS14-078
MS14-079

なんだこのリリース日未定ってのは…?

2014/11/19追記: MS14-068がリリースされています。

2014/12/10追記: MS14-075は2014/12のアップデートに含まれる形でリリースされました。

2014年11月11日

第29回エンバカデロ・デベロッパーキャンプ

本日10:00から第29回エンバカデロ・デベロッパーキャンプ・イン東京がエビススバルビル EBiS303 カンファレンススペースで行われます。セッション資料は

ダウンロード | デベロッパーキャンプ

からダウンロードできるようになる予定です(2014/11/10 10:00以降)。またUStreamで全セッションの中継が予定されています(CH1がC/Gセッション、CH2がAセッション)。

無事に終了しました。セッションスピーカ/LT参加者の皆さん、参加者の皆さん、関係者の皆さん、おつかれさまでした。

2014/11/19追記: セッション資料がダウンロードできるようになっています。またセッションリプレイも順次公開されています。

第29回 エンバカデロ・デベロッパーキャンプ資料ダウンロード

  • 【C1】Delphi/C++テクニカルセッション「ゲームUIから考えるこれからのエンタープライズUX」
  • 【A1】Delphiテクニカルセッション「オンプレからクラウドに移行する中、新旧含め様々なデバイスと接続しないといけない要求にDelphiのクラウド接続で応えてみる」
  • 【C2】テクニカルセッション「着飾らない IoT」
  • 【A2】Delphiテクニカルセッション「Delphiで作るデータベースツール。その開発のポイントは・・」
  • 【G3】ジェネラルセッション「エンバカデロのマルチデバイス開発環境の現在、そして将来」
    • Replay (1/2)
    • Replay (2/2)
  • 【C4】テクニカルセッション「マルチデバイス向けアプリ開発・構築におけるデータハンドリングのいろいろ」
  • 【A4】Delphi/C++テクニカルセッション「FireMonkeyの仕組み」
  • 【C5】Delphi/C++テクニカルセッション「マルチデバイス対応アプリ開発の勘所」
  • 【A5】C++テクニカルセッション「C++コンパイラアップデート」
    • Replay (1/2)
    • Replay (2/2)
  • 【G6】ライトニングトーク「共有!みんなの開発事例、開発経験、テクニック」
    • Replay (1/2)
    • Replay (2/2)

2014年10月15日

Microsoft Monthly Update 2014/10

今日はMicrosoftのセキュリティアップデートの日です。
MS14-056
MS14-057
MS14-058
MS14-059
MS14-060
MS14-061
MS14-062
MS14-063

2014年10月11日

[書籍][eBook]Delphi Cookbook

Packt Publishingで注文した

Delphi Cookbook (amazon US, amazon JP)/Daniele Teti著/Packt Publishing/ISBN 9781783559589/26.99GBP(Print+eBook)

が配送されてきました(今回の配送はFedEx/佐川急便で、シンガポールからの発送でした)。2014/09/26に注文して15日目の到着、26.99GBP=4,720JPY(暫定、1GBP=174.88JPY)4,875JPY(1GBP=180.623JPY)でした。

2014/10/16追記: 興味がある方がいるかどうかはわかりませんが、一応自分のために目次をてきとうに訳してみました。
  • 序文
  • 第1章 Delphiの基本
    • イントロダクション
    • VCLスタイルでアプリケーションのルックアンドフィールをコードなしに変更する
    • 実行時にVCLアプリケーションのスタイルを変更する
    • TDBGridをカスタマイズする
    • オーナドローコンボボックスとリストボックスを使う
    • 埋め込みフォームをスタックする
    • JSONを操作する
    • XMLドキュメントを操作/変換する
    • 21世紀のI/O - ストリームを知る
    • VCLアプリケーションをタスクトレイに格納する
    • Windowsのサービスを作る
    • Windows上でアプリケーションに拡張子を関連付けする
  • 第2章 Delphi言語のNinjaになる
    • イントロダクション
    • 無名メソッドを楽しむ - 高階関数を使う
    • 列挙可能な型を書く
    • RTTIで救出 - クラスを実行時に設定する
    • RTTIでダックタイピング
    • クラスにヘルパを作成する
    • 正規表現で文字列をチェックする
  • 第3章 FireMonkeyでクロスプラットフォーム
    • イントロダクション
    • FireMonkey標準のコントロールにスタイルを適用して新しい体裁を与える
    • スタイルを適用したTListBoxを作る
    • アニメーションで顧客に印象付ける
    • LiveBindingでマスタ/詳細を使う
    • パスを使って複雑なベクタ図形を表示する
    • VCLアプリケーションでFireMonkeyを使う
  • 第4章 マルチスレッディングの千の顔
    • イントロダクション
    • TMonitorで共有リソースを同期する
    • スレッドセーフキューでメインスレッドと会話する
    • TEventで複数のスレッドと同期する
    • オシロスコープのように測定値を2Dグラフに表示する
  • 第5章 サーバでDelphiを動かす
    • イントロダクション
    • サーバ上のWebBrokerを使用したwebクライアントのJavaScriptアプリケーション
    • コンソールサービスアプリケーションをWindowsサービスに書き換える
    • データセットをJSONにシリアライズして元に戻す
    • RTTIでオブジェクトをJSONにシリアライズして元に戻す
    • パラメータをエンコードしてPOST HTTPリクエストを送信する
    • WebBrokerでRESTfulインタフェースを実装する
    • UDPでリモートアプリケーションを制御する
    • アプリケーションテザリングを使ってコンパニオンアプリケーションを作る
    • DataSnapのApacheモジュールを作る
  • 第6章 FireMonkeyでモバイル革命に乗る
    • イントロダクション
    • 写真を撮り、エフェクトを適用し、シェアする
    • リストビューでローカルデータを表示して検索する
    • メインスレッドをブロックするな!
    • SQLiteデータベースでTo-Doリストを扱う
    • スタイルを適用したTListViewでデータの長いリストを扱う
    • 連続的に写真とロケーションを取得してサーバに送信する
    • バックエンドと会話する
    • アプリケーションから電話を掛ける
    • アプリケーションのライフサイクルを追跡する
  • 第7章 特定のプラットフォームの機能を使う
    • イントロダクション
    • Android SDKのJavaクラスを使う
    • iOSのObjective-C SDKクラスを使う
    • アプリケーションでPDFファイルを表示する
    • Androidのインテントを送信する
    • 電話を喋らせる - AndroidのTextToSpeechエンジンを使う
  • 索引

2014年10月9日

第29回エンバカデロ・デベロッパーキャンプ開催決定

第29回エンバカデロ・デベロッパーキャンプは大阪と東京のダブル開催(キャンプ・ツアー)で、2014年11月07日(大阪)および2014年11月11日(東京)に開催されます。

デベロッパーキャンプ

今回は製品担当ディレクタのJohn Thomasさんがいらっしゃるようです。

2014年10月1日

2014/10開催のセミナー

2014年9月19日

2014年9月10日

Microsoft Monthly Update 2014/09

今日はMicrosoftのセキュリティアップデートの日です。
MS14-052
MS14-053
MS14-054
MS14-055

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開催のセミナー