プログラミングツール

プログラミングツールは、コンピュータなどのプログラミングに使う、ツールと呼ばれるコンピュータ・プログラム類のことである。この記事ではもっぱら、コンピュータ・プログラミング用のツールについて扱う。

 歴史 
プログラマブルなコンピュータの登場と同時に、プログラミングを支援するコンピュータ・プログラムというものも作られ始めた。コンパイラやインタプリタといった、プログラミング言語処理系などもツールに含めることもある（言語処理系以外の、専ら支援するツールのみを指すこともある）。ごく原始的なものの例としては、紙テープやパンチカードなどを2組用意し、それぞれの内容が同じであることを確認することで、入力ミスがないかどうかチェックする、といったようなものがあった（これはごく単純なため、ハードウェアによるものもあった）。

1970年代初期には、UNIXが grep、awk といったツールを多用し、それらをパイプで連結して使ったことでよく知られるようになった。ソフトウェアツールという言葉は、ブライアン・カーニハンらの同名の著書（日本語版は『ソフトウェア作法』）に由来する。しかしこれらは、プログラミングツールというよりは、本来あらゆるデータ処理の対象に使えるものであり、そのためプログラミングにも使える、と言ったほうが正しい（そもそもUNIXの開発された動機のいくつかのうちの一つに、ベル研内の、特許などをはじめとした書類のデータ処理のためだったのである。roffなどがUNIXの標準ツールだったのはそういう由来による）。こういったツールは、単純で軽量なものを組み合せて使う、という所に本領がある。

一方、UNIXとはまた異なる文化として、LISPやSmalltalkの文化があった。特にSmalltalkでは、クラスブラウザによりクラスライブラリを簡単に追いかけることができることや、その場その環境のプログラムを書き換える、といったことができた。そのGUI環境の表面だけは、後にMacintoshが引き継ぐが、そのような自由な環境という精神はむしろ引き継がれなかった。

統合開発環境 (IDE) は、元々は、シングルタスク環境であったパーソナルコンピュータにおいて、1個のアプリケーションで編集・コンパイルのフロントエンド・デバッガ等、各種の作業を行えるようにしたものから始まっている。前述のSmalltalkのような環境を、パーソナルコンピュータでなんとか実現しようとしたもの、と見ることもできる。その後パーソナルコンピュータでも、Windowsや、あるいはUNIXライクOS（Linuxなど）が使えるようになると、例えばEclipseなど、より洗練された（Smalltalkのそれに近い）環境などが現れたが、MS-DOS以来の伝統を残すVisual Studioなどもまだ使われている（しかし近年、Windows以外のバージョンを中心に、その中身はXamarin Studioに置き換わりつつある）。

 分類 
とりあえず適当に例を挙げる。
 性能解析ツール
 デバッグツール
 静的コード解析と形式的検証ツール
 ソフトウェアテストツール
 メモリ使用量測定ツール
 アプリケーション構築ツール
 統合開発環境

 ツール一覧 
ソフトウェアツールには様々な形態がある。
 バグ管理システム: gnats、Bugzilla、Trac、JIRA、LibreSource、SharpForge
 ビルドツール: make、automake、Apache Ant、SCons、Rake、cmake、qmake
 コード網羅率: gcov、EMMA
 コード共有サイト: Freshmeat、Krugle、SourceForge.net、ByteMyCode
 コンパイラ、リンケージエディタ: GNUツールチェーン、gcc、Microsoft Visual Studio、CodeWarrior、Xcode、ICC
 デバッガ: gdb、GNU Binutils、Valgrind
 逆アセンブラ: リバースエンジニアリングツール
 ドキュメンテーションジェネレータ: Doxygen、help2man、POD、Javadoc、Pydoc/Epydoc
 形式手法: 数学に基づく仕様記述・開発・検証の技法
 GUIインタフェースジェネレータ: Qt Designer、Cocoa InterfaceBuilber、Windows Forms Visual Studio
 ライブラリインタフェースジェネレータ: SWIG
 メモリ使用量/リーク/破壊検出: dmalloc、Electric Fence、DUMA、Insure++。
 メモリリーク検出: C言語では、メモリリークの検出は容易ではない。そのためメモリデバッガを使ってメモリリークがないか検証する。
 パーサジェネレータ: Lex、Yacc、Parsec
 性能解析（プロファイラ）
 リファクタリングブラウザ
 バージョン管理システム: Bazaar、BitKeeper、Bonsai、ClearCase、CVS、Git、GNU arch、Mercurial、Monotone、RCS、SCCS、SourceSafe、Subversion、LibreSource Synchronizer
 スクリプト言語: AWK、Perl、Python、REXX、Ruby、シェル、Tcl
 検索: grep、find
 コード重複検出: CCFinderX
 自動プログラミングツール
 静的コード解析: lint、Splint、PMD、Findbugs、AdLint
 テキストエディタ: Emacs、vi、vim
 インスペクタ: プログラム実行中のデータ内容などを表示して確認するツール。
 トレーサ: プログラムの実行経路を表示して確認するツール。

 IDE 
統合開発環境 (IDE) は、多数のツールの機能を組み合わせて1つのパッケージにしたものである。一般に、あるプロジェクト内のファイル群の内容を検索するなどといった単純な作業をより簡単にできる。

IDE は企業レベルのアプリケーションの開発によく使われる。

以下に主なIDEを挙げる。

Delphi
C++ Builder
Microsoft Visual Studio
Xcode
IBM Rational Application Developer
Eclipse
NetBeans
IntelliJ IDEA
WinDev
Code::Blocks

 関連項目 
Computer Aided Software Engineering (CASE)
ソフトウェア開発キット
マスカスタマイゼーション
ソフトウェア工学
計算機科学
スクリプト言語

 参考文献 
 Software Development Tools for Petascale Computing Workshop 2007
 CASE Tools
 CASE tool index
 UML CASE tools
 Agile CASE Tool


*