次の方法で共有


リソースの共通概念

.NET Framework によるプログラミングのほとんどの部分は、互換性のある言語なら、どの言語の場合でも同じです。これは、サポートされている各言語のコンパイラが自己記述型のマネージ Microsoft Intermediate Language (MSIL) コードを生成するためです。すべてのマネージ MSIL コードは、共通言語ランタイムで実行されます。共通言語ランタイムは、言語間の統合、自動メモリ管理、複数言語にまたがる例外処理、強化されたセキュリティ、およびコンポーネント間での単純化された対話モデルを実現します。.NET Framework には、ラインタイムのほかに、.NET と互換性のあるすべての言語からアクセスできる .NET Framework クラス ライブラリも含まれています。この共通開発プロセスには、リソースを使用するアプリケーションをビルドするときに特に重要となる面がいくつかあります。

ビルド ブロック

自分や他の開発者が作成した .NET Framework クラス ライブラリも、階層的な名前空間に編成され、ポータブル実行可能 (PE) ファイル (通常は DLL ファイルおよび EXE ファイル) に格納されます。入れ子になった名前空間も含めたいくつかの名前空間を 1 つの PE ファイルに保持することも、1 つの名前空間を複数の PE ファイルに分割することもできます。アセンブリは、1 つ以上の PE ファイル (および場合によってはリソースなどの別の種類のファイル) を組み合わせて作成されます。アセンブリとは、配置、バージョン番号付け、および再利用が可能な物理単位です。ランタイムは、アセンブリを使用して、参照先の型を見つけてバインドします。リソースは、アセンブリにバインドしたり、複数の異なる形式で個別にパッケージ化したり、JPEG イメージのように独立したファイルとして使用したりできます。アセンブリに何が含まれているか (クラスやリソースなど) についての情報は、アセンブリ マニフェストに格納されます。

カルチャ

.NET Framework におけるカルチャとは、ユーザーの言語を指します。ユーザーの言語は、そのユーザーの場所と結び付いている場合もあります。カルチャを指定すると、特定の情報 (文字列、日付の形式、数値の形式など) に対する共通設定のセットを使用できます。これらの情報は、ユーザーの言語と場所の規則に対応しています。

場所とは、国または地域のいずれかです。国として正式に認められていない場所に対しては、地域の方が地政学的に正確な用語です。言語と場所は、インターネット RFC 1766 『Tags for the Identification of Languages』で定義されるコードによって指定できます。実際のコード自体は、ISO 639 『Code for the representation of names of languages』および ISO 3166 『Codes for the representation of names of countries』という 2 種類の ISO 標準によって定義されています。これらの標準についての追加の参照情報については、「付録 A : リソースに関する追加情報」のトピック「言語タグと国/地域タグ」を参照してください。

カルチャの詳細設定には、CultureInfo クラスのインスタンスを使用してアクセスできます。CultureInfo クラスには、カルチャ タグを使用してアクセスします。カルチャ タグは、primary[-secondary] という形式で記述します。primary タグは言語を示し、省略可能な secondary タグは国/地域コードを示します。規則により、言語タグは 2 文字の小文字、国/地域タグは 2 文字の大文字で構成されます。カルチャ タグの例を次の表に示します。

de ドイツ語
de-AT オーストリアのドイツ語
de-CH スイスのドイツ語
en 英語
en-US 米国の英語
en-AU オーストラリアの英語
en-CA カナダの英語
fr フランス語
sp スペイン語

.NET Framework では、2 文字のタグは言語だけのニュートラル カルチャを示します。たとえば、ドイツ語の de などがあります。4 文字のタグは固有のカルチャを示します。たとえば fr-CA は、カナダで話されるフランス語です。ほとんどの場合、ユーザー インターフェイスは固有のカルチャとして指定されます。ただし、日本の日本語を意味する ja-JP のように、1 つのニュートラル カルチャに対して固有のカルチャが 1 つしか存在しないことも多く、このような場合は、しばしば 2 つのタグが混用されます。アプリケーションのカルチャを固有のカルチャに設定できるようにするには、CreateSpecificCulture メソッドを使用して、すべてのニュートラル カルチャをそれぞれに一致する固有のカルチャに割り当てる必要があります。

.NET Framework におけるカルチャは、国別言語サポート (NLS) ロケールに取って代わるものです。NLS ロケールでは、ロケール ID (LCID) コード体系が使用されていました。CultureInfo クラスの LCID プロパティを使用すると、NLS ベースのソフトウェアとの相互運用性を実現したり、統合を簡単にしたりできます。

.NET リソース クラス

.NET Framework クラス ライブラリには、アプリケーションやツールのリソースを操作するときに役立つクラスが用意されています。

ResourceManager クラス

