統合開発環境

、**IDE**は、ソフトウェア開発のための統合的なプログラミング環境であり、様々なツールの集合からなる。

従来、ソフトウェアプログラムのコーディング・コンパイル・ビルド・デバッグといった作業を行なう際に、テキストエディタ、コンパイラ、リンカ、デバッガなどの各ツールを個別にコマンドラインから利用していたものを、ひとつの対話型操作環境（多くはGUI）から直感的かつシームレスに利用できるように統合したもの。IDEには、GUIアプリケーション開発のための迅速なプロトタイピング (Rapid Application Development: RAD) が可能なものが多い。統合開発環境を使うことによって、開発者の学習や作業負担を大幅に低減することが可能になり、特に巨大かつ複雑なソフトウェアの開発に効果を発揮する。ソフトウェアテストのためのツールが統合されてシームレスに連携できるようになっているものもある。

## 統合開発環境の特徴
### モジュール管理

ひとつのソフトウェアを作成するには、プログラミング言語のソースコードを記述したソースファイルや、アイコン画像やローカライズされたテキストなどのリソースファイル、そしてビルド（コンパイル＆リンク）設定管理用ファイルなど、複数のファイルが必要になる。自動化されたビルドシステムでは、これらをまとめて「プロジェクト」として扱い、一括して管理できるようにしている。開発環境のコンピュータにおけるファイルシステム上のディレクトリ階層と自動的に同期するビルドシステムもあれば、ファイルシステムとは無関係に論理的なディレクトリ階層を使用するビルドシステムもあるが、ビルドシステムのプロジェクトファイルの管理は一般的に煩雑であり、大規模なソフトウェアになるほど困難となる。IDEでは、対応するビルドシステムのプロジェクトファイルを直接編集することなく視覚的かつ直感的に操作・管理することが可能となっている。

より複雑なソフトウェアでは、再利用性やメンテナンス性などを考慮してプログラムを機能ごとに分類された部品（モジュール）に分割して管理する。一般的なビルドシステムでは、そのモジュールごとにプロジェクトファイルを作成し、さらに複数のプロジェクトファイルとそれらの依存関係をまとめて管理することのできる「ワークスペースファイル」をサポートする。プロジェクトファイルやワークスペースファイルは、個々のビルドシステムによって、ファイルフォーマットや拡張子が異なる。Gradleなどのようにファイルシステム上でビルドスクリプトが置かれたディレクトリ構造そのものをプロジェクトやワークスペースとして扱うビルドシステムもあるが、IDEではそういった詳細仕様を意識することなく直感的にモジュールを管理できるようになっており、またプロジェクトの新規作成時もウィザードの指示に従っていけば簡単にファイル一式を自動生成できるようになっている。

### バージョン管理
ソフトウェア開発においては、ソースコード管理にCVS、Subversion、Gitなどのバージョン管理システムを使うことが多い。IDEの多くはチェックアウト、コミット、リバート（バージョンの巻き戻し）などのバージョン管理システムに対する操作が簡単に実行可能となっている。

### チーム開発
IDEの中にはコード整形ルールをプロジェクト単位あるいはソースツリー単位で管理できるものもある。チームで開発を行なう際、同じIDEと同じルール設定ファイルを各開発者が利用することによって、コーディングスタイルの統一を図りやすくなる。

タスク管理ツールやテストケース管理ツールなどと連携して、ソフトウェア開発プロジェクトの進捗管理を含めた総合的なチーム開発をサポートするエンタープライズ向け機能を持ったIDEもある。

