雑誌にせよWebにせよ,最近のWindowsプログラミングの記事のほとんどは .NET向けだ。マイクロソフトも,これまでネイティブ・コードでの開発が主流だったC/C++開発まで, .NETへの移行を促そうとしている。
ではネイティブ・アプリケーション開発用のプログラミング・インタフェースであるWin32 API(Application Programming Interface)の知識は不要になるのかというと,決してそうはならないと筆者は考えている。理由の一つは,OSが動作する仕組みを知ることが,今後も開発者にとって重要であり続けることだ。プロセス管理,メモリー管理,同期化といった概念は,.NETで開発する場合でも必要だ。こうした知識を得るのに一番いいのは,やはりOSのカーネルに近いAPIのレベルで学ぶことである。
将来どうなるかはともかく,現時点では .NET Frameworkの大部分はWin32 APIのレイヤー上に載るプログラミング・インタフェースに過ぎない。.NETプログラミングで問題に遭遇したときに,それがWin32 APIレベルでどう実現されているかを考えることは,問題解決の大きなヒントとなり得る。
この連載では,そうした状況を踏まえ,Windowsのシステム・レベルにおける開発上の重要な機能やトピックをWin32 APIを通して詳しく解説していく。普段は .NETやMFCのプログラミングばかりで,Win32 APIには縁がないという方々にとっても,一段ステップ・アップできる内容を目指している。そのため,ごく基礎的な話題は,すでに理解しているものとして話を進めることがあるのでご了承願いたい。そうした話題については,書籍やインターネットなどに情報があふれているので,わからない点があれば自力で学習することが十分に可能なはずである。
開発環境としては,Visual C++ 2005 Express EditionとWindows SDK(Platform SDKを含む)を組み合わせて使うことを前提にする。Visual C++ 2005 Express Edition自体はネイティブなGUIアプリケーションを作成する機能を備えていないが,Windows SDKと組み合わせることで一応作れるようになる。いずれもマイクロソフトのWebページから無償でダウンロード可能なので,マイクロソフトのWebページを参照しながらインストールしてほしい。
第1回 Windowsのプロセスを詳しく探る
第2回 実行メカニズムの理解に欠かせない「スレッド」の概念
第3回 マルチタスクに不可欠な同期の仕組みを学ぶ
第4回 メモリー管理のキー技術「仮想メモリー」を知る
第5回 ファイル・マッピング・オブジェクトによるプロセス間メモリー共有の仕組みを学ぶ