1. 次期Delphi/C++Builderでは新しいコンパイラ・アーキテクチャを採用
海外担当副社長兼ジェネラルマネージャ
Nigel Brown氏
![図1.1 エンバカデロ・テクノロジーズ 海外担当副社長兼ジェネラルマネージャ Nigel Brown氏](http://cz-cdn.shoeisha.jp/static/images/article/6621/6621_nigel-brown1.jpg)
今回のデベロッパーキャンプには、エンバカデロの海外担当副社長兼ジェネラルマネージャであるNigel Brown氏が来日してキーノートセッションを担当した。同氏からはエンバカデロの2011年度の実績および2012年度の取り組みや、次期バージョンのRADツールに搭載予定の新機能の紹介、2011年にリリースされたアプリ配布基盤「AppWave」の最新動向の紹介などが行われた。ここでは、その中から次期Delphi/C++Builderに関する情報をお伝えする。
次期バージョンのDelphiとC++Builderでは、コンパイラ・アーキテクチャの大幅な変更に着手しているという。Delphiの場合、現行バージョンではDelphi(Pascal)コードをいったんDelphi中間表現に直し、それをIntelプロセッサ用のコードジェネレータで実行コードに生成するというプロセスになっている(図1.2)。C++builderの場合も同様で、C++コードを中間表現に直して、そこからIntelプロセッサ用の実行コードを生成する。
最初にDelphiがリリースされたときからこの仕組みを採用し続けてきたとのことだが、ここ数年で状況が大きく変わったとBrown氏は言う。MicrosoftとIntelによる支配的な構造が崩れ、Mac OSやiOS、Androidなどが台頭し始めからだ。これによってユーザの選択肢は大きく広がった。開発ツール側では、広がった選択肢に対応していかなければならない。そのためにDelphiおよびC++BuilderではMicrosoft+Intelという前提のもとで構成されていた従来のアーキテクチャを捨て、LLVM(Low Level Virtual Machine)を活用した新しいアーキテクチャの採用に踏み切ったというわけだ。
具体的には、DelphiおよびC++Builderはコンパイル時に共通の中間表現を構築し、そこからターゲットとなるプラットフォームごとに最適化された実行コードを生成する(図1.3)。ポイントは、開発者が作成すべきコードは従来とまったく変わらず、違いはすべてコンパイラで吸収するという点である。つまり、開発者自身はアーキテクチャの違いを意識する必要はない。
もう一つのポイントは、フロントエンドのツール(言語)の違いと、ターゲットとなるプラットフォームの違いも、すべて中間表現によって吸収されるということだ。これまでとは違い、DelphiとC++Builderは同じ中間表現を構築する。そして中間表現から実行コードへの変換には、Intel以外のプロセッサ向けのコンパイラも提供されるようになるとのこと。具体的にはx64およびARMプロセッサ向けのコンパイラが挙げられているが、構造的には将来的に登場する新しいチップセットにも対応できる柔軟性を備えることになる。
「このようなアーキテクチャの根本的な改革はこれまでとは違うまったく新しい製品を作り出すようなものであり、極めて大きなチャレンジでした。自社の技術にロックインさせて囲い込みを狙いたい競合他社にはできない選択であり、エンバカデロならではの強みになるはずです」(Brown氏)
![図1.2 従来のコンパイラ・アーキテクチャ](http://cz-cdn.shoeisha.jp/static/images/article/6621/6621_old-architecture1.jpg)
![図1.3 LLVMベースの新しいコンパイラ・アーキテクチャ](http://cz-cdn.shoeisha.jp/static/images/article/6621/6621_new-architecture1.jpg)
コンパイラ・アーキテクチャ以外の拡張としては次のような機能が挙げられた。
- iOS向けネイティブアプリの開発をサポート
- C++Builderにおいて64bit版Windows(Win64)向けのアプリケーション開発をサポート(DelphiはXE2で対応済み)
- FireMonkeyによるUI開発のさらなる拡張
また、上記以外の重要なフォーカス領域としてBrown氏はHTML5への対応を挙げている。具体的には、PC/モバイル端末も含めたHTML5/CSS3クライアントのビジュアル開発のサポート、PHPバックエンドと連携する動的なHTML5/CSS3アプリケーション開発のサポート、RadPHPの拡張などが予定されているという。