### コーディング補助
IDEに統合されたコードエディターは、プログラミングに特化されており、各言語のキーワード（予約語）をハイライト（色分け）したり、またプロジェクト内のソースファイルやヘッダーファイルから抽出した解析済みシンボル情報のデータベースをもとに、ユーザー定義のデータ型や変数やサブルーチン（関数／メソッド）の名前（識別子）を補完したり、といったことができるようになっている。これにより、ソースコードの記述効率が上がり、またコーディングミスなどを防ぎやすくなる。また、ソースコードのコメント先頭に「TODO」などといった特定の文字列を入れておくと、それをIDE上で一覧表示して確認できるようになる機能をサポートするものもある。さらに、一部のIDEでは実際にコンパイルすることなくリアルタイムでソースコードを解析して構文エラーや警告を検出し、当該部分に下線を引くなどしてプログラマに知らせるものもある。

### ビルド、デバッグ補助
コンパイラやリンカなどと連携しているため、作成したソフトウェアのビルドを簡単に実行できる。また、デバッガと連携しているため、ソースコード中に視覚的なブレークポイントを置いてソフトウェアの動作を一時停止させたり、変数の中身を確認しながらソースコードを1行ずつステップ実行させて問題のある個所を探したり、といったことが直感的にできる。

### GUIの作成
GUIを持つソフトウェアを開発する際、一般的に各ウィジェット（部品）の位置やサイズといったプロパティ情報の指定は、専用のレイアウト設定ファイルを使用して記述する。レイアウト設定ファイルは通例XML形式であったり独自の階層構造テキスト形式であったりするが、テキストエディターを使ってGUIの定義を記述するのは手間がかかる。さらにプログラムをビルドして実行してみなければ画面表示結果が確認できないのであれば、直感性に欠け、効率も悪い。そこで、多くのIDEは、GUIの作成をIDE上で視覚的かつ直感的に行なえるように、WYSIWYGに対応したグラフィカルなビジュアルエディターを統合している。また、ウィジェットを操作したときに発生するイベントに対する処理（イベントハンドラー）の記述も、コードエディターと連携・同期できるようになっている。これにより、簡単にGUIを持つソフトウェアを開発できるようになり、また、管理も一括して行なえる。なお、一部のIDEは、GUIの作成を行なうソフトウェアを分離しているものもある。

## IDEの例

*ActiveBasic - 元はN88互換として開発が始まり、はRADやコンパイラを搭載しネイティブなアプリが作れる。フリーソフト。
*ActiveState
**Komodo IDE - もともとはスクリプト言語用に特化した統合環境である。
**Komodo Edit - Komodo IDEの機能縮小版（オープンソース）
*Anjuta - GNOMEで用いられているオープンソースの統合開発環境
*アドビ
** Adobe Flash Builder
*Apple
**Xcode - GCC/Clangを使用。C言語/C++、Objective-C/C++、Swiftを使用したmacOS/iOSのアプリ開発に対応。
*Google
**Android Studio - IntelliJ IDEAをベースに開発された。C/C++、Java、Kotlinを使用したAndroidアプリ開発に対応。
*エンバカデロ・テクノロジーズ（旧ボーランド）
**RAD Studio
**C++Builder
**Delphi
**JBuilder
**Kylix
**Turbo C - DOS時代に使用された統合環境
**Turbo Pascal - DOS時代に使用された統合環境。Pascalの項を参照
*CodeWarrior - 様々なプラットフォームに対応する、統合開発環境の代表格
*Eclipse - 本来はJava向けのIDEであったが、現在は様々な言語での開発に対応している。豊富なプラグインが特徴。
*Emacs - 厳密に言えばテキストエディタだが、その強力な拡張性により統合開発環境と同等の使い方ができる。Unix系OSでIDEがあまり流行らないのは、Emacs文化が存在する部分が大きい。
*FutureBASIC

*IntelliJ IDEA - Java IDE。世界で初めてJavaのIDEにリファクタリング機能を導入。優秀なSwingのRAD機能も持つ。他のプログラミング言語に対応した派生環境としてCLionなどがある。

