2011年11月30日

[書籍]プログラミングC# 第6版

MARUZEN&ジュンク堂書店 渋谷店Programming C# 4.0の翻訳である

プログラミングC# 第6版 (amazon)/Ian Griffiths、Matthew Adams、Jesse Liberty著/鈴木幸敏、首藤一幸、株式会社情報技研訳/オライリージャパン/ISBN 978-4-87311-517-7/5,040円

を購入。

2011年11月28日

JVCL 3.45リリース

JVCL(JEDI Visual Component Library)がアップデートされてVersion 3.45(JCL Version 2.3.1)になっています。

JEDI VCL for Delphi - Browse /JVCL 3/JVCL 3.45 at SourceForge.net

またAndreas HausladenさんがコマンドラインコンパイラDCC32/DCC64が付属していないDelphi/C++Builder XE2 Starter SKUのためのコンパイル済バイナリのインストーラをCodeCentralにアップロードしています(上記のリリースバージョンそのものではなく、JCLはsvn revision 3634、JVCLはsvn revision 13184から作成したものとのことです)。

28636 Jedi Code Library 2.4.0.4198r3634 BinaryInstaller for XE2
28637 Jedi Visual Component Library 3.45r13184 BinaryInstaller for XE2

元ねたはUpdated JCL and JVCL Binary Installers for XE2 | Andy’s Blog and Tools

2011年11月22日

DORM (Delphi ORM)

Delphi XEの新機能の新しい(拡張された)RTTIと属性の利用方法として考えられるもののひとつとしてORM(Object-relational mapping)があります。新しいRTTIでクラスの持つプロパティと型情報を参照してデータベースとのマッピングに利用し、属性で個別の細かい制御を行う、というアイデアはわりと一般的なものかもしれません。実験的な実装はいくつかあるようですが、一応実用に耐えるレベルのもの、となるといまのところDaniele TetiさんによるDORM (Delphi ORM)ぐらいでしょうか。

DORM, the Delphi ORM

Delphi XE/XE2で使用可能で、対応データベースはいまのところdbExpress経由のFirebird (2.1+)またはInterBase (2009+)です。ライセンスはApache License 2.0 (en)となっています。

先日のITDevCon 2011のDaniele Tetiさんのセッションのプレゼンテーション資料

DORM, the Delphi ORM

が参考になります。

元ねたはwhile true do; » Blog Archive » dorm, “The Delphi ORM”, officially published at ITDevCon

2011年11月15日

AppWave評価ガイドビデオ

YouTubeのEmbarcaderoTechJapanチャンネルにAppWave評価ガイドのビデオがアップロードされています。興味深い。とりあえずメモ。

AppWave評価ガイド #1 - AppWaveのインストール - YouTube
AppWave評価ガイド #2 - AppWaveブラウザを使う - YouTube
AppWave評価ガイド #3 - AppWaveを管理する - YouTube
AppWave評価ガイド #4 - AppWaveアプリを作成する - YouTube
AppWave評価ガイド #5 - 既存のDelphiアプリケーションをアプリ化する - YouTube

ただしAppWaveを使用するとDelphi 2007の登録情報が破損するという情報がありますので、注意が必要です。以下tweetを引用。

http://twitter.com/#!/Tokcyu3/status/101190890642608128
AppWaveを使うとなにかのタイミングでDelphi2007の登録情報が飛んじゃうみたい。今のところ2回再登録した。ぐむむぅ…

http://twitter.com/#!/ht_deko/status/134647986130137089
先日 Delphi 2007 の再登録が必要になってしまった件は これが原因か。そういや確かに触ったよ AppWave。 RT @Tokcyu3 AppWaveを使うとなにかのタイミングでDelphi2007の登録情報が飛んじゃうみたい。今のところ2回再登録した。ぐむむぅ…

2011/11/18追記: Delphi 2007との相性の問題がQC101120として登録されています。

2011年11月11日

Generic collections library (delphi-coll)

Delphi 2009の新機能の一つにジェネリクスがあります。このジェネリクス機能を簡単に利用するためのジェネリクスクラスとして、Delphiには標準でGenerics.Collectionsユニットにが用意されています。しかしC++のSTL(Standard Template Library)のコンテナや.NET Frameworkのジェネリックコレクションに比べると必ずしも十分とはいえません。これを補うものとしてCiobanu AlexandruさんによるGeneric collections library (delphi-coll)というライブラリがあります。

delphi-coll - Generic collections library for Delphi 2010 and XE - Google Project Hosting

ライセンスは修正BSD (en)となっています。

delphi-collにはList、Queue、Stack、Set、Dictionary、Bag、MultiMap、BidiDictionary、BidiMapの各基本ジェネリクスクラスと、これらに対するObject、Linked、Sortedやその組み合わせなどにより修飾された多数のバリエーションがあります。詳細は

CollectionDetails - delphi-coll

を参照してください。またDelphi標準のジェネリクスクラスとの違いについては

DifferencesFromGenericsCollections - delphi-coll

に記述されています。なおdelphi-collをDelphi XE2で使用する場合は最新版(1.2)をSVNでチェックアウトする必要があるようです。またDelphi XE2 Update 2のコンパイラの変更により、一部のコードがエラーになる、という情報もありますので注意が必要です。

