Delphi 2009機能評価ガイド

By: Hitoshi Fujii

Abstract: Delphi 2009の機能を評価される方のために、製品の概要および新機能を説明します。


    はじめに

Delphi 2009を評価いただき、誠にありがとうございます。このガイドは、Delphi 2009を評価する際に、新機能を中心にその概要を理解いただけるように記述されています。このガイドは、3部構成となっています。第1部では、Delphi 2009の概要、基本的な製品の特徴について説明しています。第2部では、Delphi 2009の主要な機能について説明し、最新バージョンではどのような点が強化されているのかを紹介しています(いわば、この部分が、バージョンアップで得られるメリットの説明になります)。第3部では、さらに詳細な製品の拡張された機能セットの紹介を行っています。

    Delphi 2009の概要

CodeGear Delphi 2009は、広範な用途に使用できるRAD(Rapid Application Development )Windowsアプリケーション開発ツールです。x86 OSで実行可能なネイティブWin32バイナリを生成します。

Delphi 2009を用いれば、開発者は、スタンドアロン実行形式(EXE)、ダイナミックリンクライブラリ(DLL)、OCXやCOMオブジェクト、タイプライブラリ、コントロールパネルアプレット、Windows Serverアプリケーション、コンソールアプリケーションなど任意のWindowsバイナリを作成できます。開発者は、高度で複雑なユーザーインターフェイスを持つクライアントアプリケーションも、シンプルなコマンドラインアプリケーションのいずれも作成可能です。主要なRDBMS(リレーショナルデータベースマネージメントシステム)に直接接続するデータベースクライアントアプリケーションや、中間層のアプリケーションサーバー、Webアプリケーション、Webサイト、Webサービス、ActiveXコントロール、複雑な組み込みシステムで稼動するマルチスレッドアプリケーションなども作成できます。つまり、Delphi 2009は、Windowsアプリケーション開発のあらゆる需要に対応する開発ツールです。

    Delphi 2009の新機能

Delphi 2009の主な新機能は以下のとおりです。

  • 完全なOffice 2007 UI実装である「リボンコントロール」と呼ばれるコンポーネントを含む新しいVCL(Visual Component Library)コンポーネント。モダンで視覚に訴えるWindowsデスクトップ向けのユーザーインターフェイスを開発可能。さらに、新しいVista APIをサポートする既存のVCLコンポーネントの機能強化
  • 2つの主要な新しい言語機能「ジェネリックス」と「無名メソッド」により、より効率的かつ容易にコーディングを実行。リスト、コレクション、ディクショナリ、スタック、キューなどの新しいRTLクラスも搭載し、これらの言語機能を活用可能。Delphi 2009のマルチスレッドクラスは、無名メソッドを使った実行をサポートするようにアップデート
  • アーキテクチャを見直した新しい多層データベースアプリケーション開発フレームワークにより、ビジネスルールやデータアクセス機能を中間層のアプリケーションサーバーに容易に分散。軽量かつ強力なデスクトップクライアントやブラウザアプリケーションからアクセス可能
  • アプリケーションのグローバル化に対応。デフォルト文字列型はUnicode対応の型になり、Unicode完全対応のアプリケーションを開発可能。新規アプリケーションおよび既存アプリケーションを容易にローカライズし、アプリケーションの国際展開にも対応
  • IDE(統合開発環境)には、さまざまな生産性向上機能を搭載。ビルド設定、プロジェクトオプションセット、Windowsリソースの管理を効率化

これらの新機能については、後で詳細に説明します。

    前提条件

Delphi 2009をインストールするには、以下の前提条件がインストールされていなければなりません。

  • Microsoft .NET Framework 2.0
  • Microsoft Direct Access Objects 2.8
  • Microsoft Internet Explorer v6.0 SP1
  • Microsoft XML Core Services (MSXML) v4.0 SP2
  • Microsoft Visual J# .NET v2.0 Redistributable

これらがシステムにインストールされていないと、Delphiインストーラがインストールを実行します。

.NET Frameworkは、IDEによって使用されますが、Delphiによって作成されるアプリケーションはネイティブアプリケーションなので、.NET Frameworkには依存しません。

    動作環境

Delphi 2009を実行するには、以下の環境が必要です。

  • Intel Pentium またはその互換機1.4GHz 以上(2GHz以上を推奨)
  • 1GB RAM (2GB以上を推奨)
  • 3GB 以上のディスクスペース(Delphiインストール用)
  • 750MB以上のディスクスペース(前提条件用)
  • DVD-ROM ドライブ
  • 1024x768 以上の高解像度モニタ
  • マウスなどのポインティングデバイス

またDelphi 2009では、以下のOSへのインストールをサポートしています。

  • Microsoft Windows 2000 (SP4以上、セキュリティアップデートを推奨)
  • Microsoft Windows XP Home or Professional (SP3以上)
  • Microsoft Windows Vista SP1 (管理者権限が必要)
  • Microsoft Windows Server 2003 (SP1)
  • Microsoft Windows Server 2008

Delphi 2009をインストールするには、対象マシンは以下の環境を用意する必要があります。

  • XP、Windows Server 2003を含むすべてのプラットフォームについて、最新のサービスパックとセキュリティアップデートを推奨
  • Microsoft Internet Explorer 6.0 SP1以降
  • およそ3 GB 以上のディスクスペース(フルインストール時。またインストール用に追加の一時スペースが必要)
  • Intel Pentium またはその互換機1.4GHz 以上(2GHz以上を推奨)
  • 1 GB RAM (2GB以上を推奨)
  • DVDドライブ
  • VGA以上の高解像度モニタ
  • マウスなどのポインティングデバイス

ノート: Delphi 2009の英語版は、バージョン6.0以前のInternet Explorerを6.0 SP1にアップデートします。英語以外のOSを使っている場合には、正しいローカライズバージョンのInternet Explorerを確実に取得するために、Windowsアップデートを実行してください。

    エディション

Delphi 2009には、Professional、Enterprise、Architectという3つのエディションがあります。

    Professional

Delphi 2009 Professionalは、RAD開発の基本的な機能に加え、ローカルデータベースアクセス機能を必要とする開発者向けの製品です。Professional版には、IDE、Delphi言語、VCLソースコードを含むVCLコンポーネントのフル機能が搭載されています。データベースアクセス機能については、InterBase、MySQL、Blackfish SQLのローカルアクセスに限定された機能を利用できます。

Professional版には、5接続限定のスタンドアロンサーバーに限定された、VCL for the Webの機能限定版も含まれます。

Professional版は、ISV、プロフェッショナル開発者など、リモートデータベースアクセス機能を必要としていない、Windowsアプリケーション開発者向けの製品です。

    Enterprise

Delphi 2009 Enterpriseは、RDBMSへのアクセスを必要とする開発者向けの製品です。Enterprise版は、以下の複数のデータベースへローカル/リモート接続可能です。

  • InterBase 7.5.1, 2007 および2009
  • Blackfish SQL for .NET/Java
  • Oracle 10g
  • Microsoft SQL Server 2000, 2005
  • DB2 UDB 8.X
  • MySQL 4.1.x および5.0.x
  • Informix 9x
  • Sybase Adaptive Server Enterprise 12.5
  • Sybase SQL Anywhere 9

さらに、Enterprise版には、フル機能のVCL for the Webが搭載されており、接続数無制限のスタンドアロンおよびISAPI/Apacheベースのアプリケーションを開発できます。

Enterprise版には、UML(Unified Modeling Language)による高度なモデリング機能が搭載されています。クラス図のリバースエンジニアリング(Delphi開発者は、コードとモデル図の双方向開発を利用できます)により、容易にプロジェクト全体を鳥瞰できるビューを獲得できます。作成した図を含むドキュメントも簡単に自動生成できるので、プロジェクトの情報共有が容易になります。

Enterprise版は、企業の情報システム部門、データベースへのアクセス機能を利用するISV、VARをはじめとするエンタープライズデベロッパー向けの製品です。

    Architect