*オラクル
**JDeveloper - オラクルが開発したJava IDE。2021年6月13日現在、無料で配布されている。
**旧サン・マイクロシステムズ
***Java Studio Creator - Java IDE。ウェブ開発に適している。事実上開発は停止し、下記のNetBeansが後継となっている。
***NetBeans - Java IDE。主にJava Swing開発に適しているが、プラグインも豊富で、PHPやC言語系等を標準でサポートしている。
*KDevelop - KDEのIDE

*Qt Creator - Qtの統合開発環境。Qt4.5のバージョンアップの際、Qt SDKとともに発表された。Qtソフトウェア社製。
*REALbasic - Classic Mac OS / macOSで多く用いられているクロスプラットフォーム統合開発環境。REAL Software製
*Visual Studio - マイクロソフト製。WindowsネイティブアプリやUWPアプリ、.NET Framework/.NET Coreアプリ、ASP.NETアプリ、Microsoft Officeアドイン、デバイスドライバの開発などに対応している。
**Visual Basic (開発終了)
**Visual Basic .NET
**Visual C++
**Visual J++ (開発終了)
**Visual C#
**Visual J# (開発終了)
**Visual F#
*Visual Studio for Mac - Xamarin Studioがベース。ASP.NET CoreやMicrosoft Azureを利用したWeb・クラウド開発、Mono/XamarinフレームワークおよびC#を利用したmacOS/iOS/Androidアプリ開発などが可能。
*WideStudio - 様々なプラットフォームに対応するオープンソースの統合開発環境
* - C++統合開発環境
*SharpDevelop - オープンソースで開発されている.NETの統合開発環境。利用できるプログラミング言語としては、C#、VB.NET、F#、IronPython、Boo、ILAsmに対応しており、開発できるアプリケーションの種類としては、Windowsフォーム、WPF、ASP.NET、Compact Framework等に対応している。
**MonoDevelop - SharpDevelopから派生し、Mono向けの最適化を施したバージョン。その後、独自の進化を遂げ、現在ではまったくの別物となっている。
**FlashDevelop - SharpDevelopから派生し、Adobe Flex向けの最適化を施したバージョン。Adobe Flex向けの無償で利用できる統合開発環境が他にないため非常に人気が高い。
*Dev-C++ - GCCを使うWindows上のC++統合開発環境。
*Actuate Basic - 帳票サーバActuateの開発言語Actuate Basicの統合開発環境。
*PowerBuilder - データベースや帳票出力のための統合開発環境。
*CodeLite フリーでオープンソースなクロスプラットフォームのC/C++統合開発環境。
*Geany GTK+上の軽量なクロスプラットフォームのテキストエディタであり、Scintillaと基本的な統合開発環境機能をベースとしている。
*GNAT Programming Studio free multi-language integrated development environment (IDE) by AdaCore. GPS uses compilers from the GNU Compiler Collection, taking its name from GNAT, the GNU compiler for the Ada programming language.
*Ultimate++ C++ cross-platform development framework which aims to reduce the code complexity of typical desktop applications by extensively exploiting C++ features.
*Team Developer SQLWindows、Report Builder、Team Object Managerなどを備えた統合開発環境。.Netに対応している。
*PaizaCloud - Cloud IDE。ブラウザ上で動作するウェブ開発、アプリ開発環境。
*Lazarus - PascalおよびObject Pascalの統合開発環境。
*Light Table - Clojure、Python及びJavaScriptの統合開発環境。

## ゲームの標準開発環境
コンシューマーゲーム（ゲームコンソール）の公式開発環境は独自開発のものが多く分断化されている。開発環境の価格にライセンス料が含まれることもある。

ゲーム機の性能が向上し、またスマートフォンなどのモバイル端末もゲームプラットフォームとして台頭してきたことで、UnityやUnreal Engineといったマルチプラットフォームに対応したミドルウェア（ゲームエンジン）もサードパーティ製の統合開発環境として普及している。インディーズの参入障壁も下がっている。

## 脚注

### 注釈

### 出典

## 関連項目
* ソースコードエディタ