米Microsoftデベロッパ部門担当のS.Somasegarコーポレート・バイス・プレジデントが,8月2日に開催されるWindowsエンジニア向けカンファレンス「Tech・Ed 2005 Yokohama」での基調講演のために来日,日経Windowsプロ編集部との会見に応じた。同氏は,Visual Studioや.NET Frameworkなどの開発ツール/プラットフォームを統括する立場にある。会見の要旨は以下の通り。

―――― 現在のアプリケーション開発では,生産性に加えてセキュリティの重要性が高まっている。Visual Studio 2005でセキュアなアプリケーションを作るにはどうすればいいのか。

[Somasegar氏]米Gartnerの調査によれば,セキュリティ上の問題の75%は,OSではなくアプリケーションの中にあるという。その意味でも,アプリケーション開発者がセキュリティに配慮して開発を進めることは大切だ。

 セキュアなアプリケーションを開発する方法の1つは,CPUが直接実行するネイティブ・コードではなく,.NET上で動作するマネージ・コードとしてアプリケーションを作成することだ。.NETには,メモリー・アドレスを直接扱う必要がない,コードの実行権限を制限できるなど,ネイティブ・コードのアプリケーションよりも原理的に安全な部分が多い。Microsoftも全社的な方向として,マネージ・コードでの開発に移行しつつある。社内の業務アプリケーションなどは,既に.NETで動いている。

 C/C++のネイティブ・コードとして開発するなら,Visual Studio 2005に搭載するコード分析機能を使ってほしい。静的なコード分析には,エラーなどの特殊な状況でないと実行されないような部分についても問題を検出できるメリットがある。Visual Studio 2005 Team Systemなら,開発プロセスの一部として,開発チームにコード分析機能の使用を強制することもできる。

 またC/C++コンパイラの「/GS」オプションを利用して,バッファ・オーバーフローを検知するコードをアプリケーションに埋め込むのも有効だ。Windows XP SP2,Windows Server 2003も,「/GS」オプションをオンにしてコンパイルされている。

―――― 業務アプリケーションはともかく,Microsoft Officeなどのスタンドアロン・アプリケーションの多くはネイティブ・コードとして書かれている。これらを一からマネージ・コードとして書き直すのは大変だ

[Somasegar氏]確かに,Officeのように数百万行ものネイティブ・コードで構成されるアプリケーションの場合,バージョンアップの際にすべて書き直すのは現実問題として不可能だ。そこで,既存アプリケーションのバージョンアップでは,新たに追加するような機能だけをマネージ・コードとして開発することを勧めたい。.NETはマネージ・コードからネイティブ・コードを呼び出す仕組みを用意しているので難しくはないはずだ。

 また,コードの種類によっては,あまり手を加えることなく.NET用のC++(Managed C++)で再コンパイルできることもある。このような場合は,再コンパイルするだけでマネージ・コードとして動作するようになる。

 ちなみに,OSはネイティブ・コードで動作するという認識が一般的だが,次世代の表示システムであるWindows Presentation Foundation(開発コード名Avalon)や,次世代の通信システムであるWindows Communication Foundation(開発コード名Indigo)は,マネージ・コードとして書かれている。デバイス・ドライバをはじめ,Windowsの多くのコンポーネントが当分の間ネイティブ・コードとして提供され続けることは間違いないが,その一方で新規に追加する機能については,マネージ・コードとして提供されるものも少なからずあるだろう。

 Microsoft Officeについて言えば,次期バージョンOffice 12はネイティブ・コードとして動作する。これはOffice 12の開発を始めた時点ではまだ.NET Framework 2.0が開発に使える状態でなかったためだ。代わりに,Office 12にはマネージ・コードで機能をカスタマイズできるようにする機能を組み込む予定である。Office 12のさらに次の製品については,Office 12のリリース後,開発に取り掛かる時点で,機能の一部をマネージ・コードにするかどうかなどを検討する。

―――― 記者が以前から.NET Frameworkに対して不満に感じている点の1つは,アプリケーション・フレームワークと呼べるものを用意していないことだ。MFC(Microsoft Foundation Classes)のようなアプリケーション・フレームワークを使った経験のある人ならきっと同じように感じていると思う。

[Somasegar氏]そうした声に応えるために,われわれはMBF(Microsoft Business Framework)と呼ぶ業務システム構築用のアプリケーション・フレームワークの開発を進めている。現在,早期評価プログラムに参加している30~40社にプレビュー版を提供し,フィードバックを集めている段階だ。提供方法などは未定だが,期待してほしい。

―――― 現行Visual Studio .NET 2003が,Borland JBuilderやEclipseなどのJava開発ツールと比較して遅れている感じがする点は否めない。具体的にはリファクタリング機能がないといった点だ。これはVisual Studioのバージョンアップの頻度が少なすぎるのが原因ではないか。

[Somasegar氏]総合的に見れば,Visual Studio .NET 2003がJava開発ツールと比較して遅れているとは思わない。だがこれまでバージョンアップの頻度が少なすぎたのは事実だ。Visual Studio 6.0のリリースからVisual Studio .NETのリリースまでに約3年半,Visual Studio .NET 2003のリリースからVisual Studio 2005のリリースまでに約2年半を要している。今後は,1年半から2年に1度,バージョンアップをする予定だ。それでも頻度が少ないと言うなら,途中でアップデートを行うことも検討する。

(山本 哲史=日経Windowsプロ