統合開発環境(IDE)は、プログラマがプログラムを書いたり、実行したり、デバッグするためのインタラクティブなユーザインタフェースを備えた環境を指します。IDEには、プログラミングに利用するプログラミング言語、コンパイラ、デバッガ、ツールキットやその他のツールが含まれます。一般的なツールがプログラミング活動の一部だけを支援するものであるのに対し、環境は全体を支援するものです。
このページはIDEが進化してきた歴史を時系列に説明しています。IDEの研究に関する国際会議の一覧はCategory:Academic conferencesを見てください。個別具体的な説明があるIDEの一覧はCategory:Integrated development environmentsを見てください。
コンピュータのプログラミング作業は、最初の頃はインタラクティブと言い難いものでした。プログラマはパンチカードを使って機械語を記述し、コンピュータに命令を送っていました。カードにパンチする物理作業には、計算機による支援が入る余地がありませんでした。
世界最初のIDEと言われているのは、Character-based User Interface (CUI)とハイレベルな文字ベースのプログラミング言語が登場したあと、1964年に開発されたDartmouth BASICです。このIDEはテキストエディタを備え、コンパイラを内蔵しており、プログラムをIDEの中でコンパイルして実行できました。当時コンピュータはまだ個人のものではなく、今のスーパーコンピュータがそうであるように、たくさんの人が共有して利用するものでした。Dartmouth BASICは、そのような目的で作られたDartmouth Time Sharing System (DTSS)で動作する開発環境であり、利用者は全員が専門知識を備えたプログラマでした。
近代的なIDEには当然備わっているべきと考えられるインタラクティブな機能の多くは1970年代に開発されました。その歴史はInteractive Programming Environments<ref> David R. Barstow, Howard E. Shrobe, Erik Sandewall,
Stephen W. Smoliar. Interactive programming environments
</ref>という本によくまとまっています。例えば、デバッガや解析ツール、構造化エディタなどがIDEに組み込まれました。よりインタラクティブな開発環境は、生産性を向上させるために非常に重要な要素と考えられており、研究開発が積極的に行われました。例えば、Interlispというデバッガと解析ツールを備えたIDEは1967年から1970年代を通してXerox PARCで継続的に開発されました。また、Cornell Program SynthesizerとMENTORは、それぞれPL/IとPascalというプログラミング言語の構造化エディタを含むIDEで、同時期に開発されました。
1980年代は、プログラミングにおけるヒューマンファクターがにわかに注目を集めた時代です。これは、IBMがパーソナルコンピュータを1981年に発売したのを皮切りに、プログラミングの初学者や、プログラミングの知識を持たないエンドユーザの数が劇的に増えたことが要因と考えられます。ヒューマンファクターに興味を持った研究者はエンドユーザプログラミングやGraphical User Interface (GUI)の研究に注力し、プログラミングの前提知識が不要でも使えるコンピュータの実現を目指しました。Human-Computer Interaction分野の主要な国際会議はこの時代に生まれました。なお、プログラミングに関する主要な国際会議も同様に1980年代生まれです。ソフトウェア工学やプログラミング言語のデザインに関する研究も、同時期に目覚ましい進展があったわけです。ただし、文字ベースの開発環境を改善する研究は、プログラミング言語の設計に関する研究と比べると目立ちません。プログラミング言語の設計指針はホーアの論文<ref>
C. A. R. Hoare. Hints on Programming Language Design
</ref>のように多数見られますが、IDEの研究はわずかです<ref name="pane1996usability" /><ref name="ko2004six" />。
エンドユーザは通常、プログラムを与えられた状態のまま使用します。したがって、エンドユーザは自分の意図をプログラムのコマンド列に置き換えて考え、しばしばコマンドを何回も繰り返す必要に迫られます。そのような面倒を避けるために、プログラムを作ったり、編集したり、拡張したいという欲求が生まれます。エンドユーザプログラミングは、そのような欲求を持ったエンドユーザやプログラミング初心者が直面するさまざまな課題に応える研究分野です。その方針は、大まかに2つに分けられます。ひとつはプログラミングを簡単にすることで、もうひとつは、いわゆるプログラミングそのものをなくしてしまうことです。例えば、構造化エディタやVisual Programmingに関する研究はひとつめ、Programming by Exampleに関する研究はふたつめの方針に沿った研究といえます。それぞれに関する詳細な説明はCategory:Visual programmingとCategory:Programming by exampleに載せてあります。これらの用語の使い分けについては、Myerらのサーベイ論文<ref> Brad A. Myers. Visual programming, programming by example, and program visualization:
a taxonomy
</ref>を読むと詳しく書いてあります。
Visual Programming言語はたいてい何らかのグラフィカルな開発環境を伴うものとして開発されたのですが、文字ベースのプログラミング言語用のIDEはBASIC以来似たような見た目のままでした。そのような開発環境は、ファイルマネージャ、文字ベースのソースコードエディタ、そして文字ベースのデバッガなどから構成されます(例: Eclipse)。グラフィカルな表現はあまり使われません。既存の文字ベースのIDEが持たない機能を提供するために、さまざまなプログラマ向けのツールが開発されてきました。とくに長い歴史を持つツール研究の例として、ユーザインタフェース用ツールキット
<ref>
Brad A. Myers, Scott E. Hudson, Randy Pausch. Past, present, and future of user interface software tools
</ref>が挙げられます。しかし、IDEそのものは劇的な変化を遂げることはなかったのです。文字ベースのIDEは、職業プログラマの大部分にとってプログラム開発の主要な手段であり続けました。
1990年代はプログラミングがより複雑で面倒なタスクになった時代です。例えば、GUIを文字だけで開発するのは簡単ではありません。そこで、1991年にリリースされたVisual Basic 1.0は、グラフィカルなGUIビルダを文字ベースのIDEに組み込みました。これによって、プログラマはインタフェースのデザインと機能の実装の間をシームレスに行き来することが可能になりました。1995年には、LiebermanがノーマンのGulf of execution and evaluationという概念<ref>
Donald A. Norman, Stephen W. Draper. User Centered System Design; New Perspectives on Human-Computer Interaction
</ref>をプログラミングに適用しました。静的な文字ベースのソースコードから動的なプログラムの振る舞いを理解することの難しさを指摘した<ref name="lieberman1995bridge">
Henry Lieberman, Christopher Fry. Bridging the gulf between code and behavior in programming
</ref>のです。そして、この問題を解決するためにZStepというIDEに組み込まれたビジュアルなデバッガを提案しました。これは、プログラムのソースコード中の表現とその出力の間の関係を、プログラム実行中に可視化するものです。
2000年代に入ると、文字ベースのIDEに対するさまざまな改善手法が提案されました。そのような研究事例の中でも著名なのがNatural Programmingプロジェクト<ref>
Brad A. Myers, John F. Pane, Andy Ko. Natural programming languages and environments
</ref>でしょう。これはMyersらが1998年に始めた取り組みです。彼らのそれ以前の研究は、プログラミング初心者がプログラミング言語の使い勝手に関してどのような問題を抱えているかを分析したもの<ref name="pane1996usability">
John F. Pane, Brad A. Myers. Usability issues in the design of novice programming systems
</ref>であったのに対し、Natural ProgrammingプロジェクトはIDEとそれに付随するライブラリにより注目したものでした。彼らの研究は人間中心のアプローチで進められています。すなわち、まずプログラマの振る舞いを調査して、それに対する改善策を提案するのです。例えば、エンドユーザ向けプログラミングシステムを習得する際の6つの課題<ref name="ko2004six">
Andrew J. Ko, Brad A. Myers, Htet Htet Aung. Six Learning Barriers in End-User Programming Systems
</ref>が調査されました。この研究では、Liebermanの提案したGulf of execution and evaluationのアイデア<ref name="lieberman1995bridge" />が拡張されています。そして、その後続研究として実際の技術的改善案がいくつも提案されました。
これまでに述べたようなIDEの改善案を研究できるようになったことには3点の理由が挙げられます。