【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
 

特集

Vista時代のVisual C++の流儀(前編)

Vista到来。既存C/C++資産の.NET化を始めよう!

επιστημη(えぴすてーめー)
2007/01/31
Page1 Page2 Page3 Page4


店頭に並ぶWindows Vista
最上位エディションのUltimateを初め、Business、Home Premium、Home Basicの各パッケージが置かれている。

 さてさて、2007年はVistaの年となりました。(記事日付では)昨日1月30日のWindows Vista発売早々、さっそくインストールした方も少なくないことでしょう。すでに家電量販店には製品パッケージが大々的に陳列されています。最上位エディションであるVista Ultimateともなると5万円超、なかなか強気な価格設定です。

 筆者は無線LANでインターネットにつないでいるのですが、まだドライバがVistaに対応してくれていないので本格稼働はしばらくお預け。対応アプリケーション&ドライバが増えてくればVistaの普及に拍車がかかるでしょうね。

Vista時代にC/C++はもはやお払い箱なのか?

 16bit Windowsの時代からWindows XP/Server 2003の現在まで、Windowsアプリケーションの構築にはWindows APIが多く用いられてきました。それがVistaでは大きく変わります。従来のWindows APIは依然としてサポートされているものの、OSがアプリケーションに提供するAPIは.NET Frameworkがメインとなるためです。

 そうなると微妙なのがVisual C++(以下VC++)の立ち位置です。いままでC/C++で書かれてきたアプリケーションやライブラリはもはやお払い箱となってしまうのでしょうか?

 マイクロソフトのUS版フォーラムに興味深い投稿を見つけました。

「Vistaに搭載される.NET Framework 3.0の新機能がVC++ではサポートされていないが、これはWindowsアプリケーションの構築ではC#/Visual Basic(以下VB)が主流になるということを意味するのか? だとすれば将来的にVC++はどうなるのか?」

との問い掛けに対し、VC++開発チームからは以下の回答が寄せられています。

「C#/VBと同等の.NET対応をVC++に求めるより、VC++にはC#/VBにはできないことをやらせる方向に注力したい。すなわち高速/高機能なネイティブ・コードを書くこと、そして.NETのマネージ・コードと(従来の資産を含めた)ネイティブ・コードとの橋渡しである。」

 つまりマイクロソフトは、Vistaにおいてネイティブ・コードによるアプリケーションやライブラリに見切りをつけたわけではなく、むしろネイティブ・コード、特にいままでにC/C++で書かれたライブラリのたぐいを捨てずに(あるいはC#/VBに移植せずに)マネージ・コードの中で生かしてほしい、両者をすんなりつなぐためにVC++を活用してほしい、ということでしょうか。

 ご安心ください、いまある数多くのC/C++ライブラリのほとんどはVistaであっても使えます。ただし、いまあるネイティブ・コードに指一本触れずに.NETの世界に飛び込めるわけではないこともご承知おきください。

 端的にいえば、Windows APIおよびそれをベースにしたMFCを用いて実装されたアプリケーションはVista上で動作します。しかしながらそれはVistaの流儀に従っているわけではありません。

 例えば各アプリケーションの設定情報はXPまではレジストリに置いて集中管理することが推奨されていましたが、Vistaでは実行可能ファイルの置かれたディレクトリにXML形式の構成ファイルとして配置することが推奨されます。

 あるいはWindows API(含むMFC)によるUIと.NET Frameworkが提供するUIとでは見た目や操作感が異なります。多くの.NET Frameworkによるアプリケーションが存在するVistaの中では、Win32ネイティブ・アプリケーションには違和感を覚えることでしょう。さらにUIの設計と構築についていえば、.NET FrameworkのUIテクノロジ「Windowsフォーム」を使った方がWindows APIやMFCで行うより圧倒的に楽で、ほとんどコードを書くことなく行えます。

 そんなわけで、いまあるMFCによるアプリケーションが1日にしてお払い箱とはなりません。が、ゆくゆくはお行儀の良いVista対応を施すべく、アプリケーションからWindows APIやMFCを引きはがし、.NET Frameworkでリライトするのが上策と考えます。その際、Windows API/MFCに依存しない純粋(?)なネイティブ・コードを分離/独立させておけば、それとマネージ・コードをつなぐのに「C++/CLI」が利用できます。

C/C++資産をどこまで生かせる?

 前述のとおり、.NETの中でこれまでのC/C++資産を生かすにはまず、アプリケーションやライブラリからMFC依存部分を分離する、あるいはMFCが提供するクラスや関数を書き換えておくのがよさそうです。そして、書き換えたネイティブ・コードをC++/CLIで包み込めば、それらのライブラリやクラス、関数は「.NETのマネージ・コードから呼び出すことのできる部品」とすることができます。

 簡単なサンプルをご覧に入れましょう。

 

 INDEX
  [特集]
  Vista時代のVisual C++の流儀(前編)
  Vista到来。既存C/C++資産の.NET化を始めよう!
  1.Vista時代にC/C++はもはやお払い箱なのか?
    2.C/C++資産をどこまで生かせる?
    3.ネイティブ・オブジェクトをマネージ・コードでくるむ
    4.文字コード変換
 
  Vista時代のVisual C++の流儀(中編)
  MFCから.NETへの実践的移行計画
    1.C++/CLIによるWindowsフォーム・アプリケーション
    2.言語をまたいだDocument/Viewアーキテクチャ
    3..NET移行前のMFCサンプル・アプリケーション
    4.MFCのDocument/Viewアーキテクチャの.NET化
    5.MFCで書かれたDocumentを.NET化する2つの方法
 
  Vista時代のVisual C++の流儀(後編)
  STL/CLRによるDocument/Viewアーキテクチャ
    1.STL/CLRとは
    2.STL/CLRの特徴
    3.Visual Studio 2005で試す
    4.おまけ:NUnitの活用

ホワイトペーパーTechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?