Delphi 2009 Architectには、Enterprise版のすべての機能に加え、データモデリング/設計機能を提供するEmbarcadero ER/Studio Developer Editionが搭載されています。Embarcadero ER/Studioは、実績あるデータモデリングツールで、データ設計の品質向上、最適化、再利用、メンテナンスなどを支援します。ラウンドトリップデータベースサポートにより、データベースアーキテクトは、容易に既存のデータベースをリバースエンジニアリングして、分析、最適化できます。ER/Studioの強力なコラボレーション機能を用いれば、チームの生産性、品質の向上を強化できます。

Architect 版は、Enterprise版と同様の機能を必要としている開発者で、データベースの設計や管理について高い生産性を必要としているユーザー向けの製品です。

    インストール

Delphi 2009のインストールは、DVDまたはWebダウンロードのいずれかで行うことができます。DVDによるインストールは、従来どおり、コンピューターにDVDを挿入して、インストーラを実行してインストールを行います。

ダウンロードインストールは、小さいインストールラウンチャのみをダウンロードして実行します。インストーラは、Delphi 2009をインストールするときに、必要なファイルをダウンロードします。また、追加のダウンロードファイルやアップデートが提供されていることがありますので、CodeGearのWebサイトを確認してください。

    統合開発環境(IDE - Integrated Development Environment )

Delphi 2009を実行すると、統合開発環境(IDE)が表示されます。IDEは、アプリケーション開発に必要とされるすべての機能を単一環境で提供するツールです。

エディタ、フォームデザイナ、プロジェクトマネージャ、デバッガをはじめとするさまざまな機能を利用でき、アプリケーションを迅速かつ容易に開発できます。

    IDEの基本機能

IDEは、Windowsユーザーになじみのあるユーザーインターフェイスを提供します。基本機能は、ドロップダウンメニューやカスタマイズ可能なツールバーからアクセスできます。IDEの多くのウィンドウはドッキング可能で、作業環境をフルカスタマイズできます。また、デスクトップのレイアウトは保存することができます。レイアウトは、「デバッグ用」といった特定の目的用に設定できます。作成したアプリケーションは、IDE内で実行、デバッグできます。IDEでは、その環境やアプリケーション、プロジェクトなど、さまざまな設定を変更できます。IDE全体として、カスタマイズ可能な設計になっており、迅速かつ効率的な開発が可能になっています。

    コードエディタによるコーディング作業

Delphi 2009のコードエディタでは、開発者の生産性を飛躍的に高めるコード入力支援機能を利用できます。エディタはタブ付きウィンドウになっており、一度に複数のファイルを開くことができます。

Hide image
CodeEditor

図1 – コードエディタ

コードエディタには、以下のような支援機能が搭載されています。

  • 構文強調表示:コメント、文字列、識別子、キーワード、予約語などを色分けして表示し、容易に識別できるようにします。
  • コード入力補完:コード入力中に利用可能な識別子のリストを表示し、入力の手間を軽減します。
  • ライブテンプレート:わずかなキーストロークで、コードブロックを呼び出し、必要部分を埋めてすばやくコードを完成させることができます。ライブテンプレートはシンプルなXMLファイルとして定義されているので、容易に独自のテンプレートを作成できます。
  • クラス補完:クラス宣言で自動的に実装スタブを生成します。
  • リファクタリング:動作を変更することなく安全、確実に、コードを読みやすく、よりよく構成された内容に変更します。
  • CodeInsight: 呼び出す関数などのパラメーター情報をポップアップ表示します。
  • ErrorInsight: 編集中のコードの構文エラーを自動検出し、波下線で示します。
  • HelpInsight: コード内の識別子についての基本的なドキュメントと宣言をポップアップウィンドウで表示します。
  • ブロック補完:コードブロックの対を正しく記述できるようにします。例えば、エディタ内で、begin と入力してEnter キーを押すと、対となるend が自動的に追加されます。コーディング作業を中断することなく、正しくフォーマットされたブロックを記述できます。
  • 文脈依存型ナビゲーション:Ctrlキーを押しながら識別子をクリックすると、その識別子の宣言部または実装部にナビゲートできます。複数のファイルでコードをナビゲートしても、ブラウザの操作のように、すばやく前のコードに戻ることができます。単純なキーストロークで、開発者は、クラスメソッドの宣言と実装を往復できます。IntelliMouseもサポートしており、大きなファイルのナビゲートも容易です。
  • 行番号とブックマーク:行番号により、ファイル内のコードの場所をすばやく特定できます。また、ブックマークを設定することで、アプリケーションコード内の特定の場所にすばやく戻ることができます。
  • 同期編集:複数行のコードを選択すると、同期編集アイコンが余白に表示されます。同期編集モードに入ると、ハイライトされたブロックのテキストを、簡単に検索して変更することができます。同期編集は、限定されたブロック内の識別子を変更するのに使います。プロジェクト全体にわたって文脈を考慮して識別子を変換するには、名前変更リファクタリングを使います。
  • マクロ:共通の操作をマクロとして記録して再生できます。

全般的に、コードエディタは、コーディング作業を簡単かつ洗練された方法で、効率的に行えるようになっています。

    フォームデザイナによるユーザーインターフェイスのビジュアル設計

コーディング以外の時間の多くは、ユーザーインターフェイスの設計のために、コンポーネントを使ったフォームのレイアウトに割くことになります。IDEは、このために強力なフォームデザイナを提供しています。Delphi 2009のフォームデザイナは、設計時にフォームのWYSIWG(What-You-See-Is-What-You-Get)レイアウトを可能にするウィンドウそのものです。開発者は、このウィンドウにツールパレットからコンポーネントをドラッグ&ドロップして、フォーム上の適切な位置に配置できます。コンポーネントは、ビジュアルガイドライン機能を使って、余白設定や位置合わせを簡単に行えます。コンポーネントをフォーム上でドラッグすると、他のコンポーネントとの間に色のついた線が表示され、コンポーネント間の幅や位置合わせのタイミングを確認できます。

Hide image
VisualGuidelines

図2 – ビジュアルガイドラインを使って簡単にコントロールの位置合わせができるフォームデザイナ

コンポーネントをフォームに配置したら、オブジェクトインスペクタでプロパティを設定できます。すべてのコンポーネントのプロパティとイベントは、オブジェクトインスペクタにリストされます。ここで、コンポーネントの外観や動作、コンポーネントに対してなされた操作に応答するコードを指定することができます。

Hide image
ToolPallete

図3 – ツールパレット

例えば、オブジェクトインスペクタを使って、開発者は、コンポーネントの位置やサイズを設定できます。ツールバーにボタンを追加し、編集ボックスのテキストを変更し、フォームの背景色を変更するといった操作が可能です。さらに、OnClick、OnMouseOver、OnKeyDownなどのイベントが発生したときに実行されるコードを記述できます。

ツールパレットには、IDEにインストールされたすべてのVCLコンポーネントが登録されています。デフォルトでは、Delphi 2009出荷時に含まれるすべての標準コンポーネントが含まれます。ここには、追加でサードパーティコンポーネントなどを登録できます。

ツールパレットは完全にカスタマイズ可能で、コンポーネントを自由にカテゴリ分けできます。フィルター検索機能で目的のコンポーネントをすばやく発見し、マウス操作とキーボード操作のどちらでもすばやくフォームに配置できます。

    プロジェクトマネージャによるアプリケーション構成要素の管理

アプリケーションはすぐに多数のフォームやコードファイルによって、複雑化してしまいます。多くのアプリケーションは、任意の数の異なるバイナリやプロジェクトによって構成されます。Delphi 2009のプロジェクトマネージャは、IDEでのプロジェクト管理を担当します。プロジェクトマネージャは、プロジェクトに含まれるファイルやフォームを管理し、複数のプロジェクトをプロジェクトグループに含めることができます。開発者は、新しいフォームやファイルを作成したり、既存のフォームやファイルをプロジェクトに追加でき、新しいプロジェクトをプロジェクトグループに追加できます。プロジェクトは、プロジェクトマネージャからコンパイル・ビルドでき、ファイルとフォームはIDEで開くことができます。プロジェクトは、必要に応じて再構成できます。プロジェクトマネージャでは、アプリケーション開発に必要なファイルやフォームの管理に関するすべての操作をハンドルしています。

