2010年3月30日

Delphiのメモリマネージャ

Delphiのメモリマネージャには大きく分けて
  • Delphi 2.0-2005の標準メモリマネージャ
  • Delphi 2006以降の標準メモリマネージャ
  • カスタムメモリマネージャ
があります(Win16は気にしないってことで)。Delphi 2.0-2005の標準メモリマネージャはWin32初期の(あまりリソースが潤沢でなかった)環境に合わせて作られており、小さいメモリブロックの割当と解放を繰り返すと空きメモリの断片化が生じたり、パフォーマンスがあまりよくないなどの欠点が指摘されてきました。一方でDelphiのRTLではメモリマネージャの置き換え(カスタムメモリマネージャ)が当初(Delphi 2.0)から考慮されており、このメカニズムを利用してこれらの問題点を改善しようというオープンソースプロジェクトがFastMMです。Delphi 2006(C++Builder 2010)ではこの成果を取り入れて新しい(FastMMベースの)メモリマネージャが採用されました。Delphi 2006(C++Builder 2010)以降でも依然としてFastMMは使用可能で、標準の新しいメモリマネージャでは省略されている詳細レポート機能などを使用することでメモリリークの発生状況をより詳細に報告させることができます。またカスタムメモリマネージャとしてはFastMMの他に中村さんのNkMM(DHGLに付属)などもあります。NkMMの詳細については

Delphi Graphic Secrets Know-how & Libraries (amazon)/中村拓男著/ソフトバンククリエイティブ(ソフトバンク パブリッシング)/ISBM978-4797319224 (ISBN4-7973-1922-4)/3,129円

のp.202-204のNOTE"Delphiのメモリ管理の大きな問題点"を参照してください(Delphi Graphic Secretsは復刊ドットコムで2010/03/30現在41票となっています)。

FastMMやDelphi 2006以降の標準メモリマネージャについては以下のURLが参考になります。

Borland Developer Studio 2006の新しいメモリマネージャ - by Pierre le Riche
Delphiアプリケーションのメモリリーク検出法
某所 - 新しいメモリマネージャの仕組み
FastMMの導入

またDelphi 2.0の標準メモリマネージャについては

Inside Delphi (amazon)/Ray Lischner著/光田秀訳/アスキー/ISBN978-4756119513 (ISBN4-7561-1951-4)/9,240円

の"第19章 ヒープの秘密"に詳細な解説があります。

2010年3月18日

IDE Fix Pack 3.01 for Delphi 2010リリース

Andreas HausladenさんIDE Fix Pack for Delphi/C++Builder 2010がアップデートされてVersion 3.01になっています。Delphi 2010版のみの更新で、リリース時の手違いによるものとのことです。

Andy’s Blog and Tools » IDE Fix Pack 3.01 for RAD Studio 2010

2010年3月17日

IDE Fix Pack 3.0リリース

Andreas HausladenさんのIDE Fix Pack (for Delphi/C++Builder 2007/2009/2010)がアップデートされてVersion 3.0になっています。

Andy’s Blog and Tools » IDE Fix Pack 3.0 released

2010年3月16日

[書籍]Delphi 2010 Handbook

2010/03/06の発売時に注文したMarco CantuさんDelphi 2010 Handbook書籍版が今日(2010/03/16)配送されてきました。さていつ読み終わることやら。
ちなみに先日のデベロッパーキャンプで藤井さんはDelphi 2010 Handbookはたぶん翻訳されないようなことを言ってました。まぁこんなご時世なので致し方ないかとは思います。

2010年3月12日

第16回 エンバカデロ・デベロッパーキャンプ 2日目

