統合開発環境(IDE)とは何ですか?

この記事はより大きいシリーズの一部です – すべてをプログラムする方法:コアルールブック  (親シリーズ

序文

ソフトウェア開発のプロセスは、最終製品を構築するための多くのステップと足場を必要とします。 多くの場合、プロセスの複雑さはプロジェクトのサイズに依存します。 たとえば、1つのファイルCプログラムはかなり簡単で、プログラムを書いてからコンパイラで実行すると、完了です。 しかし、プログラムが5つのファイル、つまり50のファイルを使用するとどうなりますか? コマンドプロンプトで手でコンパイラを使って50を実行して、リンカで同じことをしますか? この問題を克服するために、プログラマーは、コンピュータプログラムのビルドプロセスを自動化するためのさまざまな方法とプログラムを考え出しました。 もちろん、これらのすべてのツールは、使用しているプログラミング言語と、あなたが満たすことを求めている要件に依存しています。

しかし、最終的なプログラムファイルを作成する以外に、ソフトウェア開発には他の側面もあります。 デバッガでソフトウェアをテストする方法や、大規模なプロジェクトでは、ビルドプロセスでの単体テストという方法があります。 これらは、メインコードベースとやりとりし、テストを実行して期待どおりの動作をしているかどうか、またバグが突然コードに入り込まないようにするために作られたプログラムです。

それでもなお、バージョン管理はどうですか? これはソフトウェアとツールのスイートで、時間の経過と共にすべての変更をプロジェクト内のすべてのファイルに自動的に記録することができます。そのようにすれば、必要に応じて、 必要ならば作った。 理論的には複数のプログラマがプロジェクトで同時に作業し、すべての変更を中央リポジトリにマージすることができるので便利です。 バージョン管理により、プロジェクトの記録/バックアップが可能になり、多くの点で削除や混乱を避けることができます。

グラフィカルユーザーインターフェイス(GUI)を使用するプログラムを開発している場合はどうなりますか? あなたはプログラム内のすべての要素とすべてを手で指定することができます。ハードコーディング(コード自体の中に情報が慎重に置かれているところ)をプログラムに書いたり、ある種の書式設定ファイルを自分で書くことができます。 しかし、あなたのユーザーインターフェイスを構築し、それをあなたのコードに「接着」するのに使用できるツールがあればいいとは思いませんか? そのためのプログラムが必要です。

ベアボーンツールを使用して、vi(テキストエディタ)、GCC(Cコンパイラ)、make(build(ビルド))などのさまざまなコマンドラインツールをマスターすることが、ソフトウェアプロジェクトの開発にさまざまな方法で取り組むことができます。 プロセスツール)。 これには何も問題はありません。多くのプログラマーは、このような裸の骨のツールをうまく使っていますが、私にとっては、あまり知られていないシェルコマンド、プログラムの入力、ポイントアンドクリックによるテキスト編集機能が得られないことを覚えています。 下を参照)は、私がコードを生成することができる時間に多くを食べる。

これは、統合開発環境(IDEとしても知られている)が救助のために来る場所です。 IDEは、一般的にGUI形式のツールを提供する一貫性のあるユーザーインターフェイスを備えた単一のプログラムまたは一連のプログラムであり、ソフトウェア開発の個別のコンポーネントを多く一緒に結び付けています。 IDEは、通常、プログラムの作成、変更、コンパイルのための最小限のツールを提供し、実行中のプログラムを理解するために、最終的なプログラムをアプリケーションにパッケージ化するメカニズムと、リアルタイムデバッガを含みます。しかし、多くのIDEはそれを超え、高度なテキスト編集機能を提供しています(IDEがコードを分析し、入力中に入力したものに関する関連情報を表示します)、ユーザーを楽にするバージョン管理インターフェイスそのようなシステムでの経験、オブジェクト指向プログラミング(OOP)のためのクラス図とオブジェクト図(クラスとオブジェクトはプログラミングクラッシュコース第2部で扱われます)などの抽象的なコードビューア。多くのIDEには、グラフィカルユーザーインターフェイスを視覚的にレイアウトしてコードに結びつける機能(軽度のビジュアルプログラミング)などがあります。

IDEの目的:生産性

IDEの背後にあるアイデアは、モジュール化された開発ユーティリティを別々に動作させるために必要な設定を処理できるということです。そのため、これらのモジュールの機能を1つの巨大な結束プログラムとして提示します。アイデアは多くの場合、IDEのインターフェイスとメソッドは、同じことを達成するために自分で行う必要があるすべての面倒な足場よりも、学習し理解する方が簡単だということです。