Hide image
ProjectManager

図 4 – プロジェクトマネージャ

さらにプロジェクトマネージャは、プロジェクトごとに複数のビルド設定を管理できます。特定のオプションセットを管理し、保存、再利用することもでき、これらの設定の管理がこれまでになく簡単になりました。

    ビジュアルデバッガ

問題に遭遇することは、開発者にとって不可避です。バグを発見したり、アプリケーションの予期しない動作を見つけたときには、アプリケーション内部に立ち入って、実行プログラムで何が起こっているのかを見る必要があります。Delphi 2009では、IDEに統合された強力なデバッガを提供しており、実行アプリケーションの内部を詳細に確認できます。

Hide image
Debugger

図5 – ビジュアルデバッガ(ブレークポイントで停止)

アプリケーションをIDE内で実行すると、デバッガはアプリケーションの実行を制御し、実行プロセス全体にわたって、詳細な情報を検査できるようにします。開発者は、ブレークポイントをコード中の任意の場所に設定して、実行を停止させることができます。ブレークポイントはカスタマイズ可能で、任意のトリガーを設定できます。例えば、任意の回数だけ実行されたり、変数や関数を評価して特定の値だった場合などに、アプリケーションを停止させることができます。例外が生成された場合には、暗黙的なブレークポイントとして働きます。実行が停止すると、デバッガは、スコープ内のすべての情報にアクセスできるようにします。開発者は、監視式を設定して任意の変数の値をトラックしたり、コードをステップ実行して、1行ずつ動作を確認していくこともできます。デバッガは、現在の呼び出し履歴を表示します。また、すべてのロード済のモジュール、アプリケーションに関連するすべてのスレッドの状態も表示します。より詳細な情報が必要な場合には、デバッガはCPUレベルのビューも表示できます。これにより、実行されているアセンブリコードを確認できます。

    データエクスプローラによるデータアクセス

多くのアプリケーションでは、データアクセスを必要とします。IDEに統合されたデータエクスプローラは、データベースデータにアクセスする強力なツールです。データエクスプローラで開発者は、DelphiのデータベースアクセステクノロジーdbExpressがサポートするデータベース接続を作成できます。データベース接続を作成すると、データベースのデータやメタデータを表示できます。データベースに接続し、データを閲覧できるようになったら、データエクスプローラからフォームデザイナに、接続やテーブルをドラッグすることで、データアクセスコンポーネントをフォーム上に作成できます。

Hide image
DataExplorer

図6 – データエクスプローラ

さらに、データエクスプローラでは、ビジュアルクエリービルダーを使って、データを検査したりクエリーを作成できます。

    VCL - ビジュアルコンポーネントライブラリ

Delphi 2009では、任意のアプリケーションを構築できますが、特にその威力を発揮するのは、Windowsクライアントアプリケーションやスタンドアロンデスクトップアプリケーションの開発においてです。このために、Delphi 2009では、VCL(Visual Component Library)と呼ばれるアプリケーション開発フレームワークを提供しています。VCLは、広範なWin32 APIをカプセル化したクラスライブラリで、Windowsアプリケーションの構築をコンポーネント化します。開発者は、設計時にフォームデザイナ上で扱うことのできるコンポーネントを使って、ビジュアルにアプリケーションを開発できます。

Hide image
FormDesignerWithComponents

図 7 - 多数のVCLコントロールを配置したフォーム

VCLは、Delphi 2009でのWindowsアプリケーション開発の基盤となるものです。WindowsベースのウィンドウをTForm クラスとしてカプセル化しています(従来からの慣例で、Object Pascalのクラスには、はじめに‘T’ を付けます)。IDEのフォームデザイナは、ユーザーインターフェイスを設計するための「キャンバス」を開発者に提供します。VCLは、標準Windows UIコントロールを、TButtonTEditTLabelTCheckboxのようにコンポーネントにラップしています。フレームワークは、単純に継承することで拡張でき、独自のカスタムコンポーネントとして、容易にIDEに追加して利用できます(結果として、大変豊富なサードパーティ開発者コミュニティが形成されており、商用、無償、オープンソースのコンポーネントが流通しています。開発者は、幅広い高度な機能を備えたコンポーネントを活用できます)。

VCLは、実績あるコンポーネントアーキテクチャとして、永らく使用されており、いくつもの異なるプラットフォームに移植されています。VCLは、16-bit Windowsに始まり、すぐにWindows 95のサポートにより32-bitに対応しました。また、Linuxや.NETにも実装されました。

    Delphi 2009の新機能

新バージョンへの移行を検討して製品評価をしている方は、新機能に一番興味があると思います。このセクションでは、CodeGear RAD Studio 2007以降のDelphi 2009の新機能を紹介します。

    データベースの設計とモデリング

Delphi 2009 Architect Editionには、データベース設計とモデリングのためのソリューションが同梱されています。開発者は、ER/Studio Developer Editionを使って、エンティティリレーションシップやデータベースの物理モデルを作成することができます。作成したモデルは、ER/Studioがサポートする任意のデータベースにエクスポートできます。

ER/Studio Developer Editionについては、CDNの以下の記事で、オンラインデモをご覧いただけます。

http://windemo1.codegear.com/Tiburon/LaunchReplays/ERStudio/ERStudio.html

    Delphiの新しい言語機能

    ジェネリックス

ジェネリックスを使えば、特定の型を指定することなく、その型を安全に参照できるコードを記述できます。ジェネリックスは、パラメータ化された型ともいわれ、特定の型に依らない処理を行う「ジェネリック」クラスを記述できます。ジェネリックスを使用するクラスにリストがあります。リストを記述するときには、リストに含まれる項目の型は必要ありません。

Hide image
Generics

図8 – Delphiで制約を宣言したジェネリッククラス

Delphi 2009では、ジェネリックメソッド、ジェネリックスの制約を含み、ジェネリックスをフルサポートしています。制約は、ジェネリック型を特定の機能セットに限定する機能です。例えば、制約によって、ジェネリック型を、コンストラクタを持つものや特定のインターフェイスを実装したものに限定することができます。

Delphi 2009 では、ジェネリックなリスト、コレクション、スタック、キューなどを新しいランタイムライブラリでサポートしています。

    無名メソッド

無名メソッドは、パラメータとしてコードブロックを渡すことができる機能です。それは、特定の名前を付けていない関数やプロシージャといえます。無名メソッドは、変数に割り当てられるか、メソッドへのパラメータとして使われるエンティティとして、コードブロックを扱います。さらに、無名メソッドは変数で参照可能で、メソッドが定義されるコンテキスト内で、その値を変数にバインドできます。つまり、Delphiの無名メソッドは、コードブロックを通るときに状態をキャプチャできるフル機能のクロージャータイプです。

Hide image
AnonMeth

図9 – 無名メソッドの使い方を示すコード

    VCLの新機能

    リボンコントロール

Delphi 2009には、Office 2007のユーザインターフェイスコントロール、いわゆる「リボンコントロール」のフル実装が含まれます。既存のVCLアーキテクチャを用いてObject Pascalによって構築されており、開発者は、リボンコントロールを使って、モダンで強力、そして容易に操作できるGUIアプリケーションを、特別なコーディングを必要とせずに作成できます。Delphiの強力なTActionManagerテクノロジーを使って構築されているため、既存のアプリケーションも、極めて簡単にこの新しいインターフェイスデザインパラダイムに移行できます。

Hide image
Ribbons

図 10 – フォームデザイナ上でリボンコントロールを使ったDelphiフォーム

    新しいコンポーネント

TPNGImage

Delphi 2009では、新たにPNG(Portable Network Graphics)イメージフォーマットをフルサポートしています。TImageとTImageListコンポーネントは、いずれもPNGイメージに対応しています。開発者は、PNGイメージをフォームやツールバー、メニュー、ボタンなどに表示できます。

