インテル® INDE “クロスプラットフォーム・ツールキット” とは?
この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® INDE: What does it mean to be a “cross-platform toolkit”?」の日本語参考訳です。
インテル® Integrated Native Developer Experience 2015 toolkit (インテル® INDE) の紹介 (英語) を公開した後、以下を含むたくさんの問い合わせをいただきました: “インテル® INDE のクロスプラットフォーム・ツールキットとは何を意味するのか?”
この疑問に答える前に、このトピックに関する背景を説明します。私たちが、開発者のみなさんにクロスプラットフォーム・ツールキットに何を望むかを尋ねたとき、いくつかの要望をいただきました:
(1) ツールキットは、Windows* と Android* ターゲットシステムの両方をサポートする必要があること、
(2) ツールキットは、任意の IDE (Visual Studio*、Eclipse*、もしくは Android Studio*) に統合できること、
(3) ツールキットには、ターゲット・プラットフォームの基盤となるアーキテクチャーとパフォーマンスを明らかにできる必要があり、さらに
(4) ツールキットは、複数のプラットフォーム上での開発に費やす労力を最小限にできる必要があります。
クロスプラットフォーム・ツールキットを開発するには、2 つの異なる方法があります: それは、”トップダウン” と “ボトムアップ” です。トップダウン (“write once, run anywhere (一度書けばどこでも動く)” として知られています) のアプローチでは、開発者は共有インターフェイスへのコードを一度記述し、ツールキットが異なるプラットフォーム用のバイナリーコードを生成することを可能にします。ボトムアップによるアプローチには、それぞれのプラットフォームに共通のライブラリーとツールセットが含まれ、これにより複数のプラットフォーム上で重要なコードの再利用を可能にします。
トップダウンの利点は、”一度書けばどこでも動く” ことですが、パフォーマンスのオーバーヘッド、習得の困難さ、そしてプラットフォームごとに GUI の細かなチューニングが必要 (各プラットフォームのユーザー・インターフェイス・ガイドラインが異なるため) である欠点もあり、大部分の開発者にとってこのアプローチはあまり適切ではありません。
これが、インテル® INDE がボトムアップのアプローチを採用する理由であり、前述した開発者の要望を次のように満たしています:
- まず、インテル® INDE は、インテル® アーキテクチャー上の Windows* アプリケーションと ARM およびインテル® アーキテクチャー上の Android* アプリケーションの作成を可能にします。ホスト/開発システムとして、Windows* もしくは OS X* のどちらかを利用できます。
- 次に、開発者の既存のワークフローにそぐわない特殊な開発環境の利用を強制されることなく、一般的な Android* IDE を選択できます。もし、Windows* アプリケーションの開発に Visual Studio* を利用しているのであれば、Android* 向けの開発にもこれまでの知識を活用できます。Android* 向けにのみ開発をならば、Eclipse* が有用であるかもしれません。また、最先端の技術を導入する場合、Android Studio* のベータ版を利用することもできます。
- インテル® INDE は、追加アイテムとして組み合わることができる高度に最適化された、クロスプラットフォーム・ライブラリーを提供します。それらは、各インテル® アーキテクチャー・プラットフォームのパフォーマンスと消費電力特性に合わせて最適化されており、プラットフォーム間でコードを再利用できる多くの API 共通関数が提供されます。
- さらに、インテル® INDE で提供されるビルド、デバッグ、そして解析ツールによって、アプリケーションの水準を迅速に高めることができる利点もあります。インテル® C++ コンパイラー以外にも、Android* デバッガー拡張 (インテル® INDE vs-android Plug-in for Visual Studio*)、そして Graphics Frame Debugger、System Analyzer、Graphics Frame Analyzer、および Platform Analyzer などの解析ツールが含まれます。
例えば、インテル® INDE のクロスプラットフォーム・ライブラリーの 1 つを見てみましょう: インテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) は、デジタルメディアや科学/技術系アプリケーション (FFT やイメージ処理) の作成を含む、汎用的に利用される基本アルゴリズムを網羅する最適化済みの数千もの関数を提供しています。これらの関数は、インテル® アーキテクチャー・プラットフォーム向けに高度に最適化され、利用可能であればインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) やインテル® アドバンスト・ベクトル・エクステンション命令 (インテル® AVX) を使用します。そのため、インテル® IPP の API を使用して一度コーディングすると、すべてのターゲット・プラットフォーム上で最適化されたネイティブ・パフォーマンスを利用できます。
ここでは、インテル® INDE のクロスプラットフォームの特性を明らかにし、製品の機能がどのようにクロスプラットフォーム開発者の要件を満たすか説明しました。最後に 1 つだけ付け加えるとすると、以下のメッセージを皆様に伝えたいと思います:
インテル® INDE は、エンドユーザーの要求を満たす高性能なアプリケーションの設計と開発にエンジニアが集中できることに注力しています。そして、開発者は、各ターゲット・プラットフォーム固有の性能と消費電力特性に対して最適化を行うために詳細を学ぶ必要はありません。
インテル® INDE 製品の各エディションと詳細情報は、インテル® INDE のホームページをご覧ください。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。