今回は、ハードウェアに関連する話題を2つ取り上げることにしよう。ハードウェアといっても結局はソフトウェア開発の話になるのだが、対象分野は大きく分けると「周辺機器用のデバイスドライバ開発」と「組み込み用ソフトウェアの開発」となる。

デバイスドライバの開発

まずは、デバイスドライバ開発の話から始める。現在では周辺機器を駆動するためのソフトウェア、すなわちデバイスドライバはOSと分離して、必要に応じて追加する形をとっている。OSと周辺機器駆動用のソフトウェアが実質的に一体化していた神代の時代みたいな真似は、現実問題として成り立たない。

そして、周辺機器に対応するデバイスドライバがどれだけ揃っているかが、ユーザーにとっては重要な問題になる。そのため、アプリケーションソフトと同様に、Windows用のデバイスドライバも開発者のための支援態勢を整えているというわけだ。そしてMSDNオンラインでも、デバイスドライバ開発者のための情報を提供している。それがハードウェアデベロッパーセンターだ。

Windowsハードウェアデベロッパーセンター
http://msdn.microsoft.com/ja-jp/windows/hardware

Windowsハードウェアデベロッパーセンター。他のデベロッパーセンターと同様に、ステップ・バイ・ステップ方式の構成になっている

Windowsハードウェアデベロッパーセンターも他のデベロッパーセンターと同様、ステップ・バイ・ステップ方式の構成をとる。ただし、ハードウェアデベロッパーセンターに特有のコンテンツがあるので、順を追って紹介しよう。

ステップ・バイ・ステップ方式だから、当然ながら、初めて開発に取り組む人を想定した内容から始まる。そしてハードウェアの設計、デバイスドライバ開発者キット(DDK)の入手、作成したデバイスドライバやハードウェアの動作検証、マイクロソフトによる認定の取得といった段階ごとに、技術情報の提供、ソフトウェアなどの提供、手続きや要件に関する情報提供などのコンテンツへのリンクがまとめてある。開発作業が進むに従って、アクセスするコンテンツも変わっていくだろう。もちろん、他の開発者向けの情報と同様、開発者同士でコミュニケーションをとるためのコミュニティサイトも用意されている。

Windows用ハードウェアの開発をはじめる
http://msdn.microsoft.com/ja-jp/windows/hardware/gg507680

ハードウェア コミュニティの情報の活用
http://msdn.microsoft.com/ja-jp/windows/hardware/gg454517

Microsoftとパートナー関係を築く
http://msdn.microsoft.com/ja-jp/windows/hardware/gg507812

Windows用ハードウェアを設計する
http://msdn.microsoft.com/ja-jp/windows/hardware/gg490323

Windows ドライバーを開発する
http://msdn.microsoft.com/ja-jp/windows/hardware/gg490655

キットとツールのダウンロード
http://msdn.microsoft.com/ja-jp/windows/hardware/gg454513

WDK(Windows Driver Kit)の入手方法
http://msdn.microsoft.com/ja-jp/windows/hardware/gg487463

WLK(Windows Logo Kit)の入手方法
http://msdn.microsoft.com/ja-jp/windows/hardware/gg487533

特に、テストと認証の作業は重要だ。認証を受けてロゴを取得している製品とそうでない製品が混在していて、むしろ後者の比率が高かった時期もあったが、最近ではロゴ取得が必須要件になっているといってよい。特にエンドユーザー向けに小売りする製品は、ロゴが取得できているかどうかが店頭におけるアピール度に影響するだろう。

ハードウェアとドライバーをテストする
http://msdn.microsoft.com/ja-jp/windows/hardware/gg507673

Windows Performance Analysis Tools
http://msdn.microsoft.com/en-us/performance/cc825801.aspx

ハードウェアのWindowsロゴ認定を受ける
http://msdn.microsoft.com/ja-jp/windows/hardware/gg487360

Winqual Webサイト(英語)
https://winqual.microsoft.com/member/LogoPoint/Requirements/PreparedRequirementReport.aspx

ハードウェアとドライバーをメンテナンスする
http://msdn.microsoft.com/ja-jp/windows/hardware/gg487374

テストを重ねて信頼できるデバイスドライバを開発するには、テストそのものだけでなく、テストによって判明した問題点を解決するためのデバッグ作業が重要になる。そのため、開発者向けのリソースとして、デバッグに必要なツールやその他のリソースに関する情報がまとめられているのは当然だろう。

Windows用デバッグ ツールのダウンロードとインストール
http://msdn.microsoft.com/ja-jp/windows/hardware/gg463009

Windowsシンボル パッケージのダウンロード
http://msdn.microsoft.com/ja-jp/windows/hardware/gg463028

Microsoftシンボルサーバの利用
http://support.microsoft.com/kb/311503/

そのほか、作成したデバイスドライバをWindows Update経由で配布する手段や、発生したエラーに関する情報を収集する手段に関する情報も必要になる。

製品のエラーおよびクラッシュに関するデータの取得
https://winqual.microsoft.com/

Windows Updateでのドライバーの配布
http://msdn.microsoft.com/ja-jp/windows/hardware/gg487434

なお、MSDNライブラリにもデバイスドライバ開発に関するコンテンツがあるので、こちらも要チェックだ。

Windowsドライバー開発
http://msdn.microsoft.com/ja-jp/library/gg262839(v=VS.85).aspx

組込みソフトウェアの開発

ハードウェアにおけるもう1つの分野が、組込み用ソフトウェアだ。PCやスマートフォンだけを利用しているとあまり意識することはないが、POSレジ・カーナビ・自動券売機など、さまざまな分野で組み込み用Windowsが活用されている。となれば、こうした機器で使用するためのソフトウェアを開発する必要が生じるため、開発者向けの情報提供も行われることになる。

組み込み開発者向け技術情報
http://msdn.microsoft.com/ja-jp/windows/kumikomidev

組み込み開発者向けの技術情報も、例によってステップ・バイ・ステップ方式の体裁をとっている

ただ、一言で「組み込み用」と言っても、実は対象となるプラットフォーム(組み込み用Windows)の種類がいろいろあり、システム要件・システム構成・利用可能な開発ツールに違いがある。対象プラットフォームをリストアップすると、以下のようになる。

.NET Micro Framework
http://msdn.microsoft.com/ja-jp/netframework/bb267253

Windows Embedded Compact
http://www.microsoft.com/windowsembedded/ja-jp/products/windowsce/default.mspx

Windows Embedded Standard
http://www.microsoft.com/windowsembedded/ja-jp/products/westandard/default.mspx

Windows Embedded Enterprise
http://www.microsoft.com/windowsembedded/ja-jp/products/weenterprise/default.mspx

Windows Embedded Server
http://www.microsoft.com/windowsembedded/ja-jp/products/server/default.mspx

大雑把に定義すると、リストの上から下に向かうほど大規模になると考えればよい。それぞれのリンク先で、個別の情報を入手する形になる。

全体の流れは、「これからはじめる」→「開発する」→「開発を支援する」といった内容になっている。使用する開発ツールは、Visual Studio 2010、Visual Studio 2008、UI開発環境のExpression Blendといったところだ。

アーキテクチャと開発のステップを対応させる形で、図で提示してくれているのは親切だ