TCategoryPanelGroup

TCategoryPanelGroupは、任意の数の折りたたみ可能なパネルを複数持つことのできるコンポーネントです。「Outlookツールバー」と同様、TCategoryPanelGroupは任意の数のパネルを持つことができ、そのパネルには他のコンポーネントを任意の数配置可能です。

Hide image
CategoryPanel

図 11 – TCategoryPanelGroupには、3つのCategoryPanelがあり、2つがたたまれています

TBallonHint

Delphi 2009では、柔軟かつカスタマイズ可能なコントロールヒントシステムをサポートしています。カスタムヒントは、TCustomHintクラスを継承して、容易に作成できます。

Hide image
BalloonHint

図 12 -- a VCL control displaying a balloon hint.

Delphi 2009では、デフォルト実装としてTBalloonHintを提供しています。すべてのVCLコンポーネントは、CustomHintと呼ばれるプロパティを持ち、TCustomHint を継承したコンポーネントを、独自のヒント用途に指定できます。

TBalloonHintは、タイトルとメインテキストを持ちます。ヒント内にはイメージも表示できます。

TButtonedEdit

TButtonedEditは、内部にイメージを持つエディットボックスです。イメージは、エディットボックスの右端と左端に表示されます。それぞれのイメージは、クリックイベントがあり、それぞれのグリフをクリックしたときに実行されるコードを指定できます。

Hide image
ButtonedEdit

図 13 – 検索用に使用したTButtonedEdit。赤いX ボタンはテキストのクリアが可能

    既存コンポーネントのアップデート

既存のVCLコンポーネントにも、いくつものアップデートがあります。

  • TImageListは、TImageによってサポートされるすべてのタイプのイメージを含めることができるようになりました。
  • TButtonは、TImageListを保持できるようになり、ボタンにイメージを表示できるように なりました。イメージは、任意の位置に合わせて配置できます。また、Vistaの機能であるコマンドリンクやスプリットボタンをサポートする新しいスタイルも含まれます。
  • TTreeViewでは、項目が開かれているか、たたまれているかによって、異なるイメージを表示できるようになりました。
  • TListViewでは、Vistaのグループをサポートするようになりました。
  • TRichEditは、Windows RichEdit 2.0仕様をサポートします。
  • TProgressBarは、ポーズ、エラーを含むVistaスタイルをサポートしています。また、Vistaの機能であるマーキースクロールにも対応しています。
  • TEditでは、パスワード入力文字のカスタマイズができるようになりました。また、TextTipプロパティを使って、TEditにフォーカスがなく何も入力されていないときに表示されるヒントを指定できるようになりました。

VCLの新機能については、CDNの以下の記事で、オンラインデモをご覧いただけます。

http://windemo1.codegear.com/Tiburon/LaunchReplays/DelphiVCL/DelphiVCL.html

    新しい多層データベースアーキテクチャ – DataSnap 2009

Delphiは、多層データベース開発フレームワークを搭載した最初の開発ツールのひとつです。DataSnapと呼ばれるこのフレームワークにより、開発者は、アプリケーションでデータの提供とビジネスルールの管理を行う中間層のアプリケーションサーバーを構築できます。中間層は、データベースの中間に立ち、データへのアクセス性を提供し、データの処理や更新時のビジネスルールを規定します。DataSnapでは、クライアントでのデータ管理や操作のための強力なインメモリデータセットをはじめとする、中間層へのアクセスのための強力なクライアントソリューションを提供しています。

Delphi 2009には、DataSnapアーキテクチャのメジャーアップデートが搭載されています。従来バージョンのDataSnapは、COMテクノロジーをベースとしていました。Delphi 2009では、この依存性を排除し、Server Methodsと呼ばれる強力かつ軽量な実装によって置き換えました。Server Methodsにより、開発者は中間層に属するメソッドを記述できます。これらのメソッドは、クライアントに対してシームレスな方法で呼び出し可能にします。開発者は、サーバーメソッドをあたかもクライアントのバイナリの中にあるかのように呼び出すことができます。Server Methodsでは、string、integer、dataset、datareader、connection、OLEVariantといった、dbExpressの型システムに含まれる任意の型をパラメーターとして渡すことができます。これは、クライアントと中間層の間でのデータ転送における強力な手段となります。

新しいDataSnapでは、従来のDataSnapサーバーもサポートしています。

    IDEの新機能

    リソースマネージャ

多くのWindowsアプリケーションには、ビットマップ、カーソル、フォント、その他のデータといったコンパイル済のバイナリに入れることのできるWindowsリソースが含まれています。Delphi 2009では、新たにリソースマネージャが搭載され、プロジェクトへのリソースの追加、管理が容易になりました。開発者は、すべての標準Windowsリソースタイプを追加でき、名前を指定して、TResourceStreamクラスを使ってコードで利用できます。

Hide image
ResourceManager

図 14 – リソースマネージャ

    ビルド設定

多くのDelphiプロジェクトには、単一のアプリケーションの作成のための特定のプロジェクトが複数個含まれて鋳ます。開発者は、単一ソリューションをDLL、EXE、パッケージなど複数のファイルで構成します。すべての異なるプロジェクトやコードを管理するのは困難です。特に、ビルド作業は大変です。

Hide image
Click to see full-sized image

図 15 -- プロジェクトオプションダイアログで、オプションセットを継承して適用

プロジェクトは、しばしば異なる目的のために異なるビルド方法を用いる必要があります。テスト用、デバッグ用、フィールドテスト用、リリース用といったビルドが必要になります。それぞれの異なるビルドでは、異なる設定と異なるコンパイラオプションセットが必要です。Delphi 2009では、柔軟なビルド設定管理システムを導入し、IDEとコマンドラインで同一の設定を利用できるようになっています。

さらに、Delphi 2009では、開発者はプロジェクトオプションセットを作成し、ビルドオプションを構成・管理できます。オプションセットは、他の設定を「継承」することができ、必要に応じて、設定を引き継いだり、上書きすることができます。オプションセットは、ファイルに保存して、特定のプロジェクトや他の設定に適用できます。

    クラスエクスプローラ

Delphi 2009には、クラスエクスプローラという新機能も搭載されています。クラスエクスプローラは、Delphiのクラスモデリング機能の上に構築されており、プロジェクト全体にわたってクラスの構造を見ることができます。開発者は、トップダウンおよびボトムアップビューでクラスを選択して見ることができます。さらに、クラスエクスプローラでは、既存のクラスライブラリにクラス、メソッド、プロシージャなどを追加することもできます。

Hide image
ClassExplorer

図 16 – クラスエクスプローラ

    翻訳ツール

国際化は、Delphi 2009の重要なテーマです。新しい国際化機能を活用すれば、他の言語にアプリケーションを翻訳する作業を効率化できます。Delphi 2009には、ITE(Integrated Translation Environment)とETM(External Translation Manager)のアップデートバージョンが搭載されています。

ITEは、アプリケーションの翻訳バージョンの作成を支援するIDE組み込みのツールです。ITEは、プロジェクトを複数言語対応可能にします。プロジェクトをスキャンし、すべての文字列、キャプション、テキストなどを抽出し、翻訳可能にします。開発者や翻訳者は、IDEに搭載されたツールを使って、これらの文字列を他の言語に翻訳できます。翻訳は、プロジェクト専用のリソースDLLに配置されます。リソースDLLがあれば、アプリケーションは実行時に翻訳言語で表示されるようになります。

ETMは、ITEのアプトプットとともに、翻訳者や翻訳サービスに再配布されるツールです。これにより、アプリケーション翻訳のアウトソーシングの管理が容易になります。

ビルド設定とリソースマネージャの新機能については、CDNの以下の記事で、オンラインデモをご覧いただけます。

http://windemo1.codegear.com/Tiburon/LaunchReplays/Delphi2009IDE/Delphi2009IDE.html

ITEとETMについては、CDNの以下の記事で、オンラインデモをご覧いただけます。