しかし、いったんプロセスとツールが処理されると、それがIDEが本当に輝きを発揮してさらに進化することができます。プラグインによっていくつかのテキストエディタに到達することができる1つの領域ですが、基本的に任意のIDEに対して自動的に与えられるのは構文の強調表示です。これは、与えられたプログラミング言語のさまざまなキーワードと構造が、実際には異なる色で書き出され、読みやすく、見つけやすい場所です。すべてのコードが1つの色である場合、それはテキストの壁のようなものであり、あなたの目はそれを非常にうまく解析する方法を必ずしも知っていません。しかし、キーワードが青で強調表示されているときは、コマンドなどが目立つので、コマンドの場所とそのテキストの枠内にあるものに集中することができます。

IDEとほとんどすべてのIDEがこれを実行して、コードをインポートするときにすべてのコードを解析し、コンパイルする前にエラーをチェックし、コンパイルする前にエラーをチェックし、タイピング。これはコードヒントとして知られています。たとえば、別のファイルに関数を定義し、IDEがそのファイルを解析してその関数の呼び出しをタイプすると、IDEは関数定義とそれに付随するコメントをプルアップできます私はそれをどのように構築し、他のファイルを再オープンする必要なしにどのような議論ができるかを見ることができます。

一部のIDEには、リファクタリングツールと呼ばれるものもあります。これらのツールは、コードの一部の名前を変更したり、他のコード変換を行い、その情報を同じファイル内の他の場所やコードの他の場所に反映させるツールです。リファクタリングとは、プログラムやコードライブラリを改造して、より良い操作をするか、時には別の目的に合うようにすることです。

CやPythonなどの特定のプログラミング言語専用のIDEには、グラフィカルなデバッガが組み込まれています。これについては別の記事で説明します。これらのデバッガを使用すると、基本的にコードや変数の状況を段階的に確認できるため、バグ、特にどこで発生しているのかわからないバグを追跡できます。私はしばしば、コードが一般的に段階的にどこに行くのかを見るために、デバッガを使ってプログラムを実行することが、一連のコードの構築を理解するのに役立つことがわかっています。私はこれを行うことによって、図書館の多くの側面を学びました。

IDEはどのように進化しましたか?

初期のプログラムでは、フローチャートやその他のデザインを使ってプログラムを書いた後、部屋の大きさのマシンに切り替えたり、カードにパンチしてマシンに入力したりして、コンパイルのステップを実行することがありましたステップは手作業で行わなければならなかった。コンピュータが最終的に何らかの種類のディスプレイデバイスに接続されたとき、キーボードのような汎用入力ツールが付属していて、基本的にコンピュータがユーザーインターフェイスを持つことができるのは、IDEが生まれたときです。

最初のIDEは「端末」または「コンソール」画面で可能だったものを使用していました。その画面は主にテキストです。メニューや複数の「ウィンドウ」やファイルを同時に開くだけで、コンソールプログラムでかなり素晴らしいことをすることができます。重要なのは、これらの最初のIDEがファイルの編集、管理、コンパイル、デバッグ、そして最終的に一貫したプログラムフローまたはブロックでの実行を統合したことです。 Emacsとして知られている一般的なIDEは、この種の環境で繁栄しましたが、作者自身は一度も使用していませんでした。

Windowsのようなオペレーティングシステム、X Windowing Environment、MacintoshのためのSystem 7+など、グラフィカルユーザーインターフェイスが登場した後、IDEは実際にはより多くの生産性向上のパワーを得ることができました。 1つまたは複数のウィンドウでは、プロジェクトのファイル、コンパイラオプション、カラーテキストエディタのコードファイル、出力ウィンドウなどを管理できます。私の最初のIDEは私のMacintosh IIsiのQuickBASICだったことを覚えています。私は多くの時間を費やし、長いこと多くの時間を試して、そのことについてゲームをプログラムしようと努力しています。

プログラマが拡張機能をビルドしてIDEにプラグインして、さまざまな特殊な方法で動作させることができる、プラグインタイプのアーキテクチャでIDEを構築することが一般的になりました。 Eclipseはこの種のアーキテクチャで非常によく知られていましたが、まさしく最初のものではありませんでした。 しかし、最近普及してきた多くのIDEが普及してきました。

IDEは、時間の経過とともにかなり標準的なコンポーネントの概要に進化し、Cloud9などのサービスの登場によりWeb上に移行しています。 一部のIDEは現在、SaaS(Software-as-a-Service)パッケージとしてリリースされており、クラウド上で実行されています。