2011年11月10日

Prism XE2 Update 2

Prism XE2 Update 2がリリースされています。

28623 Embarcadero Prism XE2 Update 2 (October 2011 Release)
Embarcadero Prism XE2 Update 2 is now available
Embarcadero Prism XE2 Update 2 が公開されました

クラスヘルパ

クラスヘルパはDelphi 2007で導入された新機能で、クラスを継承することなく拡張するためのものです(Delphi 2007 HandbookにはDelphi 2007でDelphi 2006とのバイナリレベルでの互換性を確保するために導入された、とあります)。当初はクラスにしか適用できませんでしたが、Delphi 2010以降ではレコード型に対しても(レコードヘルパとして)適用することができます。しかしヘルパで定義したメソッドではpublicメンバにしかアクセスできないため、ある種のシンタックスシュガーのように考えればよいと思っていました。DelphiデベロッパチームシニアソフトウェアデベロッパのMat DeLongさん Mat DeLongさんのこのアーティクルを読むまでは。

Mat DeLong : Gaining access to private fields of a class Gaining access to private fields of a class in Delphi | Mat DeLong

これによると、private/protectedメンバであっても"Self."で修飾することでアクセスできる、と書かれています。なんですと?ということでDelphi 2007以降の各バージョンで確認してみました。
  • Delphi 2007: "Self."の有無に関わらずpublicのみアクセス可能
  • Delphi 2009: "Self."とすることでprivateはアクセスできるがなぜかprotectedはアクセス不可
  • Delphi 2010/XE/XE2: "Self."とすることでprivate/protectedもアクセス可能
Delphi 2010以降であればこの方法でより突っ込んだことができそうです。

またクラス ヘルパとレコード ヘルパ(Delphi)には

ただし、ソース コードの任意の場所で適用されるヘルパの数は、0 または 1 つだけです。
とあり、ひとつのクラスに複数のヘルパを適用することはできないのですが、ヘルパの構文として

type
  identifierName = class|record helper [(ancestor list)] for TypeIdentifierName
    memberList
  end;
とあり、継承したクラスヘルパを作成することで実質的に複数のヘルパを適用することができます。
type
  TFooHelper = class helper for TFoo
  public
    procedure Bar1;
  end;

  TFooHelperEx = class helper (TFooHelper) for TFoo
  public
    procedure Bar2;
  end;

var
  Foo: TFoo;
begin
  ...
  Foo.Bar1;  // TFooHelper.Bar1
  Foo.Bar2;  // TFooHelperEx.Bar2
  ...

こんな感じです。

2020/09/23追記: Mat DeLongさんの記事のリンクを更新しました。pmcgeeさん、情報ありがとうございます。

2011年11月9日

RAD Studio/Delphi/C++Builder XE2 Update 2 Hotfix 1

RAD Studio/Delphi/C++Builder XE2 Update 2のHotfix 1がリリースされています。
  • QC100661 Update 2適用後にOSX用C++Builder FireMonkeyアプリケーションがリンカエラーになる
  • QC100640 OSX用C++Builder FireMonkeyアプリケーションでSTLコンテナがコンパイルエラーになる
の2点を修正するものです。

28622 HotFix 1 for Delphi, C++Builder and RAD Studio XE2

Microsoft Monthly Update 2011/11

今日はMicrosoftのセキュリティアップデートの日です。
MS11-083
MS11-084
MS11-085
MS11-086

2011年11月8日

Delphi XE2でWindows x86/x64に対応するShell Extentionを作成

Shell Extention (Windows Shell)はWindowsのシェルであるexplorer.exeから呼び出されるため、Windowsがx86版であればx86で、x64版であればx64でビルドする必要があります。ということでラテンアメリカ・カリブ地域担当プロダクトラインマネージャ・リードエバンジェリストのAndreano Lanusseさんによる、Delphi XE2を使って同一のソースコードからx86とx64の両方のShell Extentionを作成するサンプルです。興味深い。とりあえずメモ。

Shell Extension for Windows 32-bit and 64-bit with Delphi XE2 | Andreano Lanusse Blog | Technology and Software Development | Delphi

2011年11月7日

FastMM 4.99リリースとQC100726

Delphi/C++Builder用のメモリマネージャFastMMが4.99に更新されています。

これに関連し、FastMM 4.99で修正された不具合のうち、
- Fixed crashes in the 64-bit BASM codepath when more than 4GB of memory is allocated.
- Fixed bad record alignment under 64-bit that affected performance.
の2点がDelphi XE2 Update 2のx64用の標準メモリマネージャにも不具合として存在しており(QC100726)、FastMMのAdminであるPierre le Richeさんが非公式なfixをフォーラムに投稿しています。

Embarcadero Discussion Forums: ATTN: Piere le Riche / FastMM 4.99
Embarcadero Discussion Forums: Unofficial fix for QC#100726

なお上記の非公式fixを導入後に公式なアップデート(Update 3やHotfix for Update 2)を適用する場合は、修復セットアップやバックアップしたファイルのリストアによってこれらのファイルをインストール時のものに戻す必要があるものと思われますので注意が必要です。