http://windemo1.codegear.com/Tiburon/LaunchReplays/ASCIInew/ASCIInew.html

    COM/ActiveXサポートのアップデートと強化

Delphi 2009には、完全にアーキテクチャを変更したCOMおよびActiveX開発フレームワークが搭載されています。この新しいフレームワークは、Microsoft IDL仕様のサブセットである新しい「Reduced IDL」言語をベースにしています。それは、DelphiでCOMオブジェクトを定義するために特に設計されています。RIDLファイルと関連するPASファイルの組み合わせは、COMとActiveXオブジェクトの定義を、純粋にテキストファイルのみで行えるということを意味しています。この2つのファイルは、タイプライブラリファイル(*.TLB)にコンパイルされ、プロジェクト外で利用されます。TLBファイルは、プロジェクトのコンパイル結果であり、プロジェクトの一部ではありません。この方法により、Delphi COMとActiveXオブジェクトは、適切に管理、マージされ、ソースコード管理ツールなどにストアできます。COM/ActiveXプロジェクトに関する情報を保存するのに、もはやTLBファイルを必要としなくなりました。

Hide image
TypeLibraryEditor

図 17 – *.RIDLファイルを編集するタイプライブラリエディタ

Delphi 2009のCOMおよびActiveXの新機能ついては、CDNの以下の記事で、オンラインデモをご覧いただけます。

http://windemo1.codegear.com/Tiburon/LaunchReplays/COM/COM.html

    Delphi 2007で追加された新機能

以下の機能は、Delphi 2007で追加された新機能です。これらは、いずれもDelphi 2009でも利用できます。

    Blackfish™ SQL

Delphi 2007には、新たにBlackfish SQL Delphi Editionが搭載されました。Blackfish SQLは、SQL-92準拠のマネージドコードRDBMSです。Blackfishは、大変柔軟なデータベースです。スタンドアロンアプリケーションの組み込みデータベースエンジンとして使用したり、エンタープライズシステムのデータベース機能の一部として活用することもできます。アプリケーションやWebソリューションでインプロセスとして実行したり、サーバーあるいはWindowsサービスとして実行することもできます。配布は極めてシンプルで、バイナリ、データベースファイル、ライセンスファイルを配布するだけです。

.NET Frameworkを活用することで、Blackfish SQLは、RDBMSとしてのフル機能を提供しながらも、アプリケーション組み込みからエンタープライズレベルのスケールまで幅広い柔軟性とポータビリティを提供しています。

Blackfishは、以下の3つの方法で実行できます。

  1. Windowsサービスとして
  2. スタンドアロン実行プロセスとして
  3. インプロセスアセンブリとして

アプリケーションは、Blackfishにローカルあるいはリモートで接続可能です。リモート接続の場合、接続アプリケーションは、TCP/IPスタックを情報転送に使用します。ローカル接続の場合、接続アプリケーションは、他のアセンブリと同様、単純にBlackfishアセンブリにバインドします。

インストール時に、Blackfishは、Windowsサービスとしてインストールでき、起動時に自動的に実行させるように設定できます。これにより、Blackfishは、開発者のマシンで共通して利用可能になります。Blackfish SQLは、デフォルトで、ポート2508 を使用します。

    Blackfish SQLに関する追加情報

    Vistaサポート

Vista OSのリリースにより、Vistaの新機能をサポートする多くの新しいAPIが提供されるようになりました。Delphi 2007は、これらの新しいVista APIを直接活用できるDelphiで最初のツールでした。VCLコンポーネントとそのプロパティによって、これらの新機能をラップすることで、Delphi 2007は、開発者がすぐにVistaの多くの新機能にアクセスできるようにしました。Delphi 2009では、VCLの多くのコンポーネントに新しいVista APIサポートを追加することで、さらに多くの機能を利用できるようにしています。

もちろん、Vistaサポートを組み込んだアプリケーションは、Vista上で実行されることを期待して、完全にその機能が有効になるように作られます。しかし、XPやWindows 2000のマシンで実行した場合には、Vista固有の機能は、動作しないのではなく、XPの基本機能として「それなりに」表示されます。

    グラス効果

Delphi 2007では、Windows Aeroインターフェイスのサポートが導入されました。VCLでは、TFormに、グラスフレームを作成するプロパティが追加されました。ネイティブWindows開発者は、ネイティブアプリケーションでこの機能を活用できます。TForm.GlassFrame.Enabled プロパティをTrueに設定するだけです。開発者は、フォームの外枠のグラス効果の幅を設定したり、SheetOfGlass プロパティをTrue に設定して、フォーム全体をグラス状にすることもできます。

アプリケーションがグラス効果を使っていて、Vista以外の環境で実行された場合、グラス効果は働きません。

    Vistaダイアログ

新しいVista OSでは、標準ダイアログも強化され、OSのコントロールセットとして提供されています。VCLでは、これらの新しいダイアログをTFileOpenDialogTFileSaveDialogTTaskDialogコンポーネントとしてカプセル化しています。これらのコンポーネントは、新しいVistaダイアログコントロールによって提供される機能をカプセル化しており、アプリケーションでこれらの機能を極めて容易に活用できるようにします。

もし、これらの新しいダイアログを使ったアプリケーションがVista以外の環境で実行されており、これらのVistaダイアログを呼び出すと、Vistaベースのシステムでのみサポートされる機能であるために、特別な例外が発生します。開発者は、これを捕捉して、実行中のOSで適切にサポートされた動作を呼び出すことができます。

    AJAXとVCL for the Web

Delphi 2007では、VCLファミリーにVCL for the Webという新しい機能が加わりました。

AtoZed SoftwareのIntraWebテクノロジーをベースとしたVCL for the Webは、標準的なDelphiクライアントアプリケーションを開発するのと同様の手法で、Webアプリケーションを構築可能にします。VCL for the Webは、コンポーネントベースのテクノロジーで、VCL for Win32と非常に類似した機能を提供します。開発者は、通常のVCLフォームと同じように、コンポーネントをフォームにドロップして、プロパティを設定して、Webページを設計します。しかし、アプリケーションは、ブラウザで実行されます。

VCL for the Webは、Webサイトではなく、Webアプリケーションの開発に特化した最初で唯一のツールです。他のツールよりもすばやく簡単にWebアプリケーションを構築できます。強力なHTMLレンダリングエンジンをベースとして、VCL for the Webは、通常のWindowsアプリケーションと同じ方法で、Webアプリケーションの設計を可能にします。ドラッグ&ドロップアプローチにより、開発者はコントロールをフォームに配置し、イベントを定義してプロパティを設定できます(それは、HTMLページとフォームの組み合わせとみなすことができます)。

VCL for the Webでは、さらに、AJAXテクノロジーを自動的に利用できます。可能であれば、VCL for the Webは、クライアントサイドプロセスを活用するためにアプリケーション中に必要なAJAXコードを自動的に呼び出します。設計時に非同期イベントにコードを設定するだけで、開発者は、Delphiのみのコードで、AJAXベースのイベントを作成できます。

VCL for the Webについては、CDNの以下の記事で、オンラインデモをご覧いただけます。

http://windemo1.codegear.com/Tiburon/LaunchReplays/D2009Intraweb/D2009Intraweb.html

    dbExpress 4

データベースサポートとコンポーネントベースのデータアクセス機能は、Delphiの機能セットの中でも当初から中心的なものでした。そうした前提を継続して、Delphi 2007では、dbExpress 4と呼ばれる新しいデータアクセスアーキテクチャをその基盤に導入しました。コンポーネントレベルでdbExpress 3と完全に後方互換性を保ち、dbExpress 4は、単一のソースで統一されたデータ操作を行うVCLのデータベースアクセスレイヤーとして、完全にアーキテクチャの変更がなされました。

dbExpress 4は、データベースドライバ構築のプロセスを大幅に単純化しました。これにより、VCL開発者は、広範なデータベースサーバーへのアクセスが可能になります。100% Object Pascalで記述され、ネイティブとマネージドコードのクロスプラットフォームに対応しています。さらに、コネクションプーリングやコマンドトレース機能を搭載し、開発者にデリゲートモデルが公開されています。これにより、データアクセスプロセスをフックし、データの読み書きプロセスで追加機能を開発することができます。dbExpress 4では、旧バージョンと比較して、大幅なパフォーマンス向上も実現しています。