ResourceManager クラス (System.Resources 名前空間内) を使用すると、適切なカルチャのリソースへ実行時に簡単にアクセスできます。このクラスは、ローカライズされたリソースが存在しない場合のリソース フォールバック (通常はニュートラル カルチャへのフォールバック) を実現し、リソースのシリアル化をサポートします。また、アセンブリ内にパッケージ化されていないリソースにアクセスできる CreateFileBasedResourceManager メソッドが用意されています。もちろん、カスタムのリソース ソリューションの作成時に ResourceManager からクラスを派生させることもできます。

ResourceWriter クラス

ResourceWriter クラス (System.Resources 名前空間内) は、リソースをシステムの既定の形式で出力ファイルまたは出力ストリームに書き込みます。リソースは、AddResource メソッドによって名前と値のペアとして指定されます。リソース名を検索するときは大文字と小文字が区別されますが、ResourceWriter では、リソース名に大文字と小文字の違いしかない場合、.resources ファイルへのリソース名の書き込みは行われません。ResourceWriter クラスには、IResourceWriter インターフェイスという既定の実装が用意されています。開発者はこれをオーバーライドできます。

**メモ   **リソースは、プログラムによって追加されたときと同じ順序で書き込まれるとは限りません。

ResourceReader クラス

ResourceReader クラス (System.Resources 名前空間内) は、.resources ファイルとストリームを列挙し、一連のリソース名と値のペアを読み取ります。このクラスには、IResourceReader インターフェイスという既定の実装が用意されています。このインターフェイスは、ResourceWriter クラスの場合と同様に開発者がオーバーライドできます。

ResourceSet クラス

ResourceSet クラス (System.Resources 名前空間内) は、特定の 1 つのカルチャにローカライズされたすべてのリソースを格納します。すべてのリソースは、すぐにメモリに読み込まれます。ResourceManager と異なり、ResourceSet はフォールバックしません。このため、ResourceSet は、主にツールとユーティリティの作成時には役立ちますが、ローカライズされたアプリケーションには不向きです。ResourceSet は、リソース キャッシュの制御 (たとえばイメージのキャッシュの防止) にも使用できます。

CultureInfo クラス

CultureInfo クラス (System.Globalization 名前空間内) は、ユーザーの言語、サブ言語、国/地域、およびカルチャの規則に依存する、ユーザー設定情報のセットを単純に格納します。このクラスは、日付、時刻、および数値の書式を設定したり、文字列を並べ替えたり、テキストの言語を選択したりするために使用されます。

RegionInfo クラス

RegionInfo クラス (System.Globalization 名前空間内) は、測定単位を決定したり、地域名に地域コードを割り当てたりするために使用されます。

Assembly.GetManifestResourceStream メソッド

Assembly.GetManifestResourceStream メソッド (System.Reflection 名前空間内) は、マニフェスト リソース データをストリームに直接読み込みます。このメソッドは、そのままでは ResourceManager が理解できないカスタム形式でリソースが格納されている場合に特に便利です。

****メモ   Assembly.GetManifestResourceStream メソッドを使用するには、アセンブリにリソースが含まれている必要があります。

Thread.CurrentUICulture プロパティ

Thread.CurrentUICulture プロパティ (System.Threading 名前空間内) は、現在のカルチャを確認する必要があるときに便利です。また、さらに重要な用途として、カルチャを設定して異なるローカライズ バージョンの Windows での実行をエミュレートする必要があるときにも役立ちます。多言語ユーザー インターフェイスが用意されていないバージョンの Windows 2000 では、コントロール パネルで複数のユーザー インターフェイス LCID を表示できないため、このプロパティを使用する必要があります。このプロパティを使用すると、実行時にプログラムによってスレッドごとにカルチャを設定できます。

配置

最も単純な場合として、スタンドアロンの .NET Framework 実行可能ファイルは、共通言語ランタイムが既にインストールされているコンピュータなら、どのコンピュータでもローカルに実行できます。ほかに必要な条件はありません。レジストリ エントリが作成されたり、別のアプリケーションが中断したり、実行中のアプリケーションが停止したりすることはありません。ファイルがローカルにコピーされている場合は、そのファイルを削除するだけでアプリケーションがクリーンアップされ、コンピュータには何の痕跡も残りません。Web サイトを表す URL から実行されるアプリケーションの動作は、少し異なります。この場合、アセンブリはダウンロード キャッシュにインストールされ、後から自動的に削除されます。その他のアプリケーションは、ファイルを表す URL から実行されたアプリケーションも含めて、すべてソース コードから実行され、ローカル コンピュータ上にはキャッシュされません。

配布

ほとんどのクライアント アプリケーションは、.cab ファイルや .msi ファイルのような共通の配布形式にパッケージ化され、その多くは、Microsoft Installer テクノロジを使用する Windows 2000 IntelliMirror や Microsoft Systems Management Server (SMS) などのアプリケーション配布機構を使用してインストールされます。Microsoft Installer の詳細については、Win32 SDK の該当するセクションを参照してください。

参照

リソースの作成 | コードによるリソースの取得 | リソースのまとめ | 付録 A : リソースに関する追加情報 | 付録 B : リソース ツール