b-mobileでもLive Meetingの専用クライアントなら辛うじて動作する模様(音声なしで画像のみですけど)。
  • [2A]Delphiテクニカルセッション「Delphi 2010 言語の新機能」
    Davidさんのセッションスタート。会場でも音声状態がよくないですね(通訳さんのものを含めて)。まぁスライドを見てればいいって話ですか。英語ですけど。

  • [2B]テクニカルセッション「ソフトウェア・アーキオロジー- もしあなたが100万行のコードの引き継ぎをすることになったらどうしますか?」
    Michaelさんのセッションでもやはり音声状態がよろしくないですね。archeology(archaeology)は考古学、という言葉です。引き継いだコードは発掘した遺物のように全く未知の状態から順番に解明していく必要がある、というような比喩でしょうか。

  • Live Meetingは接続できてもイメージが来ない…b-mobileだめか。接続し直して復帰。会場内の音声も多少は改善されたかな。

  • [2C]Delphi/C++テクニカルセッション「正しいGUIの作り方 - 重い処理でGUIが固まるのを防ぐ」
    高橋さんのセッションでスレッドの内部変数のアクセスは何らかの排他処理が必要、という部分はクリティカルセクション、System.TMonitor(ja)(Delphi 2010 2009 or later)、InterlockedExchangeAddのようなInterlocked系APIなど。クリティカルセクションについては以下の問題に注意。ってQC73347は"Cannot Fix"でClosedになってますね。It is not Delphi's issue. って話じゃないと思うんだけど。
    Team Japan » InitializeCriticalSectionEx
    早くもサンプルコードが公開されています(15:56)。
    Team Japan » サンプルコードを用意しました: 【2C】 Delphi/C++テクニカルセッション

  • 昼食時間が…。

  • [2D]スペシャルスポンサーセッション「Delphi, UC-win/Road SDKによるVRアプリケーション開発事例」
    宮本さんのセッションは3Dの絵がぬるぬる動く感じが出なかったのが残念。パッケージを使ったシステムの拡張という面で非常に興味深い。書籍も出すようです。

  • [2E]Delphiコミュニティセッション「インストーラ対決一本勝負!」
    インストーラ対決で、山本さんがInstallAwareを扱っていますが、具体的なところをもっと知りたい人はとりあえずここを読んでおくべき。ちなみに奇特なってのは山本さんの表現ですから。
    ちっぷす
    インストーラでシリアル番号の認証をしたりするのであればInstall Shield Express(113,400JPY)かInstallAware Developer(1,499USD=135,900JPY)が必要です。またInno Setupでは[Code] セクションでイベント関数 CheckSerial を記述している場合には、シリアル番号入力欄が表示される。ということで可能なようです。
    Inno Setup 日本語 デベロッパーズガイド: ウィザードページ(ダイアログ)について

  • [2F]Delphiテクニカルセッション「Delphiでキカイを制御する - アプリケーションの設計とテクニック」
    高木さんのセッションは機器不調のためディレイ中(15:11)。始まりました(15:17)。説明で使用しているソースコード(ライブラリ)は後日イマジオムさんのwebページで公開されるとのこと。TCommandQueueやSynchronizeは無名関数やジェネリクスを応用したら更にいろんなことができるかも。って早っ。25分も巻いて終わりました。

  • [2G]クロージング~抽選会
    クロージングセッションには藤井さんとJasonさんが登場。Tシャツありがとうございます。QueryPerformanceCounterとか呼んでますね、このコード。ん?TThreadPoolってどこのもんでしょう?これ(Allen Bauerさんの解説)かな?どうもマルチスレッドで素数を計算するようなプログラムのような気がする…。どっちかというと.NETなのかな?

無事終了。みなさまお疲れさまでした。会場を提供していただいたフォーラムエイトさま、コンセントがあって助かりました。

2010/03/17追記: プレゼンテーション資料がダウンロードできるようになっています。

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

2010/03/18追記: ビデオもダウンロード/リプレイできるようになっています(要登録)。またアンケートも実施されています。そういえばアンケートやらなかったな、とは思っていました。

第16回 エンバカデロ・デベロッパーキャンプ ビデオ視聴/ダウンロード
第16回 エンバカデロ・デベロッパーキャンプ アンケート

2010年3月11日

第16回 エンバカデロ・デベロッパーキャンプ 1日目