Delphi 2007では、サポートされる全てのデータベースのメタデータの読み書きを可能にする豊富なメタデータクラス群も提供されています。

dbExpress 4は、ベースのアーキテクチャであり、Delphi 2007でのアプリケーションレベルでの変更は軽微です。データアクセスとVCLデータ対応コントロールへのデータ提供を行うVCLコンポーネントであるdbExpressコンポーネントに大きな変更はありません。そのかわり、下位のレイヤーのコードは、より効率的で拡張可能になりました。多くのユーザーはその違いに気がつかないかもしれませんが、データアクセスのパフォーマンス向上については気がつくと思います。

    Delphi 2009のその他の機能

以下のセクションでは、Delphi 2009に搭載されたその他の機能のうち、製品評価を進める上で興味を持ちそうな内容を紹介します。

    統合開発環境

    コードエディタ

Delphi 2009のコードエディタには、コーディング作業を強力に支援します。それには、適切なメソッド名をすばやく選択し、テンプレートから共通コードを再利用したり、コーディングエラーをすばやく検出するといった、コーディング作業の労力を軽減するさまざまな支援機能が含まれています。

ライブテンプレート

ライブテンプレートは、わずかなキーストロークで、共通のコード構造を使ってコードを完成させることのできるコードエディタの機能です。ライブテンプレートは、テンプレートの記述機能、インテリジェントコード挿入、テンプレートの変数部分のインタラクティブナビゲーション機能を提供します。ライブテンプレートを用いれば、必要に応じてカスタマイズすることで、小さな記憶用のコード断片を大きなコードセットに拡張することもできます。

Hide image
IMAGE108

図 18 – forループを作成するライブテンプレート

図 18 では、‘for’ とタイプしてスペースキーを押すだけで、for テンプレートを呼び出しています。テンプレートが表示されると、テンプレートを埋めるエントリーポイントが提供されます。このエントリーポイント間は、タブキーによって移動でき、それぞれに必要な情報を埋めていくことができます。システムは、各エントリーポイントに何を入力するのかを示すヒントも表示します。

ライブテンプレートは、シンプルなXMLファイルによってその動作が定義されています。そのため、開発者は、容易に、特定の目的用のテンプレートを作成することができます。ライブテンプレートは、さまざまな機能を実行できるスクリプトエンジンを活用することもできます。

コード補完

コード補完は、現在のコードのスコープ内で宣言された識別子についての情報をはじめ、開発者がそのクラスで使っているクラスに関するすべての情報を表示するコードエディタの機能です。

Hide image
CodeCompletion

図 19 – コード補完によって、複雑な識別子をすばやく入力

どんなアプリケーションでも、多くの識別子を使っており、しばしばそれは、説明的で長いものになります。コード補完は、こうした識別子の入力をすばやく、ミスが起こらないようにします。図 19のように、コード補完が呼び出されると、タイピング作業中に、簡単に目的の識別子を見つけることができます。目的の識別子を見つけたら、Enterキーを押すだけで、コードエディタに入力されます。

コード補完では、さらに、クラスやレコードの適切なメソッド名やフィールドをすばやく見つけることもできます。

Hide image
CodeCompletionMethod

図 20 – コード補完がTButtonのすべてのメソッドをリスト

図 20のように、変数名Button1に続いてピリオドを入力して、CRTL+スペースキーを押すと、コード補完が呼び出されます(あるいは、ピリオドを入力して一定時間すると、自動的に表示されます)。コード補完は、TButton クラスで利用可能なすべてのメソッドとフィールドをリストします。続けてコードをタイプしていくと、タイプした文字列で始まる項目だけがフィルターされていき、そのまま入力を続けるか、表示されたリストから候補を選択します。適切な項目を見つけたら、あとはEnter キーを押すだけで、項目がコードエディタに入力されます。

ブロック補完

ブロック補完は、コードブロックが常に適切に閉じられるように、コード構造の改善を支援します。例えば、Delphiでは、すべての begin は、end 文に対応していなければなりません。すべての case 文も、同じようにendを必要とします。ブロック補完は、開発者が特に注意することなく、これらの構文が確実に閉じられるように補完されます。

次のように入力します。

begin<enter キーを押します>

ブロック補完は、以下のようにend を追加して、カーソルを‘|’ 文字の場所に移動させます。

begin

|

end;

Error Insight

Error Insightは、コードエディタで構文エラーを視覚的に伝えます。スペルチェッカの「赤い波線」と同じように、Error Insightはコード中の問題箇所を指摘します。

Hide image
ErrorInsight

図 21 – Error Insightがコーディングエラーを指摘

Help Insight

