統合開発環境

From IDE Collections
Revision as of 02:00, 9 August 2014 by Jun Kato (talk | contribs) (Created page with "=== 2000年代: より自然なプログラミングの実現に向けて ===")
Jump to navigationJump to search
Other languages:
English • ‎日本語

統合開発環境(IDE)は、プログラマがプログラムを書いたり、実行したり、デバッグするためのインタラクティブなユーザインタフェースを備えた環境を指します。IDEには、プログラミングに利用するプログラミング言語、コンパイラ、デバッガ、ツールキットやその他のツールが含まれます。一般的なツールがプログラミング活動の一部だけを支援するものであるのに対し、環境は全体を支援するものです。

このページはIDEが進化してきた歴史を時系列に説明しています。IDEの研究に関する国際会議の一覧Category:Academic conferencesを見てください。個別具体的な説明があるIDEの一覧Category:Integrated development environmentsを見てください。

統合開発環境の歴史

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 Environments<ref> David R. Barstow, Howard E. Shrobe, Erik Sandewall,

Stephen W. Smoliar. Interactive programming environments

Vol. 9, ACM, New York, NY, USA, July 1984. [URL] [BibTeX]

</ref>という本によくまとまっています。例えば、デバッガや解析ツール、構造化エディタなどがIDEに組み込まれました。よりインタラクティブな開発環境は、生産性を向上させるために非常に重要な要素と考えられており、研究開発が積極的に行われました。例えば、Interlispというデバッガと解析ツールを備えたIDEは1967年から1970年代を通してXerox PARCで継続的に開発されました。また、Cornell Program SynthesizerMENTORは、それぞれPL/IとPascalというプログラミング言語の構造化エディタを含むIDEで、同時期に開発されました。

1980年代: エンドユーザの登場

1980年代は、プログラミングにおけるヒューマンファクターがにわかに注目を集めた時代です。これは、IBMがパーソナルコンピュータを1981年に発売したのを皮切りに、プログラミングの初学者や、プログラミングの知識を持たないエンドユーザの数が劇的に増えたことが要因と考えられます。ヒューマンファクターに興味を持った研究者はエンドユーザプログラミングやGraphical User Interface (GUI)の研究に注力し、プログラミングの前提知識が不要でも使えるコンピュータの実現を目指しました。Human-Computer Interaction分野の主要な国際会議はこの時代に生まれました。なお、プログラミングに関する主要な国際会議も同様に1980年代生まれです。ソフトウェア工学やプログラミング言語のデザインに関する研究も、同時期に目覚ましい進展があったわけです。ただし、文字ベースの開発環境を改善する研究は、プログラミング言語の設計に関する研究と比べると目立ちません。プログラミング言語の設計指針はホーアの論文<ref>

C. A. R. Hoare. Hints on Programming Language Design

Programming Languages, pp.31-40, 1983. [URL] [BibTeX]

</ref>のように多数見られますが、IDEの研究はわずかです<ref name="pane1996usability" /><ref name="ko2004six" />。

エンドユーザは通常、プログラムを与えられた状態のまま使用します。したがって、エンドユーザは自分の意図をプログラムのコマンド列に置き換えて考え、しばしばコマンドを何回も繰り返す必要に迫られます。そのような面倒を避けるために、プログラムを作ったり、編集したり、拡張したいという欲求が生まれます。エンドユーザプログラミングは、そのような欲求を持ったエンドユーザやプログラミング初心者が直面するさまざまな課題に応える研究分野です。その方針は、大まかに2つに分けられます。ひとつはプログラミングを簡単にすることで、もうひとつは、いわゆるプログラミングそのものをなくしてしまうことです。例えば、構造化エディタやVisual Programmingに関する研究はひとつめ、Programming by Exampleに関する研究はふたつめの方針に沿った研究といえます。それぞれに関する詳細な説明はCategory:Visual programmingCategory:Programming by exampleに載せてあります。これらの用語の使い分けについては、Myerらのサーベイ論文<ref> Brad A. Myers. Visual programming, programming by example, and program visualization:

a taxonomy

Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pp.59-66, New York, NY, USA, 1986. [URL] [BibTeX]

