ArcObjects は、 ArcGISファミリーのアプリケーションの開発環境です。Visual Basic for Applications、C#、またはJava SDK for ArcGIS を使用することで、開発者はこれらのアプリケーションを拡張できます。[ 1 ] ArcObjects は、Esri の ArcGIS プラットフォームの基盤を構築するComponent Object Model (COM)コンポーネントのライブラリです。ArcObjects は主にC++プログラミング言語で記述されています。ArcGISはArcObjects の上に完全に構築されているため、ArcGIS プラットフォームは COM サービスと機能を利用することで完全にカスタマイズおよび拡張できます。これにより、Visual Basic、C#、Visual Basic.NET、Java、Pythonなど、COM と互換性のある任意のプログラミング言語を使用して ArcObjects データ モデルを簡単に拡張できます。COM を使用すると、コンポーネントをバイナリ レベルで再利用できるため、開発者は ArcGIS プラットフォームを拡張するために ArcObjects のソース コードにアクセスする必要はありません。このため、ArcObjects プログラマーは、型の実装の詳細を知らなくても、その型が何ができるかを知るだけで、ArcObjects システム内の任意の型を使用できます。
ArcObjects データ モデルは COM 標準に基づいており、他の COM オブジェクトやアプリケーションとの互換性があります。これにより、同じく COM 標準に基づいている他のシステムとの統合や連携が容易になります。ArcGIS プラットフォームは、クラス、インターフェイス、列挙型などの ArcObjects 型を使用して構築されています。ArcObjects は COM インターフェイスを使用してクラスのプロパティとメソッドを整理して通信し、他の COM ベースのオブジェクトやシステムとの互換性を確保します。ArcObjects COM クラスを操作する場合、そのプロパティとメソッドには、インターフェイス クエリ (QI) プロセスを介して実装されているインターフェイスのいずれかを介してのみアクセスされます。ArcObjects のクラスには、複数のインターフェイスが一般的に用意されています。たとえば、インスタンス化後に QI プロセスを介してオブジェクトによって実装されている追加のインターフェイスをクエリできます。オブジェクトのインスタンス化時に使用できるインターフェイスは 1 つだけですが、ArcObjects のクラスには複数のインターフェイスが用意されていることが多く、COM 標準に基づく他のシステムとの柔軟性と互換性が向上します。[ 2 ]