Help Insightは、識別子に対する情報を「ツールチップ」で表示する機能です。ツールチップに表示される情報は、開発者が記述するコードで、スラッシュ3つ(///)によるコメントに、XMLタグを使って定義することができます。開発者は、コードにコメントを記述し、それを、対象とする識別子上にマウスカーソルが置かれたときに、ツールチップとして表示させることができます。ツールチップのスタイル自身は、CSS(Cascading Style Sheets)を使って設定できます。

Hide image
Click to see full-sized image

図 22 – Help Insightのツールチップに表示される情報。この内容は、画面上で記述しているコメントがフォーマットされたものです

    ビジュアル設計

    フォームデザイナ

Delphi 2009のフォームデザイナは、ビジュアルにイベントドリブンの開発を行うインターフェイスを提供します。フォームデザイナでは、フォーム上でコンポーネントをビジュアルに操作できます。開発者はツールパレットからコンポーネントをフォーム上にドラッグ&ドロップし、設計時からフォームのレイアウトを確認しながら、ユーザーインターフェイスを作成できます。設計フォームのコンポーネントは、実行時と同じような表示、動作をします。オブジェクトインスペクタを使ってプロパティを設定し、コンポーネントを操作できます。プロパティの変更は、設計フォームで直ちに確認できます。フォームデザイナには、グリッドやビジュアルガイドラインといった、コンポーネントを簡単にレイアウトできる支援機能が搭載されています。

ビジュアルガイドライン

多くのアプリケーションでは、数多くのコントロールを配置したフォームを作ります。そのため、多くの開発者が、これらのコントロールの位置を適切に揃える方法に苦慮しています。Labelは、恐らく「ラベリング」の対象となるコントロールに位置合わせしたいでしょう。よいデザインのフォームは、コントロールがちゃんとレイアウトされており、適当にちらばっていないものです。

Delphi 2009のフォームデザイナでは、ビジュアルガイドラインによって、コントロール、あるいはコントロール内のテキストで、適切に位置合わせが可能です。開発者は、マウス操作で簡単に、適切な位置にコントロールを配置することができます。

Hide image
VisualGuidelinesText

図 23 – ビジュアルガイドラインを使ってラベルとエディットボックスを位置合わせ

ビジュアルガイドラインは、3つの異なるインジケータを表示します(図 23 を参照)。青の線は、コンポーネントの上、下、左、右での位置合わせを行います。マゼンタの線は、コントロールのテキストのベースラインで位置合わせをするガイドです。そして、グレーの線は、コントロールのMargin および Paddingプロパティに従って余白が設定されていることを示します。

オブジェクトインスペクタ

オブジェクトインスペクタには2つの役割があります。コントロールのプロパティを表示・設定することと、イベントとそれによって呼び出されるコードを結びつけることです。

Hide image
ObjectInspector

図 24 – オブジェクトインスペクタがTButtonコンポーネントのプロパティを表示

オブジェクトインスペクタは、選択した任意のコントロールのプロパティを動的かつ自動的に表示します。複数のコントロールが選択されているときには、共通のプロパティが表示されます。オブジェクトインスペクタでは、デフォルト値から変更されたプロパティの値をボールドで表示します。プロパティは、名前順またはカテゴリ別に表示できます。また、オブジェクトインスペクタは、ドッキングウィンドウとして表示できます。


    モデリングビュー

モデリングビューは、プロジェクトから直接リバースエンジニアリング可能です。モデルビューでは、プロジェクトのクラスをツリー構造で表示し、UML図としても表示できます。モデルおよび図からは、自動的にドキュメントを生成することができます。

Hide image
Click to see full-sized image

図 25 – モデルビューで生成したUMLクラス図

    プロジェクトマネージャ

アプリケーションプロジェクトやコード、ファイル、あるいは他のリソースなどプロジェクトに関連するものを管理することは、どの開発ツールでも重要な機能のひとつです。Delphi 2009では、強力なプロジェクトマネージャを搭載し、コードファイル、フォームファイル、リソースをはじめとする開発プロジェクトを構成する項目を管理できます。

プロジェクトマネージャは、階層構造のプロジェクトビューを提供します。ツリーのルートは、プロジェクトグループで、複数のプロジェクトを保持することができます。プロジェクトグループ内の複数のプロジェクトは、その順番を自由に変更できます。プロジェクトグループ内のすべてのプロジェクトは、プロジェクトマネージャに登録された順序でコンパイルされます。


    ビルド設定

開発者は、複数のビルド設定をプロジェクト用に作成し、プロジェクトの最適化、検索パス、その他のオプションを設定できます。ビルド設定は、ベースの設定からオプションを継承して、特定のビルド項目を詳細に編集できます。

Hide image
BuildConfigsInProjectManager

図 26 – プロジェクトマネージャのビルド設定

ビルド設定には、プロジェクトマネージャからアクセスでき、特定のプロジェクトのすべての設定は、コンテキストメニューの単一の[ビルド]コマンドからビルド可能です。

プロジェクトオプションは、オプションセットとして保存できます。保存したオプションセットは、複数のプロジェクトのビルド設定でいつでも共有することができます。

ビルド設定マネージャは、現在のプロジェクトグループのすべてのプロジェクトをリストします。設定名を選択して、[すべてを選択]ボタンをクリックし[適用]をクリックすれば、その設定をすべてのプロジェクトに適用できます。

Hide image
BuildConfigurationManager

図 27 – 3つのプロジェクトがオープンされた状態のビルド設定マネージャ

    デバッガ

Delphi 2009には、完全なフル機能のデバッガが搭載されています。Delphiのデバッガを用いれば、開発者はアプリケーションの実行を完全に制御し、実行されているマシンコードに至るまで詳細な情報をウォッチできます。任意の変数の状態をトラックし、行単位でコードを実行できます。デバッガがブレークポイントで停止すると、スコープ内の任意の変数を詳細に検査できます。呼び出し履歴はいつでも参照できるので、開発者は、現在の地点に至るまで、どのようにプログラムが実行されたのかをさかのぼって確認できます。つまり、Delphiのデバッガを用いれば、アプリケーション実行時のさまざまな問題をすばやく確認して分析することができます。

ブレークポイント

ブレークポイントの使用は、デバッグテクニックで最も一般的で直接的な方法です。ブレークポイントは、特定の時点でプログラムの実行を停止するようにデバッガに命令するシグナルです。実行コードがブレークポイントで停止すると、開発者は、アプリケーションを一時停止させたまま。その状態を調べることができます。以下に、アプリケーション内部の状態を調べる方法を示します。

Hide image
BreakPointWithExpanded ToolTip

図 28 – デバッガがブレークポイントで停止し、デバッガツールチップに情報が表示される

拡張可能な監視式

デバッガの監視式機能を用いると、アプリケーション内の特定の変数をウォッチすることがで、きます。デバッガでは、指定した監視式を継続的にトラックして状態を報告します。Delphi 2009では、さらに、拡張可能な監視式機能を搭載し、ドリルダウンによって、複雑な項目の監視を容易にしました。図 28 では、あるオブジェクト内部の情報をツールチップによって監視しています。

CPUビュー

デバッガのCPUビューは、アプリケーションのマシンコードレベルの完全なビューを提供します。開発者は、いつでもアプリケーションを、レジスターの情報や実際のアセンブリコードの実行状況、バイナリコード、FPUの状態といったマシンレベルで確認することができます。このレベルでは、明らかになっていない情報は一切ありません。完全なCPUウィンドウは、図 29に示したとおりですが、CPUビューは、ドッキングウィンドウとしても独立したウィンドウとしても表示できます。

Hide image
Click to see full-sized image

図 29 – CPUビューによりアプリケーションの低レベル情報をすべて表示

    統合ユニットテスト

テストドリブン開発(TDD)は、ここ数年でより一般的になってきており、ユニットテストは、その主要な方法論のひとつです。Delphi 2009では、DUnit(VCL言語拡張によりDelphiコードでユニットテストを実行するDelphiベースのライブラリ)によるユニットテストの作成と実行プロセスの自動化機能を提供しています。開発者は、特定のライブラリコードをIDEで処理するように指定できます。Delphi 2009は、テストプロジェクトを作成し、選択したクラスのpublicおよびpublishedメソッドのための空のテストケースを生成します。テストされるべき新しいメソッドが追加された場合には、ユニットテストウィザードは、この新しいメソッドを認識して、これらのメソッドのための新しいスタブメソッドを追加します。そのため、開発者はすばやく簡単に、コードライブラリのためのユニットテストを作成することができます。

Hide image
UnitTestWizard

図 30 – ユニットテストウィザードがコードライブラリのユニットテストセットを作成するために情報を収集

    リファクタリング

リファクタリングは、既存のコードを、その動作を変更することなく内部構造を変更し、再構成する機能です。プログラミングが発明された時から、マニュアル操作によるリファクタリングは行われてきました。しかし、近年になって、初めて定型化され自動化されました。Delphi 2009は、コードのリファクタリングを自動化する強力なツールセットを提供しています。

例えば、パラメータの変更リファクタリングでは、メソッド宣言とその実装部をすばやく修正することができます。この機能は、既存のパラメータの属性を変更するほか、パラメータの追加と削除をサポートしています。

この機能を使うには、コードエディタでメソッドや関数、プロシージャを選択して(宣言部、実装部のいずれでもかまいません)、[リファクタリング|パラメータの変更]メニューを選択します。パラメータの変更ダイアログボックス(図 31)で、変更する情報を指定します。

Hide image
IMAGE136

図 31 – パラメータの変更ダイアログ

さらに、Delphi 209には、たくさんのパターンに関連するリファクタリング機能があります。Delphi 2009に搭載されたすべてのリファクタリング機能の概要を以下にリストします。

リファクタリング名

説明

メンバーの移動

静的なメソッドをあるクラスから別のクラスに移動する

インターフェイスの抽出

選択したあるクラスのメソッドからインターフェイスを作成し、指定したクラスによって、そのインターフェイスの実装を宣言する

スーパークラスの抽出

選択したクラスメンバーを、そのクラスの親クラスとなる新しいクラスに移動する

メンバーのプルアップ

選択したメンバーを選択した親クラスに移動する

メンバーのプッシュダウン

選択したメンバーを選択した継承クラスに移動する

安全な削除

選択した項目をアプリケーション内で利用されてないことを確認して削除する

変数のインライン化

一時的な変数を実変数からインライン変数に変換する

フィールドの導入

既存のローカル変数を指定したクラスのフィールドに変える

変数の導入

リテラル式に新しい変数名を割り当て変数宣言に変換します。

名前の変更

指定した識別子名をプロジェクト全体にわたって変更する

変数の宣言

コードで使われているがまだ宣言されていない変数をローカル変数として宣言する

フィールドの宣言

選択された宣言されていない識別子を、指定したクラスのフィールドとして宣言する

メソッド抽出

選択されたコードを新しいメソッドとして作成し、必要なパラメータを渡すように記述する

リソース文字列の抽出

選択した文字列から新しいリソース文字列を作成し、文字列リテラルをリソース文字列を使う形式に変更する

パラメータの変更

指定したメソッドのパラメータを追加、修正、削除する

これらの多くのリファクタリング機能を有効にするには、プロジェクトとのモデリングサポートを有効にする必要があります。

    Object Pascal言語

Object Pascal言語は、学術的な分野をルーツとして発展してきました。当初の教育目的の言語からは大きく飛躍し、現在では、Object Pascalは、フル機能のオブジェクト指向開発言語となっています。Object Pascalは、最新の言語設計のトレンドと機能を取り込んできました。実際、Object Pascalは、構造化例外処理とプロパティを初めて実装したメインストリームの開発言語でした。可読性の高い文法とシンプルな言語構造により、Delphiは、学習が容易でありながら、強力な言語機能を利用可能な言語として定評があります。

Object Pascalには、プロシージャとオブジェクト指向のコードの双方を記述する能力があります。2種類のコーディング手法をスムースに融合させて、開発者は両方の長所を利用できます。開発者は、VCLを継承した独自のクラスを作成できると同時に、標準的なプロシージャ的なコードも作成できます。Delphiは、幅広いレンジのコーディング技法をカバーしています。

おそらく、Object Pascal言語についてのもっともよい情報は、Marco Cantú氏のEssential Pascal (PDF)でしょう。

    VCL(Visual Component Library)

VCL(Visual Component Library)は、フル機能の拡張可能で強力なコンポーネントベースのクラスライブラリです。その土台から最上部まですべてコンポーネントテクノロジーによって設計されたVCLは、ビジュアルデザイナによる開発をサポートし、1995年から活躍してきました。その間、いくつものプラットフォームの変化を経験し、Win16からWin32へ、そして.NETにも拡張しました。

    データベースアクセス

Delphiは、シンプルながら強力なデータアクセスモデルを提供します。VCLクラスをベースとしたTDataSetと呼ばれるデータセットアクセスは、コードによる開発と比較して極めてシンプルで、ビジュアルです。Connectionコンポーネントを簡単にDatasetコンポーネントと結びつけることで、テーブルのデータは容易にVCLのデータ対応コントロール上で利用可能になります。実際、データを表示するために、一切のコーディングを必要としません。

さらに、データフィールドは、自動的にVCLのTFieldを継承したクラスにバインドされるので、開発者は、次のような分かりやすいコードで、データを取り出したり変更することができます。

CustomerTableCustomerNameField.AsString := ‘Gary Johnson’;

この方法により、開発者は、ビジュアルでもコードでも、労力をかけずに簡単にデータにアクセスすることができます。VCLコンポーネントは、データのアクセスや操作を行う数多くの機能を提供しているので、開発者はほとんどコードを記述する必要がありません。

    Web開発

    VCL for the Web

Delphi 2009でWebアプリケーションを構築するための主要なツールはVCL for the Webと呼ばれています。AtoZed SoftwareのIntraWebテクノロジーをベースとしたVCL for the Webは、標準的なDelphiクライアントアプリケーションを開発するのと同様の手法で、Webアプリケーションを構築可能にします。VCL for the Webは、コンポーネントベースのテクノロジーで、VCL for Win32と非常に類似した機能を提供します。開発者は、通常のVCLフォームと同じように、コンポーネントをフォームにドロップして、プロパティを設定して、Webページを設計します。しかし、アプリケーションは、ブラウザで実行されます。

VCL for the Webでは、さらに、AJAXテクノロジーを自動的に利用できます。可能であれば、VCL for the Webは、クライアントサイドプロセスを活用するためにアプリケーション中に必要なAJAXコードを自動的に呼び出します。設計時に非同期イベントにコードを設定するだけで、開発者は、Object Pascalのみのコードで、AJAXベースのイベントを作成できます。

    多層開発

VCLでは、DataSnapと呼ばれる強力な多層アプリケーション開発アーキテクチャを提供しています。さまざまな通信プロトコルをコンポーネントセットとして提供しているので、VCL開発者はわずかな労力で簡単に、データを供給する中間層のアプリケーションサーバーと、このアプリケーションサーバーからデータを取得し更新するシンクライアントアプリケーションを構築できます。

TRemoteDataModule クラスを活用して、開発者は簡単にHTTP、DCOM、あるいはソケット通信を使ったリモートアクセス機能を提供するデータプロバイダコントロールのインターフェイスをエクスポートできます。クライアントアプリケーションは、リモートデータへの参照を取得して、TClientDataSetを継承したデータセットにインポートできます。一度TClientDataSetへのインポートが確立されれば、クライアントアプリケーションは、データの作成、読み込み、更新、削除(CRUD)といったすべての操作を、TClientDataSet が捕捉しすべての変更をキャッシュして、実行可能になります。クライアントアプリケーションは、完全にサーバーから切り離して、後で再接続する形式でも使用できます(いわゆる「ブリーフケースモデル」)。再接続が行われると、TClientDataSet は、すべての変更をサーバーと調整するコードを実行します。

    追加情報

    Delphiで作られたアプリケーション

Delphiは、容易にネイティブアプリケーション開発が実現できるので、ISVの開発プラットフォームとして広く採用されています。以下に列挙した有名なアプリケーションパッケージもDelphiで作られています。

Delphiによって作られたその他のアプリケーションについての完全なリストは、public Delphi Wikiに掲載されています。

また、Delphi 2009もDelphi自身によって作成されています。Delphi for PHPBlackfish SQLといった他のCodeGearツールもDelphiによって作られています。

    Delphi 2009に関連するイベント

Delphi 2009の発表に合わせて、エンバカデロではさまざまなイベントを実施しています。グローバルでは、Delphi 2009の新機能を紹介する48時間のオンラインデモを公開しています。

また、日本では、デベロッパーキャンプでDelphiプロダクトマネージャのNick Hodgesが、Delphi 2009を紹介しています。

    CodeRage I オンラインカンファレンスのプレゼンテーション

2007年3月、CodeGearはオンラインバーチャルカンファレンス「CodeRage」を開催しました。CodeGearのスタッフとコミュニティの有志が、Delphiのテクノロジーについて解説しています。以下は、その内容をビデオに収録したものです。

タイトル

講演者

What’s New in Delphi 2007

Nick Hodges, Delphi Product Manager

The New VCL for Delphi 2007

Seppy Bloom, VCL R&D Engineer

What's New in DBX4

Steve Shaughnessy, Lead R&D Engineer for DBX4

What's New in the Delphi 2007 Debugger

Chris Hesik, R&D Engineer for the Debugger UI

Ajax Powered Web Applications with Delphi and IntraWeb 9.0

Olaf Monien, AtoZed Software

Web Services in Delphi 2007

Bruneau Babet, Delphi R&D Engineer

MSBuild and the New Project Manager

Dave Wilhelm — R&D Engineer for the IDE

    CodeRage II オンラインカンファレンスのプレゼンテーション

2007年11月には、2回目となるオンラインバーチャルカンファレンス「CodeRage II」を開催しています。Delphiに関連するセッションを以下にリストします(ファイルはZIP形式で圧縮されており、ここに含まれるHTMLに埋め込まれたFlashによってセッションビデオをご覧いただけます)。

タイトル

講演者

Delphi Product Address

Nick Hodges – Delphi Product Manager

Top Ten Things Added to Delphi since Delphi 7

Pawel Glowacki – Delphi EMEA Evangelist

Introduction to Blackfish SQL

Leonel Tognioli -- CodeGear R&D Developer

Delphi 2007 and Vista

Marco Cantu – WinTech Italia

Delphi Dynamic Architectures with Packages

Marco Cantu

Introduction to Generics in Delphi

Ray Konopka – Raize Software

Creating Composite VCL Controls

Ray Konopka

Building Advanced VCL.NET ECO Applications and Migrating Old Databases

Holger Flick – Delphi Q&A Engineer

Delphi Unit Testing Power Tools

Craig Stuntz — Vertex Systems Corporation

Effective UML Modeling in Delphi

Alexander Evdokimov and Alexey Dubkov — CodeGear

ClientDataset Tips and Tricks

Cary Jensen – Jensen Data Systems





Server Response from: ETNASC03