.Net Framework 4

Last Updated 2011/09/21


.Net Framework 4 はすでに(2010 年)公開されていますが、特に WPF 関係にまとをしぼって概要を書こうと思います。


まず、WPF とは直接関係ありませんが、気になる点について触れておきます。

旧バージョンとの互換性

旧バージョンとは 4.0 以前、つまり、2.0 〜 3.5 までをさしますが、アプリケーションを作成時にどのバージョン対応にするのかを指定できます。それだけでなく、一つのアプリケーションの中に新しいバージョンと旧いバージョンとを混在させることができます。しかし、.Net Framework のいいところはいわゆる "DLL Hell" を乗り越えられるところにあるわけですから、旧バージョンとの互換性が重要な問題だとは思えません。.Net Framework のランタイムライブラリは無料ですからユーザーはバージョンアップに抵抗は少ないはずです。

Note "DLL Hell" とは、アプリケーションのバージョンアップにともなって動作が不安定になることをさします。つまり、バージョンの異なる同じ名前の DLL が残っていることに起因する不都合です。

ファイル列挙機能の高速化

膨大な数のファイルを格納するフォルダ内を検索するときなどはかない時間がかかる処理になりますが、高速化が図られました。私の場合、一つのフォルダに 15,000 ほどのファイルを格納しているケースがありますので、大変助かります。

メモリマップファイル

メモリマップファイル "Memory Mapped Files" は、サイズの大きなファイルの操作を可能にするもので、異なるプロセス間でメモリを共有できるメリットもあります。

Windows が内部的にどういう処理をしているかは公開されていませんが、ファイルを読み込んでメモリ上に配置するとき、通常のファイルの入出力操作とは異なる手順で実行するようです。したがって、非常に高速という特徴があります。Windows がアプリケーションを起動するときにもこの機能を使っているようです。

詳細はまだ把握していませんが、Windows API 関数ベースで話をすると、ファイルをメモリマップファイルとして操作することで読み込んだファイルの先頭のポインタを返します。つまり、ファイルがハードディスク上にあるかのようにしてファイルを操作することが可能になり、高速にアクセス可能になります。アンマネージコードで操作することになりますが、相当に高速ですからテキストの全文検索などのときに威力を発揮するでしょう。

追加された WPF コントロール

WPFToolKit としてすでに公開されているライブラリが標準コントロールとして追加されました。コントロールの機能はクラス名を見れば分かると思いますので、説明は省略します。

Visual State Manager

Microsoft Expression Blend にはすでにある機能ですが、コントロールテンプレート内でコントロールのビジュアル状態に応じてその外観の変更をサポーートするものです。たとえば、Button コントロールが押された状態のときの外観を定義できます。

タッチスクリーン

WPF 要素へのタッチ入力が可能になりました。つまり、タッチ入力可能なスクリーン上の要素をタッチするとイベントを発生します。イベントの発生のほかに、要素のスケーリング、回転、移動を可能にします。つまり、iPhone や iPad のようなアプリケーションの作成が可能になります。

Pixel Shader 3

"Shader" は「陰影を付ける機能」でいいと思いますが、陰影だけでなく、金属面などのテクスチャを作成するときに威力を発揮するグラフィックス関係のテクノロジの名前です。また、処理は CPU ではなく、グラフィックカードを直接使いますので、高速処理が可能という特徴があります。

Easing 機能

Easing 機能を簡単な日本語にするのは難しいですね。これはアニメーションの動作に関連するもので、たとえば、ボールを床に落とすとポンポンとはねながら徐々にいきおいを失いますが、このようなアニメーションを可能にするものです。

テキストの描画

テキストの描画ロジックを全面的に変更したようで、より鮮明に描画することができるようになるということです。

選択状態のテキストの描画

選択状態のテキストを描画するためのブラシを設定できるようになりました。したがって、選択テキストの背景色を任意に設定可能になります。

キャレットの描画

キャレットの描画は今まではアンタッチャブルでした。多くのテキストエディタではテキストの入力を上書きモードにするとき、擬似的にキャレットの形状を縦線から矩形に変えることがありますが、こういうことができるようになるようです。

System.Windows.Shell 名前空間の追加

Windows API Code Pack for Microsoft .NET Framework ですでに公開されていますが、Windows 7 対応のシェル機能が標準ライブラリに追加されました。

−以上−