IDEを使用するメリット

すべてのIDEは異なっており、一部のIDEは他のIDEとは異なる機能を備えています。いくつかのIDEは、マイクロコントローラのプログラミングのような特定のニッチに向けられています。たとえばKeil IDEやTexas Instrumentsマイクロコントローラ用のCodeComposerには、これらのデバイスとのインターフェイス機能があります。そのため、完成したマシンコードをデバイスにダウンロードしたり、デバイスにダウンロードしたり、タイプの器具が必要です。 TI-RTOSマイクロコントローラをプログラミングする場合は、これらのIDEの1つを選択することをお勧めします。

一部のIDEは、特定の言語、つまりPHPやPythonなどの言語に固有のものであり、CまたはC ++で記述されたプログラムに必要なビルドユーティリティはありません。しかし、これらの言語にはパッケージマネージャーが付いてくるかもしれません。CやC ++には必ずしも必要なものはありません。いくつかのIDEは、macOSアプリケーションを構築するためのアップルのXCode(それ以上のことはできるが)やiOSアプリケーションなど、特定の実行時環境を考慮して構築されているものがある。ですから、もしあなたがmacOSアプリケーションを構築していたら、おそらくXCodeを例にしてほしいでしょう。

ここでのポイントは、シンプルなテキストエディタ(構文の強調表示なし)、コンパイラ、およびビルドプロセスオートメーションツールを使用するだけでこれまでのところ達成できます。これらのIDEが既にあなたのために作った設定のいくつかを複製すると、あまりにもわかりにくく、理解しにくいコードが混乱することがよくあります。少なくとも私の経験でした。 Pythonパッケージ、ノードWebkitプログラム、マイクロコントローラ上のCプログラム、またはmacOSアプリケーションなど、IDEがどのように働いて自分が望むものを生み出すことができるかを学ぶのは簡単です。

IDEを使用する最大の利点は生産性です。たとえばCloud9では、ファイルへのアクセス、シンタックスハイライトされたコードヒントテキストエディタ、マシンへのアクセスのための最下部にあるシェルコンソール、および入力したコードエクスプローラを使用できます。いくつかの例ではデバッガがありますが、これはすべてホストされており、Webブラウザを介して提供されています。つまり、ブラウザを備えた任意の場所から任意のデバイスから取得できます。それはかなり生産的です!

私がIDEで見つけたもう一つの利点は、Git(バージョン管理プログラム)へのインタフェースや、Gitへのインタフェースなど、プレーンテキストエディタでは必ずしも得られないプラグインや拡張を得ることができることです。あなたが作業している潜在的なデータを簡単に見ることができます。 Cloud9では、2人のプログラマーが同じ画面で同時に作業できるようにすることさえできます。 Webプロジェクトでは、プロジェクトをテストサーバー上でミラーリングし、運用サーバーに展開できるようにするSFTPプラグインを入手できます。これらは単純なテキストエディタの範囲を超えています。

IDEの通常のレイアウト

このセクションでは、最近使用した2つのIDE、Komodo 10(私はphpclasses.orgから賞を受賞)とCloud9を使用します。 彼らは同様のレイアウトを持っていることに気付くでしょう。実際、Eclipseや他のIDEでもかなり標準的なレイアウトがあります(あなたが混乱するまで)。

Cloud9統合開発環境

私の仕事は、私のファイルです。多くのIDEでは、これらは実際のファイルであり、場合によってはプロジェクトを構成するコードコンポーネントです。あなたがここで見ることができるように、私はMap.phpをエディタで開いています(これはasherwunk / phabstracticの一部です。ここでマップについての詳細を読むことができます)。エディタの画面の真ん中に、コード(主にドキュメンテーションのコメントです)。このウィンドウの下に、私がツールウィンドウと呼ぶものがあります。ここには、ホストマシン上のシェルターミナル(すべてのUbuntuです)にアクセスできます。私はまた、即座のJavaScriptコンソールと、右のタブにあるApache PHPのものにアクセスできます。右端には、IDEがこのファイル(map.php)を解析して、入力したコードの概要を示していることがわかります。これらは、私のマップが持つすべてのメソッド(関数)の名前です私がそれらのどれかをクリックすると、ファイル内のその定義に直接ジャンプします。これは多くのように見えないかもしれませんが、それは一箇所で非常に強力なセットアップです。私のPHPやPythonプロジェクトでは、コンソールを使用して開発依存関係をインストールし(Composerやその他の方法で)、gitバージョンの制御コマンドを実行しています(既にCloud9で設定済み)。私は左から複数のファイルを開くことができ、それらは異なるタブの下にあり、タブを互いに並べて並べて見ることができます。