ちなみにFastMMの次のバージョンは4.100になるそうです。

2011年11月3日

IDE Fix Pack 4.5リリース

Andreas HausladenさんIDE Fix Pack 2009/2010/XEがアップデートされてVersion 4.5になっています。なおIDE Fix Pack 2007については残念ながらdiscontinuedとのことです。

IDE Fix Pack 4.5 released for 2009/2010/XE/XE2+UP2 | Andy’s Blog and Tools

またDelphi XE2ではコンパイラの変更により一部のジェネリクスのコードがE2089でエラーになる、という報告がありますので注意が必要かもしれません。

2011/11/12追記: Delphi 2010にはリンカのバッファがリークしているという不具合があり、IDE Fix Packではそのバッファのサイズを拡張しているため、メモリリークの問題がより深刻になってしまいます。そこでこの問題を修正したIDE Fix Pack 4.51 for Delphi 2010がリリースされています。

IDE Fix Pack 4.51 for Delphi 2010 | Andy’s Blog and Tools

2011年11月2日

Delphi/C++Builder XE2 Update 2

Delphi/C++Builder XE2のUpdate 2がリリースされています。

28597 Update 2 for Delphi, C++Builder and RAD Studio XE2
28616 Delphi XE2 and C++Builder XE2 ISO (includes Update 2)
Delphi XE2/C++Builder XE2/RAD Studio XE2 Update 2 が公開されました
XE2 Update 2 のリリース ノート - RAD Studio XE2 (en)
Delphi XE2/C++Builder XE2 Update 2 における不具合修正リスト (en)
RAD Studio XE2 update 2 の PAServer、および FireMonkey-ios.dmg は何処にありますか?

ラテンアメリカ・カリブ地域担当プロダクトラインマネージャ・リードエバンジェリストのAndreano Lanusseさん

Update 2 for Delphi XE2, C++Builder XE2 and RadPHP XE2 available | Andreano Lanusse Blog | Technology and Software Development | C++Builder

によると、Windows XPでは"Check for Updtes"からではなくCodeCentralからUpdate 2をダウンロードしてインストールする必要があるようです。

インストール手順の補足:
  • delphicbuilder_xe2_upd2_win.exeを実行すると、展開する場所の指定などなしにいきなりファイルの展開が行われ、Update 2のsetup.exeが起動し、ファイルを展開した場所がエクスプローラで開きます。
  • Update 2の適用はかなり時間がかかります。
  • PAServerは展開されたファイルをインストール先("RAD Studio\9.0")のPAServerフォルダに上書きする必要があります(既にPAServerがインストールされている環境がある場合は、その環境上でアンインストール後に再インストールする必要もあります)。
  • FireMonkey-iOSも展開されたファイルをインストール先("RAD Studio\9.0")のFireMonkey-iOSフォルダに上書きする必要があります。またMac側にもコピーしてマウントし、FireMonkey-iOS-XE2を再インストールする必要があります。
  • Stylesはなぜか.Styleと.vsfが同一のフォルダに展開されてしまいますので、共有ドキュメント("C:\Users\Public\Documents"、Windows XP)またはパブリックドキュメント("C:\Users\Public\Documents"、Windows Vista/7)のRAD Studio\9.0\Stylesに、また再配布用にインストール先("%ProgramFiles%\Embarcadero\RAD Studio\9.0")のRedist\styles\Fmx(*.Style)およびRedist\styles\vcl(*.vsf)に、それぞれ上書きする必要があります。


2011/11/04追記: Stylesファイルに関する記述を修正しました。それから業務連絡の件、ありがとうございました>だれとなく。

RadPHP XE2 Update 2

RadPHP XE2 Update 2がリリースされています。

28614 RadPHP XE2 Update 2
RadPHP XE2 Update 2 が公開されました
RadPHP XE2 Update 2 is available now

2011年11月1日

RAD Studio/Delphi/C++Builder XE2 Help Update 1

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

28613 Help Update 1 for Delphi, C++Builder and RAD Studio XE2
リリース ノート: Delphi XE2 および C++Builder XE2 Help Update 1 - RAD Studio XE2 (en)
Masahiro Arai » Now RAD Studio XE2 help update 1 is available

新井さんはドキュメンテーション/ローカライゼーションマネージャになられたんですね。

Help Update 1にはFireMonkey関係のコンテンツがある程度含まれているようです。

FireMonkey アーキテクチャ図 - RAD Studio XE2
FMX Units List - XE2 API Documentation

2011/11開催のウェブセミナー


2011/11/14追記: 関連リンクを追加しました。

2011/11/16追記: 2011/11/30の"RadPHP XE2によるモバイルアプリ開発"のリンクを追加しました。

2011/11/22追記: 2011/11/16のリプレイビデオのリンクを追加しました。

2011/11/30追記: 2011/11/30のQ&Aに関するリンクを追加しました。

2011/12/05追記: 2011/11/30のフォローアップのリンクを追加しました。

2011/12/13追記: 2011/11/30の関連リンク、リプレイビデオのリンクを追加しました。