David Millington(シニアプロダクトマネージャー)、Atanas Popov(ジェネラルマネージャー、開発ツール)、Kyle Wheeler(ジェネラルマネージャー、C++)
ここ 1 年、多くのお客様から、C++Builder におけるクロスプラットフォーム/マルチデバイスサポートの継続に関するプランに関してご質問をいただいています。ここでは、このプランについてのアップデートを提供したいと思います
Table of Contents
プラットフォームの概要
C++Builderについては、VCLをFMXよりも優先したため、プラットフォームサポートが遅延する結果となりました。 C++ Builder 10.4時点では、以下をサポートしています。
- Windows 32-bit /64-bit (VCL / FMX)
- iOS 64-bit (FMX)
- Android 32-bit (FMX)
最も影響を受けているユーザーは、すでに次のことをご承知だと思いますが、ここで明確にしておきます。8月1日、Googleが定めた32ビットアプリケーションのデッドラインが有効になります。以降は Google Playストアでアプリをアップデートするには、Android 64ビットとして再コンパイルする必要があります。C++Builderは現在、このプラットフォームをサポートしていません。8月1日時点でも、(2020年内を予定してる)C++Builder 10.4.1でも、Android 64ビットサポートを提供する予定はありません。
Android デバイスで 32 ビットアプリケーションが引き続き動作することは、注視すべきポイントです。実際、 C++ Android 32 ビット例外処理の問題を解決する 10.4 Patch 3もリリースしています。64 ビットの制限が課せられるのは Play ストアのみなので、インハウスのアプリケーションやサイドローディングアプリケーションは、引き続き完全に機能します。
また、macOSのC++ 64ビットサポートも2020年の計画には含まれていません。これを実施する際には、Intelベースではなく、ARM(Apple Silicon)のサポートに直接移行する可能性があります。
Android 64 ビットでの利用を重視する場合は、その機能をサポートしているDelphiを含むRAD Studioへアップグレードする選択があります。詳しくは、こちらへお問い合わせください。
お客様からのフィードバックとプラットフォーム
2019年3月に、カスタマーサーベイを実施しました。このサーベイでのC++Builderユーザーからの全体的なフィードバックは、Windows上での動作品質、つまりコンパイラの品質、STL、IDE(コード補完を含む)にフォーカスしてほしいというものでした。
C++Builder ユーザーの大多数は、VCL を使用して Windows のみをターゲットにしています。VCLのパフォーマンスやネイティブコントロールの存在、そして新しく追加されたコントロールがその理由です。 さらに、マイクロソフトはWindows 10へのアップグレードを強く求めており、VCLのWindows 10対応は、これらのアプリのマイグレーションや、Windows 10向けに高品質なUIを持つアプリ環境を必要とする場合には、大変役立ちます。
この状況は、私たちの戦略をシンプルなものにしました。つまり、お客様の期待に応えるため、他のプラットフォームへの取り組みよりも、まずWindowsにフォーカスするということです。これにより、ロードマップから macOS Catalina のサポートを削除し、Android の 64 ビットサポートよりもWindowsの品質向上を優先して取り組んできました。
Windowsの品質
2018年11月にClangをアップグレードして以来、IDEツール環境を含めたWindows向けの品質が、要求水準に達していないことは認識しています。
では、これをどのように改善していくのか。現在の取り組みについて紹介します。
コード補完、リンカ、一部の STL クラス、および一部のコンパイラ ICE については、長年の課題があります。さらに、C++Builder が生産性の点で他の IDE を凌駕できるような IDE の生産性機能があります。Windows 向けの目標は以下の通りです。
品質の目標:
- 完全に機能するコード補完、およびその他の Code Insight 機能を提供
- リンカで生じる問題すべての完全解決
- STL 問題の解決
- 一般的なC++ライブラリとの優れたC++互換性を提供するために、他のツールチェーンとの互換性の確保
機能の目標:
- Visual Assistの統合により、リファクタリングなど追加のコードツールを提供することで、C++BuilderがVisual Studioよりも強力な生産性ツールを備える
- C++17以降の言語サポートの提供
- 特に大規模なプロジェクトで、より高速に行えるコンパイル環境の提供
ここでの最終的な目的は、(a)期待通りに動作し、(b) 一般的な C++ との互換性を確保し、生産性の面で他のツールを上回ることを保証することです。VCL のようなエンバカデロのライブラリは世界をリードしており、IDEの生産性もそのレベルで実現することができれば、C++Builder は大きな力を発揮します。
この目標はまだ道半ばですが、この戦略により、サーベイの結果を受けて、何にフォーカスし、何を提供してきたかを理解頂けると思います。これまでの成果と今後の計画について掘り下げ、上記のポイントについてより明かにしていきたいと思います。
改善点
サーベイを受けて、以下のような改善を行ってきました。
- Windows 64-bit C++17のサポート、つまり、最新のC++言語仕様で Windows 32-bit および 64-bitが利用できるようになりました。
- Boostを最新版にアップデート(以前のバージョンでは Boost 1.55 )。10.3ではBoost 1.68、10.4ではBoost 1.70をそれぞれ提供
- 従来のコンパイラとの互換性を含む、ツールチェーン全体のコンパイラの安定性、RTLメソッド、STLの修正、リンカの修正などが多数含まれており、古い従来のコンパイラから現代のClangへのアップグレードが以前よりもはるかに簡単になりました。
- GetItで人気のある多数のオープンソースライブラリを提供。これらは使いやすいだけでなく、RTLや他のツールチェーンとの互換性がない部分を見つけるための素晴らしいテストケースとなっています。(Windowsでも、ヘッダーでPOSIXメソッドまたはアプローチを使用することがよくあります。 また、一般的なC ++ライブラリの多くのヘッダーは、特定のコンパイラを想定して記述されています。)これにはlibsimdpp、Eigen、NemaTode、SDL 2などが含まれており、その作業によって多くの互換性の問題を解決され、外部のC++ライブラリやソースをソースを取り込むための機能が大幅に向上しました。
- リソースリンクのような機能を改善するためにCMakeサポートを更新し、ツールチェーンの他のコンパイラの設定を自動的に処理することで互換性を高めました。
- Windows 64 ビット向けの全く新しいデバッガで、Clang に依存するデバッグ問題、一般的な C++デバッグ問題の両方に対応しています。これにより、Clangでのデバッグは、Win64のクラシックでのデバッグと同等の機能を持ちました。
将来的には、以下の改善を行う予定です。
- デバッグ形式のストレージやリンクの変更、デバッグビルドをリンクする際のメモリ負荷の軽減など、リンカを改善します。これによってリンカへの大幅な変更を行う予定
- Visual Assist for C++Builder、リファクタリングおよびその他のツールをIDEに追加
- STLの複数バグを修正し、STLの問題の改善
- IDEでCMakeの統合
- C++のコード補完の修正
- 並列コンパイルの改善。並列コンパイルは、使用可能なCPUの数に応じてプロジェクトのビルドにかかる時間を短縮でき、4倍、8倍、あるいはそれ以上の高速化を目標
まとめ
C++Builder ユーザーの皆さんから寄せられた「Windows 開発の品質に注力してほしい」という要望を受け、それに応えるべく作業を進めています。高品質なWindows開発の提供にフォーカスし、特に既存のUIの生産性に合わせたIDEの生産性の向上と、重要な問題の解決に注力しています。これは、短期的(6~9ヶ月)にはAndroid 64ビットやmacOSのサポートを提供しないことを意味します。しかし、エンバカデロでは Windows 向けにていくつかの重要な改善に取り組み、すでに提供しています。Visual Assist の統合など、他の IDE の生産性に対しC++Builder が優位に立つような項目の提供は大いに期待されるものです。このようなプライオリティ設定は、一部のお客様にとってはマイナスの影響を与える可能性があることは理解しており、申し訳なく思っています。しかし、お客様が求め、そして必要としている製品を確実に提供するために、現時点では、品質と Windows にフォーカスすることが正しい選択であると考えています。
Windows 開発のための品質強化と機能セットの提供に確固たる道筋をつけたら、今後は他のプラットフォームや機能に対応するための適切なステップを踏んでいきたいと思います。今後のリリースにご期待ください。また、その他のご意見やご要望も、ぜひお寄せください。
注意:これらの計画およびロードマップは、現時点でのエンバカデロの意図を示したものですが、開発計画および優先順位は変更される可能性があります。したがって、記載されている内容通りに、そして記載したスケジュール通りにC++Builderをリリースできることを保証するものではありません。 開発スケジュールまたは「製品ロードマップ」のこれらの一般的な表示は、いかなる形式のコミットメントとして解釈または解釈されるべきではなく、アップグレード、アップデート、機能強化、およびその他のメンテナンスリリースに対するお客様の権利は、適用されるソフトウェアライセンス契約でのみ規定されます。