会場は20人弱、中継は同時に最大140人くらいですかね(藤井さんによれば合計で200人くらいとのこと)。b-mobileでLive Meetingに参加するのはちょっと難しいみたいです。Javaのクライアント(Web Access)は動作しないし、Office Live Meetingクライアントはダウンロードできないし。期限が切れたらauかDoCoMoにするか?(仕事の都合上僻地で使えないWiMaxは選択肢に入らない)
  • [1A]イントロダクションセッション「デベロッパーキャンプを2倍楽しむ方法・新企画のご紹介」
    堀江さん頑張れ。Delphi and C++Builder Application Showcaseに日本発のものがないということでなにやら企画中とのことです。でもうちみたいに委託だとお客さんに無断で、というわけにはいかないわけでねぇ。

  • [1B]C++チュートリアルセッション「C++Builder 5/6ユーザと初心者のためのC++Builder 2010入門」
    個人的にはPadding/Marginsプロパティの意味がわかったのが収穫(C++Builder使いじゃないもので)。

  • [1C]Delphiチュートリアルセッション「Delphi 7ユーザと初心者のためのDelphi 2010入門」
    細川さんのセッションは音声トラブルのため遅延中…(14:40)。直ったのかな?リスタート(14:44)。

  • 一応各セッションは5分前終了のような雰囲気だけど、会場にいると明示的な休憩がなくてちょっと不便かも。

  • [1D]グランドオープニングセッション「エンバカデロ製品戦略 ソフト開発者・DB管理者のための真に自由なIT環境」
    Jasonさんの"What's Next?"ではToolCloud、Commodore、Fulcrum、InterBaseに言及あり。

  • [1E]Delphiテクニカルセッション「Delphiでの文字コードのハンドリングについて 」
    富永さんのセッションで出てくるWindowsのCodePageの一覧。
    Code Page Identifiers (Windows)
    新しいIPAexフォントではJIS0213:2004制定時に字体変更された文字の旧字体を異体字として収容とのこと。
    IPAフォントのダウンロード || OSS iPedia
    IPAフォントリリースノート || OSS iPedia

  • [1F]C++テクニカルセッション「C++言語のパワーとRAD/ビジュアルアプリケーション開発の活用」
    JasonさんのC++BuilderのセッションはC++0x draft準拠機能、Boostの正規表現、新しいTDirectoryクラス、デバッガのビジュアライザ、スレッドのデバッグ機能などのデモ。


1日目は無事終了。[1B][1F]を見ていて思ったのは、C++BuilderはVSユーザのなかでもC++を使いたいんだけどC++/CLIはありえない、かといってMFCはいまさら、という人にフォーカスしてアピールするといいのでは、ということ。そのためにはC++0xなどの標準準拠度の向上やBoostのようなライブラリへの積極的な対応が重要なのではないでしょうか。

2010年3月10日

Microsoft Monthly Update 2010/03

今日はMicrosoftのセキュリティアップデートの日です。
MS10-016
MS10-017

2010年3月6日

Delphi 2010 Handbook (書籍版)出版

Marco CantuさんDelphi 2010 Handbookの書籍版がAmazon(US)から発売されました。全318ページで、定価は43.50USD(3,930JPY)ですが、現時点(2010/03/06)では34.25USD(3,095JPY)のディスカウントが設定されています。またDelphi/C++Builder/RAD Studio 2010の登録ユーザはEDNのCodeCentralからPDF形式のものをダウンロードできるようになっています。

元ねたはDelphi 2010 Handbook on Amazon, Developer Network

2010/03/17追記: Delphi/C++Builder/RAD Studio 2010の登録ユーザ向のDelphi 2010 HandbookとTMS Smooth Controls Packの無償ダウンロードについての記事がEDNに追加されています。

Delphi 2010, C++Builder 2010 および RAD Studio 2010 の登録ユーザーの方へ、 2つの無償ダウンロードの提供

2010/03/27追記: Amazon(JP)での取り扱いを確認しました。4,956円で配送料無料ですし、日本語で注文できるので、こちらのほうがいいかもしれません。

Amazon.co.jp: Delphi 2010 Handbook: A Guide to the New Features of Delphi 2010; Upgrading from Delphi 2009: Marco Cantu: 洋書

元ねたはDelphi 2010 Handbook in Europe

2010年3月1日