開発ツール > 言語/開発ツール編
言語といっても、ここでは主に開発ツールをさします。プラットフォームが複雑化した現在では、言語仕様だけでなく、RADなどの開発環境が重要になってきています。
Visual Basic
最もメジャーなWindows開発ツール。仕事ではVB指名の場合も多いですし、実際にほとんどの仕事がこれひとつで片付くと思います。
簡単なことは簡単に実現できる反面、VBが想定していない込み入ったことをしようとすると、非常に遠回りなことをするハメになったり、すぐ不安定なプログラムになります。また、設計を重視しなくても作り込める仕組みになっているため、プロトタイプ開発には威力を発揮しますが、そのまま本番開発に進んでしまうと、行き当たりばったりでは玉砕します。VBを使いこなすには、設計を重視することと、VBの特性を知り、VBが想定する範囲での開発を行うことです。逆にいうと、VBで作れないようなアプリケーションはそもそもWindows向けではない可能性が高いので、VBでやるにはややこしいと思ったら仕様を変えていくことが重要でしょう。
しかし、実行環境によるトラブルが多いため、私としては実行環境が特定できない場合はVBよりもDelphiを推薦したいと思っています。現在のWindowsアプリケーション開発のメインツールであるVBですが、実際にはバージョン間の互換性もいまいちですし、Microsoft製品の組み合わせでもトラブルが出ることを考えると、冷静に考えて「OSを作っているMSの言語製品だから」というのはメリットになっていないことがわかります。また、Microsoftの戦略に振り回されがちで、余計な苦労をすることが意外と多いです。
メリット
- 参考書が豊富。
- 技術者が多いので大きなプロジェクトで人を集めやすい。
- 市販のコンポーネントが豊富。
- エディタの補完機能が便利。
- 言語がシンプルで習得しやすい。
デメリット
- 異なるバージョンの開発環境を共存できない。
- アプリケーションの実行に巨大なランタイムのインストールが必要。
- COMに強く依存しており、そのためか動作もやや遅い。
- OfficeやIEなど、OSを書き換えてしまう系のMSのソフトの影響を受け、環境の違いによるトラブルが多い。
- コンポーネント部品はActiveXなのでレジストリに登録しなければ使えない。
- バージョンが上がると使えなくなるコンポーネントがあったり、バージョン間の互換性がいまいち。
- オブジェクト指向への対応が不充分。たとえば継承ができないので、コンポーネントを作るのに障害になっている。
- とっつきやすい反面、行き当たりばったりの開発で玉砕しやすい。
向く用途
- 専用マシンを使う業務アプリケーション(環境を固定し、余計なソフトをインストールしない)の開発。
- 市販のプロジェクト支援ツールも充実しているので、大規模な業務システムのプロジェクトの開発。(ただしモジュール設計を慎重に行うこと)
向かない用途
- 多くの人に配布する、パッケージソフトやオンラインソフトの開発。
- 低レベル処理を多く含む開発。不可能ではない処理であってもVBでは複雑なことはしないほうがいい。
Visual C++
低レベル系の開発ツールです。ある意味で、Windowsの標準開発ツールと言えるものです。用途が広いので、MFCを使わなくても、持っていたほうが良いソフトと言えます。特にVBをメインに使っている人は必携です。そして最新のSDKがすぐに使えるのは強いです。
ただしこれですべて作るのは、生産性が悪いので、VBなどのRADの補助ツールとして、DLLの開発用などに使うのが良いと思います。うまく使えばVBの欠点を補ってくれます。
メリット
- 参考書が豊富。
- ○○○SDKの類がすぐ使える、標準開発ツール。超最新の技術が使える。
- 普通のCコンパイラとしても使える。
- パフォーマンスは、ほぼ最高。
デメリット
- 異なるバージョンの開発環境を共存できない。
- とてもとっつきにくく、生産性も悪い。
向く用途
- DLLの開発。
- Windows GUIを使わない、ゲームなどの開発。
- UNIXでも動くコンソールアプリケーションの開発。
- デバイスドライバの開発、TCP/IPサーバの開発など、低レベル処理を要するプログラムの開発。
向かない用途
- 一般的な業務アプリケーションの開発のメインツールとして。
Delphi
C++Builderとともに、オンラインソフトの開発用途ではかなり大きなシェアを持っています。VBの対抗馬と思われていますが、実際にはVBのように用途の限られた開発ツールではなく、DLLやNTサービスプログラムまで開発できる(インラインアセンブラまで使える柔軟性です)汎用の開発ツールです。VB+VCの組み合わせでしかできなかった仕事のほとんどが、Delphiだけでこなせます。
開発環境も、VB以上に使いやすく考えられていますし、パフォーマンスも優れています。「あらゆる面でVBを超えなければ勝てない」という意気込みが感じられます。方向性としても、VBのようにMicrosoftの戦略的な色の強い機能拡張ではなく、ユーザーが欲しがっている機能を載せていくことにより、支持を得ているという感じです。
VBと比べると、1ランク上の品質のソフトが作れるツールだと思います。メジャーだからという理由だけでVBを選ぶのではなく、検討するに値する開発ツールです。VBしか使った事のない人は、是非一度使ってみてください。
メリット
- コードナビゲータ機能をはじめとする開発環境が便利。(でもエディタの補完機能はVBの方が私は好き)
- コードの自動生成と、手書きとがうまく連動する。
- パフォーマンスが優れている。
- コンパイルが非常に高速。
- コンポーネントやライブラリのスタティックリンクが可能で、配布時にランタイムが不要。
- 異なるバージョンの開発環境を共存できる。
- 完全にオブジェクト指向で開発できる。
- フリーソフトの文化が発展しており、フリーのコンポーネントなどが非常に豊富。
- 既存のコンポーネントの継承により、オリジナルのコンポーネントが開発しやすい。
- マルチスレッドアプリケーションが簡単に作れる。
デメリット
- プロの世界ではVBほど技術者がいない。
- Object Pascalという少し特殊な言語。(もっともVBも特殊ですけど)
- 市販の支援ツールは少ない(A Hot Document for Delphiが欲しい)。
向く用途
- 多くの人に配布する、パッケージソフトやオンラインソフトの開発に最適。
- 使える人さえいれば、ほとんどのアプリケーション開発に適する。
向かない用途
C++Builder
C++Builderは、Delphiの開発環境をそのままに、言語エンジンだけをC++にしたものです。従ってDelphiの主だった特徴をすべて継承しています。ここではDelphiとの比較で特徴を挙げます。
ちなみに私はC++Builderはデモ版を触ってみた程度の経験しかありません。
メリット
- Delphiのコンポーネントが使用できる(ただしソースコードが必要)。
- Delphiと同等の環境で、メジャーな言語であるC++が使える。
- C++なので、巷のサンプルコードやヘッダファイルがそのまま利用できる。
デメリット
- VCほど技術者がいない(でもVCより全然簡単です)。
- コンパイル速度はDelphiより遅い。
- DelphiのObject Pscalよりやや煩雑になる部分がある。
向く用途
- C++が大好きで、RADで開発したい場合。
向かない用途
Perl
開発環境というわけではなく、汎用の言語ですが、仕事によっては、これまでに挙げた強力な開発ツールを使うのより、はるかに、というより驚くほど簡単に仕事をこなすことができる言語がPerlです。
Perlが得意なのは、何と言ってもテキスト処理です。汎用言語なので、ネットワーク関係などもサクサクこなせますが、圧倒的に強力なのがテキスト処理です。これは他のほとんどの言語において苦手な処理です。
メリット
- 場合によっては、他の言語で10行以上費やすような複雑な文字列処理が、1行で書けたりする。
- インタプリタではなく、実行直前にコンパイルするタイプの処理系なので、処理速度は高速。
- フリーソフトのコンポーネントが豊富。
- 非常に自由度が高い。
デメリット
- 統合開発環境などは無いので、RADしか使ったことのない人にはとっつきにくいかも。
- コードの見栄えは、あまり美しくない。
- 自由度の高い言語なので、玉砕しやすい。(が、Perlでそんなに大きなプロジェクトを作ることもないでしょう)
向く用途
- テキストファイルの加工や集計、あるいは文字列処理を多用する処理。
- CGIアプリケーションの開発。
向かない用途
- GUIを伴うアプリケーション。(GUIを使いたい場合は、Webを使ってCGIアプリケーションにするのが良い)
Active Server Pages
言語ではありませんが、Perlと言えばCGIですので、ついでに、ASPも挙げておきましょう。
ASPは、言語に依存しません。言語エンジンはASPとは切り離されています。標準ではVBScript、JScriptが使用できますが、オプションでPerlも使用可能です。
ASPでは、ActiveXコンポーネントを使用することができるため、データベースへの接続などがVBなど同じようにできます。非常に強力なWebサーバーアプリケーションのプラットフォームだと思います。
Microsoftでは、ASPを使ったサーバー処理と、DHTML、ActiveXなどを使ったクラアント処理を組み合わせたアプリケーション開発を推し進めていますが、現時点では、可能な限りサーバーだけで処理させるのが得策です。
メリット
- データベース連携が容易。
- サーバー側でActiveXコンポーネントが使用できる。
- インプロセス動作、キャッシングなどにより、CGIと比較して、かなり高速。
- 複数ページ間でセション管理が可能。(でも複雑化しやすいので慎重に使う必要がある)
- IISと合わせて無償で提供されている。
デメリット
- Windowsでしか動かないため、実質的にインターネットでの導入がしにくい。
- ASPで使うコンポーネントのデバッグは面倒。
向く用途
- 社内向けイントラネットシステム。
向かない用途
- インターネット向けシステム。