APIやクラスライブラリを学ぶ

プログラミング
Windows 第5版(上/下)

Charles Petzold 著
ロングテール/長尾 高弘 訳
アスキー 発行
2000年10月
790ページ(上),
739ページ+CD-ROM(下)
5229円(上,税込),
5460円(下,税込)
コアJava2 
Vol.1 基礎編/Vol.2 応用編 改訂版

Cay S. Horstmann,Gary Cornell 著
福龍興業 訳
アスキー 発行
2001年12月(Vol.1),2002年6月(Vol.2)
816ページ+CD-ROM(Vol.1),
1161ページ+CD-ROM(Vol.2)
6090円(Vol.1,税込),
6510円(Vol.2,税込)
C#によるプログラミング
Microsoft Windows
上/下

Charles Petzold 著
豊田 孝 監訳
日経BPソフトプレス
2002年7月
777ページ+CD-ROM(上),
615ページ+CD-ROM(下)
5775円(上,税込),
5460円(下,税込)
プログラミング
Microsoft .NET
ASP.NETによる
サーバーサイド開発

Jeff Prosise 著
豊田 孝 監訳
日経BPソフトプレス 発行
2002年12月
819ページ+CD-ROM
8190円(税込)

 文法的な知識を身に付けたら,次に学ぶべきなのはAPIやクラスライブラリの使い方です。WindowsのネイティブAPI(以下Windows API)にせよ,Javaや .NETのクラスライブラリにせよ,基本的にリファレンスはオンライン・マニュアルの形で無償で提供されるか,もしくは開発ツールに付属しています。ただ,これらのマニュアルは膨大なうえ,あくまである程度の知識を持つ人が読むことを前提に関数/メソッドの引数の意味や動作を記した「リファレンス」に過ぎません。いきなり読もうとしても,どこから読んでいいかすらわからないでしょう。したがって,最初は何らかの書籍で基本的な知識を身に付ける必要があります。まずは書籍を読んで,基本的なAPI/メソッドの使い方,プログラミング・モデル,コールバック関数,イベント・モデルといった個々のAPI/メソッドに依存しない概念を習得するのです。そうすれば,あとは必要に応じてリファレンスを引きながら開発を進めることができるようになります。

 C/C++を使ってWindowsアプリケーションを作成する場合,Win-dows APIを直接呼び出すか,もしくはVisual C++などに付属するクラスライブラリMFC(Microsoft Foundation Classes)を利用しなければなりません。Cの標準ライブラリの入出力機能はコンソール(コマンドプロンプト)を対象にしたものなので,ウィンドウを表示するなどの機能を一切持たないからです。

 まず,Windows APIを直接呼び出す形式のアプリケーションを作成するなら,バイブルとも言えるのがCharles Petzoldの「プログラミングWindows第5版」です。Windowsアプリケーションの開発に10年以上携わっている人なら,「Petzoldを知らないWindowsプログラマはモグリだ」とまで言われていたのを覚えていらっしゃるでしょう。原書の第5版が出版されたときに米Microsoftがわざわざプレスリリースを出したことからも,本書がいかに有名かがうかがえます。

 本書の前半部分では,コマンドライン・プログラムの開発経験しかない人には理解しづらいメッセージ駆動やコールバックによるプログラミング・モデルを,わかりやすく解説しています。続いて,デバイス・コンテキストなどのGDIの基本的な概念とWindowsへの描画方法,コントロールやダイアログの使い方などの説明に進みます。内容の多くはGUIの作成に関するものですが,マルチスレッド,DLL,インターネット・プログラミングなどにも一応触れています。

 本書はC言語の文法は既知としており,Visual C++などの統合開発環境の使い方についてほとんど触れていません。にもかかわらずページ数は上下巻合わせて1500ページ以上もあります。全部読まないとWindowsプログラムが組めないというわけではありませんが,少なくとも半分以上は目を通す必要があるでしょう。これでもWindowsが公開するAPIのごく一部しか取り上げていないのです。K&Rが300ページちょっとしかなかったことを考えると,いかに覚えるべきことが多いかがわかると思います。文法の学習ばかりに時間をとられていてはいけないことをご理解いただけたでしょうか。

 ちなみに,MFCを利用してアプリケーションを作成するなら,George Shepherd著「プログラミングMicrosoft Visual C++ .NET Vol.1/2」(日経BPソフトプレス発行)を読んでみてください。本書は「Inside Visual C++」として有名だった本の後継にあたるものでMFC以外にもVisual C++の様々なテクニックを取り上げています。Visual C++ .NETに対応した数少ない良書の一つです。

 一方Javaの場合,ファイル入出力やスレッドといったJDKが用意する基本的なクラスの使い方については文法書にもある程度書いてあるのが普通です。ただ,それでは少し知識が不足気味と感じるなら,「コアJava2 Vol.1/2」を読んでみるといいでしょう。本書はJavaの文法とAPIの両方を一度にマスターすることを目的とした本で,Vol.1の基礎編では文法を押さえた後で,Swingの基本的な使い方,イベント処理,ファイル入出力を扱います。Vol.2では,スレッド,コレクション,ネットワーク,JDBC,Swing/AWTの高度な機能,JavaBeansの作成などを取り上げています。文法の部分を除いても両方合わせて1500ページ程度ある計算になりますが,Vol.2の途中まで読めば,基本的な知識は十分身に付くはずです。Webアプリケーションの開発が目的なら,あとはPart2で紹介するサーバーサイドJavaの解説書を読めばいいでしょう。

.NET開発者のための良書

 .NET Frameworkのクラスライブラリについては,Petzoldの「C#によるプログラミングMicrosoft Windows」をお薦めします。本書のスタイルは,先に挙げた「プログラミングWindows」とほぼ同じです。一応最初の1章をC#の文法の解説にあてているものの,基本的に文法は理解していることを前提にしています。統合開発環境の使い方についてもほとんど説明がありません。1000ページ以上にわたってメニュー,ダイアログボックス,コントロールの使い方など .NET Frameworkが用意するGUI周りのクラスを使ってWindowsアプリケーションを作成する方法をひたすら解説していきます。

 統合開発環境の使い方の説明に多くのページを費やしている多くの入門書と違い,各クラスの説明は非常に詳細です。ソースコードと解説の一部をVB .NET用に変更した「Microsoft Visual Basic .NETによるプログラミングMicrosoft Windows」(日経BPソフトプレス発行)もあるので,VB .NETユーザーはこちらを読んでみてください。

 「C#によるプログラミングMicrosoft Windows」は .NETのサーバーサイド技術であるADO .NETについてまったく触れていないので,もう1冊「プログラミング Microsoft .NET」も挙げておきましょう。本書は,Webフォーム,Webコントロール,カスタム・コントロールの作成,Webサービス,セキュリティなど,ASP .NETの機能を包括的に取り上げた解説書です。ASP .NET以外にも,データベース・アクセスを扱うADO .NETやXML関連機能など,Webアプリケーションの開発に必要な機能は一通り解説しています。

 冒頭には .NET Frameworkについての基礎知識やWindowsフォームについての説明もあるので,サーバーサイド開発が目的なら「C#によるプログラミングMicrosoft Windows」の代わりにこちらを読むのがいいかもしれません。