いよいよDelphiおよびC++Builderの新バージョンがリリースされた。この新バージョンは、Win32ネイティブでUnicodeをフルサポートするコードネーム「Tiburon」として知られていた製品だ。
2008年9月9日、11日には、Delphiのプロダクトマネージャを務めるエンバカデロ・テクノロジーズのNick Hodgesが、第10回エンバカデロ・デベロッパーキャンプでこの新製品を紹介した。この記事では、彼が担当した2つのセッションから、Delphi 2009およびC++Builder 2009の新機能を紹介する内容をレポートする。
Delphi/C++Builder 2009が目指したこと
グローバル化の需要とネイティブ開発
デベロッパーキャンプのジェネラルセッションの冒頭で、Hodges氏は、市場の要求として「国際化」というキーワードを挙げた。現在多くの企業が複数の国や言語を対象にビジネスを展開しており、単一言語だけを扱えばよいというシステムの前提はもはや崩れているといってよい。扱うデータの国際化とシステムの国際化が、今多くの開発者に課せられている課題であるといえる。
一方でHodges氏は、ネイティブ開発の需要が引き続きあることも強調する。「マイクロソフトは.NETにフォーカスしているが、多くのユーザーがネイティブアプリケーション開発を必要としている。私たちはそこにフォーカスする」
Delphi/C++Builder 2009のゴール
Java、.NETといった新しいプラットフォームでは、扱うデータの国際化ということで、Unicodeを採用している。しかし、ネイティブアプリケーションでは、従来のANSI文字列を使用しており、これまで国際化に対するハードルが存在した。
Delphi/C++Builder 2009では、ネイティブ開発でUnicodeをフルサポートすることで、これまで制約のあった、国際化とネイティブ開発という2つの需要に対応することをゴールとしたのだ。
「新バージョンでは、Windows VistaやOffice 2008のリボンコントロールなどのモダンユーザーインターフェースにも対応しています。このような最新インターフェースや最新の言語トレンドに対応することで、ネイティブ開発を過去のものでななく、現在の最新技術へと引き戻すことを意図したのです」
Delphi/C++Builder 2009の新機能
国際化サポート
今回の新バージョンで、IDEからコンパイラ、フレームワークに至る最大の変更点は、すべてに渡ってUnicodeをサポートしたことだ。例えば、ということで、Hodges氏は日本語文字列による識別子を定義してみせた。
procedure TForm1.Button1Click(Sender: TObject); var メッセージ: string; begin メッセージ := 'Delphi 2009へようこそ!'; ShowMessage(メッセージ); end;
IDE、コンパイラがUnicodeを識別し、その上に構築されているランタイムライブラリやコンポーネントフレームワークがUnicodeを標準文字列として扱う。もちろん従来からの互換性のためにANSI文字列も扱える。しかし、Delphi/C++Builderで新規にアプリケーションを作成する場合には、Javaなどと同じように外部とのインターフェースを除き、Unicodeによってすべて処理するという前提でプログラミングを行うのが推奨されるようだ。
そのほかに、ローカライゼーションツールが搭載され、ユーザーインターフェースの翻訳も効率的に行える。
多層データベースアプリケーションの開発
データベースアプリケーション開発では、Delphi/C++Builderの標準データベース接続アーキテクチャとなったdbExpressのアップデートのほか、多層アプリケーションフレームワークが強化された。
Delphi/C++Builderのデータベース開発の魅力は、コンポーネントによって、データベース接続、データの取得、編集、更新までをビジュアル設計中心で、わずかなコード量で実装できることだ。また、接続するデータベースを変更しても、コードへの影響が少ないポータビリティも魅力だ。
今回強化された、「DataSnap」という多層アプリケーションフレームワークは、このコンポーネント技術の延長線上にある。つまり、ビジュアル操作によって、C/S型のデータベースアプリケーションを多層型のアプリケーション構成に拡張可能なのだ。多層型にすることで、アプリケーション構成を柔軟に設計できるようになるため、例えばデータアクセス部分を従来のWindowsアプリケーションだけでなく、Webアプリケーションなどでも利用できる。
新しいコンポーネント
Delphi/C++Builderには、200以上のコンポーネントが搭載されている。これらのコンポーネントをマウス操作でフォームに配置すれば、すぐに使えるアプリケーションを作成できる。言い換えればコンポーネントの性能は生産性を左右する。
Delphi/C++Builder 2009には、新しいコンポーネントとして、TCategoryPanelGroup、TButtonedEdit、TLinkLabel、TBalloonHint、TRibbonControlが搭載されている。これらのコンポーネントは、Windowsの新しいユーザーインターフェースを簡単に実装できるように用意されているものだ。
コンポーネント | 説明 |
TCategoryPanelGroup | Outlookのようなカテゴリー分けされたパネル |
TButtonedEdit | 左右にボタンを持つことのできる編集ボックス |
TLinkLabel | リンク先URLを設定できるラベル |
TBalloonHint | バルーンヒントを表示するコンポーネント |
TRibbonControl | Office 2008スタイルのリボンコントロール |
また、既存のコンポーネントについては、Windows Vistaの新しいユーザーインターフェースに対応するなどの機能強化がなされている。強化されたコンポーネントとして、TButton、TEdit、TImageList、TTreeView、TListView、TProgressBarが紹介された。
コンポーネント | 主な強化点 |
TButton | イメージの配置、コマンドリンク、スプリットボタンスタイルなど |
TEdit | 入力文字を数字に限定、パスワードのキャラクター設定 |
TImageList | PNG形式をサポート |
TTreeView | 項目を開いたときに別のイメージを指定可能 |
TListView | Vistaのグループ機能をサポート |
TProgressBar | マーキーのサポート、Vista上で一時停止、停止ステータスをサポート |
IDEの機能強化
IDEでは全般的なパフォーマンス改善に加えてプロジェクト管理機能が強化された。コンパイルオプションの設定など、プロジェクトの設定は複数のプロジェクトで共有されたり、同じプロジェクトでもフェーズによって異なったりするものだが、これらの管理が簡単になった。
すべてのビルド設定は、名前をつけて保存することで他のプロジェクトでも再利用できるようになった。また、特定のオプション設定を「オプションセット」として保存することで、これを再利用したり、継承して新しい設定を派生させたりできる。これらの機能をうまく使えば、基本設定からデバッグ用の設定、プロダクション用の設定など、効率的に定義して切り替えることが可能となる。
また、C++については、Delphiに比べてコンパイル時間がかかるという難点があった。C++はDelphiに比べて言語の構成が複雑であり、かつ、インクルードファイルによって任意のファイルを読み込めるため、コンパイル行数は膨大なものになる。
C++のコンパイル時間を短縮する試みとして、従来からプリコンパイルヘッダ技術があった。これは、あらかじめ共通部分となるヘッダをコンパイルしておくものだが、数多くのフレームワークやライブラリを多用する現在の開発では、効率化にも限界があった。そこで、ウィザード形式でプロジェクトに最適なプリコンパイルヘッダを生成する「プリコンパイルヘッダウィザード」を搭載し、劇的なコンパイル時間の短縮を実現した。
言語の強化
Delphi言語では、UnicodeStringをデフォルト文字列として採用した点が大きな変更点であり強化点だ。また、ジェネリックスは特定の型に規定することなく、型を安全に参照できるコードの記述を可能にする。無名メソッドは、特定のコードブロックをメソッドのようにパラメータとして使用できる機能だ。
C++では、次世代C++標準「C++0x」の言語機能をサポートしたのが大きい。同機能は、まだ仕様が最終化されていないが、商用C++コンパイラとしては初めて早期にサポートしたことになる。サポートされた主な機能を以下に示す。
- Decltypeキーワード
- Explicit conversion operators
- Externテンプレート
- rvalue リファレンスを伴うMove Semantics
- Scoped Enumerations
- ネイティブType Traitsを伴うStatic Assertions
- Unicode文字型 char16_t および char32_t
- [[final]] および [[noreturn]] 属性
そのほか、ANSI/ISO 標準ライブラリ であるTR1(Technical Report 1)やBoost library 1.35が利用可能だ。
まとめ
Delphi 2009、C++Builder 2009は、エンバカデロ・テクノロジーズとして初のリリースとなるIDE製品である。CodeGearとDatabaseGearの統合の第一歩として、データベースモデリングツール「ER/Studio Developer Edition」を搭載していることも新しい。
全体として、基本的な操作性の向上と新しいユーザーインターフェースへの対応などの新機能が目立つ。Unicode対応については、旧プロジェクトからの移行という点では意識しなければならないが、新規開発では、当初からUnicode対応のアプリケーションということで、開発を進めることができる。
Delphi/C++Builderは、生産性が高く、強力なネイティブアプリケーションを開発できることから、ISV/MicroISV、中小規模の企業や社内の部門システム開発として多く採用されているという。Hodges氏は、具体的なアプリケーションの例として、SkypeやInstallAwareなどのパッケージソフトウェアを紹介した。Delphi/C++Builder 2009は、こうしたネイティブ開発の需要に応えつつ、最新の技術に対応した製品であるということだ。