</ref>を読むと詳しく書いてあります。

Visual Programming言語はたいてい何らかのグラフィカルな開発環境を伴うものですが、文字ベースのプログラミング言語用の統合開発環境はBASIC以来似たような見た目のままです。そのような開発環境は、ファイルマネージャ、文字ベースのソースコードエディタ、そして文字ベースのデバッガなどから構成されます(例: Eclipse)。グラフィカルな表現はあまり使われません。既存の文字ベースの統合開発環境が持たない機能を提供するために、さまざまなプログラマ向けのツールが開発されてきました。とくに長い歴史を持つツール研究の例として、ユーザインタフェース用ツールキット

<ref>

Brad A. Myers, Scott E. Hudson, Randy Pausch. Past, present, and future of user interface software tools

ACM Transactions on Computer-Human Interaction (TOCHI), 7(1):3-28, New York, NY, USA, March 2000. [URL] [BibTeX]

</ref>が挙げられます。しかし、統合開発環境そのものは劇的な変化を遂げることはなかったのです。文字ベースの統合開発環境は、職業プログラマの大部分にとってプログラム開発の主要な手段であり続けました。

1990年代: アプリケーション開発の複雑さが増加した時代

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

L. Erlbaum Associates Inc., Hillsdale, NJ, USA, 1986. [URL] [BibTeX]

</ref>をプログラミングに適用しました。静的な文字ベースのソースコードから動的なプログラムの振る舞いを理解することの難しさを指摘した<ref name="lieberman1995bridge">

Henry Lieberman, Christopher Fry. Bridging the gulf between code and behavior in programming

Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pp.480-486, New York, NY, USA, 1995. [URL] [BibTeX]

</ref>のです。そして、この問題を解決するためにZStepという統合開発環境に組み込まれたビジュアルなデバッガを提案しました。これは、プログラムのソースコード中の表現とその出力の間の関係を、プログラム実行中に可視化するものです。

2000年代: より自然なプログラミングの実現に向けて

In the 2000s, many enhancements to text-based IDEs appeared. One of the most prominent projects in the enhancement of text-based IDEs is the Natural Programming project<ref>

Brad A. Myers, John F. Pane, Andy Ko. Natural programming languages and environments

Communications of the ACM, 47(9):47-52, New York, NY, USA, September 2004. [URL] [BibTeX]

</ref>, which was initiated by Myers and colleagues in 1998. Their previous work highlighted usability issues for novice programmers in programming language design<ref name="pane1996usability">

John F. Pane, Brad A. Myers. Usability issues in the design of novice programming systems

1996. [BibTeX]

</ref>, and the Natural Programming project places more emphasis on the IDE and accompanying libraries. Their work takes a human-centered approach: they first investigate the programmer's behavior and then address the difficulties. For instance, they studied six learning barriers in end-user programming systems<ref name="ko2004six">

Andrew J. Ko, Brad A. Myers, Htet Htet Aung. Six Learning Barriers in End-User Programming Systems

Proceedings of the 2004 IEEE Symposium on Visual Languages and Human-Centric Computing, pp.199-206, 2004. [BibTeX]

</ref> and discussed the gulf of execution and evaluation, which develops some of Lieberman's ideas<ref name="lieberman1995bridge" />. Various technical contributions were made following the study.

Three factors made the proliferation of such ideas feasible.

  1. The Internet has enabled new ways of collaboration between programmers, and given rise to the remarkable growth in open-source technologies. This work includes collecting, analyzing and utilizing anonymized usage data of IDEs to identify areas for improvements and provide targeted support for cooperative work through the Internet.
  2. The variety of programs has continued to evolve, and has done so at an ever-increasing rate, with growing emphasis on physical interaction, including interactive camera applications and robotics applications. The development of such programs requires tool support, and enhancements to IDEs.
  3. Several technological shifts have made IDEs more extensible, including extension frameworks, open-source distribution of IDEs, and instrumentation features of programming languages, such as application programming interface for reflection. They allowed the programmer to concentrate on the improvements and leave the rest as provided by the existing IDEs.

参考文献

<references group=""></references>