Komodo IDE 10

あらゆる種類の開発用の商用IDEであるKomodoでは、多くの鐘や笛が出ます。左側の広告私はユニットテスト、インタラクティブシェル、コードプロファイラ(コードの実行速度をテストする)、HTTPインスペクタなど、多くのことのためのボタンを用意しています。少し右に、私のファイルマネージャーとプロジェクトマネージャーが表示されます。ファイルマネージャーには、指定されたプロジェクトのすべてのファイルが含まれています。プロジェクトマネージャーは、プロジェクトごとに異なる設定でKomodoを設定します。たとえば、chrahkiwriterはJavaScript / HTMLプロジェクトでしたが、gameofgodsは実際にJavaScript / Python Hybrid PYGJSです。中心には構文の強調表示などの古いテキスト編集ウィンドウがあります。別のファイルを開いた場合、別のタブが表示されます。コンソールの下には、バージョン管理ツール、構文チェック、コンソール、ユニットテスト、複数のファイルの検索と置き換えがあります。右側には、コードインスペクターやアウトライナーなど、もっと多くのものがあるかもしれませんが、今は閉じています。右側には、私が作業しているすべてのファイルの小型化されたバージョンが表示されます。それは私がコードのどこにいるのかを追跡するのに役立ちます。

他の種類のIDE

いくつかのIDEは、ビジュアルプログラミングとして知られているもののために特別に作られています。例えば、プログラミング言語スクラッチなどです。 Lego MindStormsには、よりシンプルなマイクロコントローラブロックをプログラミングするためのビジュアルプログラミング実装もあります。または、Unifed Modeling Language(UML)などのモデリング言語を使用してプログラミングシステムの構造をレイアウトすることができるいくつかのIDE用のツールがあります。このとき、ダイアグラムは解釈され、仕様に一致するようにコードが生成されます。いくつかのIDEは、ソフトウェア開発のソフトウェアエンジニアリング段階を支援するような方法で支援します。

IDEのもう一つの種類はゲーム統合開発環境(GIDE)です。これはまた、何らかの種類のランタイム「ゲーム」エンジンをカプセル化し、システムに入れられるすべての情報が実行されるプログラムです。 Unityは、この種のIDEの非常に一般的なバージョンです。 MonoDevelopを使用してC#でゲームをプログラムし、システムのオブジェクトにアタッチします。演奏を押すとUnityエディタ内でゲームシミュレーションが実行され、結果が表示されます。この意味では、IDEでのコンパイルだけでなく、ランタイムテストも行われます。展開は共有プロセスの最終段階になります。

結論

IDEを変更したり取得したりして、膨大な数の鐘や笛を出すことは個人的には巨大ではありませんが、コードをデバッグ、テスト、コンパイル、および記述するための中心的なプログラムと場所を持つだけで、その基本的なコード検査ツール、エラーチェック、構文ハイライト、ファイルトラッキング、バージョンコントロールを追加すると、いつでも使用できるツールが得られます。

しかし、面白いことに、プログラムの学習を始めるときに、バットからすぐにIDEを使用することをお勧めするかどうかは分かりません。クリーンなプログラム、簡単な実行、そして実際にコンパイルプロセスに手を置くことに重点を置くことは、学習体験になるかもしれませんが、私はほとんどあなたを保証することができます。あなたは15以上のファイルを持つプログラミングプロジェクトを開始したり取得したりすることができます。ユニットテスト、数万行のコードを使った特殊なビルドプロセスがあれば、コードヒントや組み込みのバージョン管理には間違いありません。私は、さまざまなIDE用のプラグインが数多くあることを知っていますが、これはプログラミングが簡単にできることを知らないことです。

この記事はより大きいシリーズの一部です – すべてをプログラムする方法:コアルールブック  (親シリーズ

この記事を読んでいただければ、パトリオンのサポートを検討することもできます。

しかし、毎月の約束が少しでもあれば、私はそれを得る、あなたは私にコーヒーを買うことを考えるかもしれない。

photo credit: Metal Sheets Limited 138 – Copper Worktop with Integrated Sink via photopin (license)

Liked it? Take a second to support kadar on Patreon!

あわせて読みたい

コメントを残す

%d人のブロガーが「いいね」をつけました。