2008年11月、Adobe LabsにFlash 10やAIR 1.5の活用の幅を大幅に広げる可能性をもった興味深いプロジェクトが登場した。Adobe Alchemyがそれだ。Adobe Labsは実験的な研究プロジェクトを擁しており、Alchemyはそうしたプロジェクトのひとつ。今回、Adobe Systemsのプロダクトマネジメント担当ディレクターを務めるGreg DeMichillie(グレッグ・デミチリー)氏にAlchemyの詳細を聞く機会を得た。Alchemyはどうやって誕生したのか、AdobeはAlchemyをどう捉えているのか、同氏の話から概要をお伝えしたい。
Adobe Alchemyは、簡単にまとめるとLLVMのActionScript 3.0バックエンドを開発するプロジェクトだ。LLVMがどういったプラットフォームで、ActionScript 3.0バックエンドを開発することが何を意味するかを把握できると、Alchemyが目指しているものがよくわかる。
LLVM Compiler Infrastructureはコンパイルおよび実行のためのインフラストラクチャ。デフォルトではC/C++のコンパイラ/実行環境として動作するが、中間形式の出力と実行をサポートするなどJavaに近い仕組みをもっており、フロントエンドやバックエンドを開発すれば言語に依存することなく活用できるという「プラットフォーム」としての機能をもっている。
LLVMはアーキテクチャが明確で、さらにコンパイル時、リンク時、実行時、インストール後などさまざまなシーンで効率のいい最適化を提供するという特徴がある。古いコンパイラが特定の言語に依存しているのに比べて、言語に依存せずに質の高いコードを生成できるという特徴がある。
サンフランシスコで開催されたAdobe MAX 2008の2日目のキーノートで姿をあらわしたAlchmey。C/C++をActionScript 3にトランスレートするFlash Player 10およびAIR 1.5と互換 |
Alchemyの着眼点はここにある。LLVMではすでにC/C++フロントエンドが開発されており、C/C++のソースコードをLLVM中間形式に変更する機能が実現されている。ということは、LLVM中間形式をActionScript 3.0に変換できれば、結果的にC/C++のコードをFlashプラットフォームで実行できるようになる。
- LLVM: C/C++ → LLVM中間形式
- LLVM (Alchemy): LLVM中間形式 → ActionScript 3
- AS変換ツール: ActionScript 3→ActionScript 3中間形式
- Flash: ActionScript 3中間形式を実行
LLVMの最適化機能の恩恵にあずかれるうえに、C/C++フロントエンドを開発する必要がない。LLVM用にフロントエンドが開発されれば、それら言語も同じようにしてFlashプラットフォームで動作するようになる。LLVM中間形式をActionScript 3に変換するActionScript 3バックエンドを開発するだけで、さまざまな恩恵を受けられる。