IDE
https://gyazo.com/41e7a1b6826fdafe4fba7e9056136261
エディタ、コンパイラ、デバッガが一揃いになっていて、プログラム開発に必要なことすべてを行える環境のこと かつてはInteractive Development Environmentの略だったこともある。
1950年代: 手作業によるプログラミングの時代
コンピュータのプログラミング作業は、最初の頃はインタラクティブと言い難いものでした。プログラマはパンチカードを使って機械語を記述し、コンピュータに命令を送っていました。カードにパンチする物理作業には、計算機による支援が入る余地がありませんでした。
1960年代: IDEの登場
世界最初のIDEと言われているのは、Character-based User Interface (CUI)とハイレベルな文字ベースのプログラミング言語が登場したあと、1964年に開発されたDartmouth BASICです。このIDEはテキストエディタを備え、コンパイラを内蔵しており、プログラムをIDEの中でコンパイルして実行できました。当時コンピュータはまだ個人のものではなく、今のスーパーコンピュータがそうであるように、たくさんの人が共有して利用するものでした。Dartmouth BASICは、そのような目的で作られたDartmouth Time Sharing System (DTSS)で動作する開発環境であり、利用者は全員が専門知識を備えたプログラマでした。
1970年代: プロのための、文字ベースのIDE
近代的なIDEには当然備わっているべきと考えられるインタラクティブな機能の多くは1970年代に開発されました。その歴史はInteractive Programming Environments1という本によくまとまっています。例えば、デバッガや解析ツール、構造化エディタなどがIDEに組み込まれました。よりインタラクティブな開発環境は、生産性を向上させるために非常に重要な要素と考えられており、研究開発が積極的に行われました。例えば、Interlispというデバッガと解析ツールを備えたIDEは1967年から1970年代を通してXerox PARCで継続的に開発されました。また、Cornell Program SynthesizerとMENTORは、それぞれPL/IとPascalというプログラミング言語の構造化エディタを含むIDEで、同時期に開発されました。 1980年代: エンドユーザの登場
1980年代は、プログラミングにおけるヒューマンファクターがにわかに注目を集めた時代です。これは、IBMがパーソナルコンピュータを1981年に発売したのを皮切りに、プログラミングの初学者や、プログラミングの知識を持たないエンドユーザの数が劇的に増えたことが要因と考えられます。ヒューマンファクターに興味を持った研究者はエンドユーザプログラミングやGraphical User Interface (GUI)の研究に注力し、プログラミングの前提知識が不要でも使えるコンピュータの実現を目指しました。Human-Computer Interaction分野の主要な国際会議はこの時代に生まれました。なお、プログラミングに関する主要な国際会議も同様に1980年代生まれです。ソフトウェア工学やプログラミング言語のデザインに関する研究も、同時期に目覚ましい進展があったわけです。ただし、文字ベースの開発環境を改善する研究は、プログラミング言語の設計に関する研究と比べると目立ちません。プログラミング言語の設計指針はホーアの論文2のように多数見られますが、IDEの研究はわずかです34。 エンドユーザは通常、プログラムを与えられた状態のまま使用します。したがって、エンドユーザは自分の意図をプログラムのコマンド列に置き換えて考え、しばしばコマンドを何回も繰り返す必要に迫られます。そのような面倒を避けるために、プログラムを作ったり、編集したり、拡張したいという欲求が生まれます。エンドユーザプログラミングは、そのような欲求を持ったエンドユーザやプログラミング初心者が直面するさまざまな課題に応える研究分野です。その方針は、大まかに2つに分けられます。ひとつはプログラミングを簡単にすることで、もうひとつは、いわゆるプログラミングそのものをなくしてしまうことです。例えば、構造化エディタやVisual Programmingに関する研究はひとつめ、Programming by Exampleに関する研究はふたつめの方針に沿った研究といえます。それぞれに関する詳細な説明はCategory:Visual programmingとCategory:Programming by exampleに載せてあります。これらの用語の使い分けについては、Myerらのサーベイ論文5を読むと詳しく書いてあります。 Visual Programming言語はたいてい何らかのグラフィカルな開発環境を伴うものとして開発されたのですが、文字ベースのプログラミング言語用のIDEはBASIC以来似たような見た目のままでした。そのような開発環境は、ファイルマネージャ、文字ベースのソースコードエディタ、そして文字ベースのデバッガなどから構成されます(例: Eclipse)。グラフィカルな表現はあまり使われません。既存の文字ベースのIDEが持たない機能を提供するために、さまざまなプログラマ向けのツールが開発されてきました。とくに長い歴史を持つツール研究の例として、ユーザインタフェース用ツールキット 6が挙げられます。しかし、IDEそのものは劇的な変化を遂げることはなかったのです。文字ベースのIDEは、職業プログラマの大部分にとってプログラム開発の主要な手段であり続けました。 1990年代: アプリケーション開発の複雑さが増加した時代
1990年代はプログラミングがより複雑で面倒なタスクになった時代です。例えば、GUIを文字だけで開発するのは簡単ではありません。そこで、1991年にリリースされたVisual Basic 1.0は、グラフィカルなGUIビルダを文字ベースのIDEに組み込みました。これによって、プログラマはインタフェースのデザインと機能の実装の間をシームレスに行き来することが可能になりました。1995年には、LiebermanがノーマンのGulf of execution and evaluationという概念7をプログラミングに適用しました。静的な文字ベースのソースコードから動的なプログラムの振る舞いを理解することの難しさを指摘した8のです。そして、この問題を解決するためにZStepというIDEに組み込まれたビジュアルなデバッガを提案しました。これは、プログラムのソースコード中の表現とその出力の間の関係を、プログラム実行中に可視化するものです。 2000年代: 自然なプログラミングの実現に向けて
2000年代に入ると、文字ベースのIDEに対するさまざまな改善手法が提案されました。そのような研究事例の中でも著名なのがNatural Programmingプロジェクト9でしょう。これはMyersらが1998年に始めた取り組みです。彼らのそれ以前の研究は、プログラミング初心者がプログラミング言語の使い勝手に関してどのような問題を抱えているかを分析したもの3であったのに対し、Natural ProgrammingプロジェクトはIDEとそれに付随するライブラリにより注目したものでした。彼らの研究は人間中心のアプローチで進められています。すなわち、まずプログラマの振る舞いを調査して、それに対する改善策を提案するのです。例えば、エンドユーザ向けプログラミングシステムを習得する際の6つの課題4が調査されました。この研究では、Liebermanの提案したGulf of execution and evaluationのアイデア8が拡張されています。そして、その後続研究として実際の技術的改善案がいくつも提案されました。 これまでに述べたようなIDEの改善案を研究できるようになったことには3点の理由が挙げられます。
インターネット はプログラマ同士の協業の方法を広げました。また、オープンソースの技術を劇的に増加させました。例えば、IDEの利用履歴を匿名化して収集し、分析して活用することで使い勝手の向上を狙ったり、インターネット越しの共同作業を支援することができるようになりました。
プログラムの種類 はこれまでにない速度で継続的に増えています。とくに、カメラを利用したインタラクティブなアプリケーションやロボットアプリケーションのような、物理的なインタラクションを含むプログラムの活用が増加しています。このようなプログラムを開発する際は、ツールによる支援やIDEの改善が必要になります。
技術の進歩 によってIDEの拡張が容易になりました。拡張用フレームワークが整備され、IDEがオープンソースで配布されるようになり、プログラミング言語の機能が向上してリフレクションAPIのようにプログラムを改変するための機能を容易に追加できるようになりました。このような技術の進歩により、プログラマは、既存のIDEが提供する機能はそのままに、改善点だけに集中できるようになりました。