WPF

【WPF攻略】2.4_マジックナンバーを管理するリソースファイル・セッティングファイルを追加しよう

本記事ではリソースファイルセッティングファイルの追加方法をご紹介しています。

マジックナンバーを集約して管理できるようになるので、開発では必須の作業になりますよ!

突然ですが問題です!

次のコードの『0.707』が何を意味しているか分かりますか?

private double Calculate(double value){ return value * 0.707; }
とび助

全く分からないっすね…

トビタカ

実は『1/√2』を意味しています!

先ほどのサンプルコードは『直角二等辺三角形の斜辺から1辺の長さを求めるメソッド』でした。

なので、実装した本人からすれば『0.707』は『1/√2』を意味していることが簡単に理解できるのですが…

他の人がこのコードを読むと、『0.707』の意味が全く分からなくなってしまうのです。

このように、実装した本人にしか分からない『直接実装された定数』をマジックナンバーと言います。

マジックナンバーがあるとコードを理解するのに時間がかかるので、チームで開発するときや他の人がメンテナンスをする可能性があるときは、基本的にマジックナンバーを使ってはいけないんです。

トビタカ

毎回、実装した本人に意味を聞かないといけないですからね!

とび助

たしかに、よろしくなさそうですね…

このような背景から定数をマジックナンバー(直接実装)にしてはいけないのですが…

プログラムを実装していと、定数を使いたくなる場面が必ず出てきます。

とび助

じゃあ、一体どうしたらいいんですか!

トビタカ

ファイルでまとめて管理すればいいんです!

文字列の定数を管理するリソースファイル

マジックナンバーを管理するためによく使用するのがリソースファイルとセッティングファイルになります。

トビタカ

まずはリソースファイルのサンプルを見てみましょう!

リソースファイルは『名前・値・コメント』の列を持つ表形式のようなデータになります。

Excelみたいなイメージを持っていただければOKです。

使い方としては、名前に『英語』を、値に『表示させたい文字列』を入力する感じですね。

そうすると、名前を値に自動で置き換えてくれるので、マジックナンバーを管理できるツールとして使えます。

画像の例の場合は『Calculator』に『電卓』という値が入力されているので、Calculatorという文字列を使用すると『電卓』という文字に置き換えることができます。

なお、コメントは使わなくてもOKですが、名前に記号や略称を使用する場合は補足説明を入れておくといいですよ。

トビタカ

表示させる文字列を使用したいときにリソースファイルを使うと覚えておいてくださいね!

とび助

文字列以外はどうすればいいんですか…?

トビタカ

文字列以外はセッティングファイルを使いますよ!

基本的にリソースファイルに登録した文字列定数はプログラムの途中で書き換えられません。

なので、プログラムの途中で変更したい文字列定数がある場合は、次のセッティングファイルに登録することをオススメします。

数値や日付などの定数を管理するセッティングファイル

『文字列以外の定数』や『プログラムの途中で変更したい文字列定数』を使用したい場合は、セッティングファイルを使うのがオススメです。

次のようなファイルがセッティングファイルとなります。

リソースファイルと見比べると、コメントの代わりに『種類』『スコープ』が追加されているデータであることが、お分かりいただけると思います。

ここの『種類』で型式を指定することで、いろいろな型式のマジックナンバーを管理できるのです。

さっきの画像の例のように『System.DateTime・int・bool』などを選択すれば、日付・数値・フラグなどの定数をまとめることができます。

なお、『string』も選択できるので、プログラムの途中で変更したい文字列も登録することが可能です。

トビタカ

しかも値が型式に合っているかチェックもしてくれますよ!

とび助

それは便利ですね!

もう1つのスコープという項目は『値の変更可否を意味する』と思っていただければOKです。

『ユーザー』を選択すると、プログラムの途中やファイルの書き換えで値を変更できるようになりますし。

『アプリケーション』を選択すると書き換えが不可能になります。

トビタカ

変更しないマジックナンバーはアプリケーションにすると良いと思います!

とび助

了解です!

ちなみに、開発現場では『テスト時やプログラムの途中で値を変更したい定数』や『ユーザーが変更する定数』をユーザー設定にすることが多いです。

テスト時に変更したくない基準日やユーザーID、サーバの接続先などがよく登録されています。

リソースファイルの追加方法

説明は以上になりますので、早速リソースファイルから追加していきましょう。

ソリューションエクスプローラーにあるプロジェクトを選択してから、『Alt』『Enter』を同時押ししてプロパティを開きます。

トビタカ

プロパティを開くショートカット『Alt』『Enter』の同時押しはよく使うので覚えておくのがオススメです!

そしたら、次の画像のように①『リソース』のタブを選択し、②『アセンブリリソースを作成する/開く』をクリックします。

クリックしたら、『Properties』というフォルダがプロジェクトに追加されていると思います。

その中の『Resources.resx』がリソースファイルです。

このファイルをダブルクリックすると表形式の画面が開くと思います。

とび助

ResourcesDesigner.csってファイルもありますよ…?

トビタカ

それは自動で作られるファイルなので、基本的にいじってはいけないファイルになります。

この方法でリソースファイルの作成はOKなのですが、WPFでリソースファイルを使う時に注意する点があります。

それは、アクセス修飾子をpublicに変更する必要があるということです。

そうしなければ、Viewのxamlファイルからリソースファイルを参照することができなくなるので、結局マジックナンバーを使うことになってしまいます。

なので、次の画像の③のプルダウンからpublicを選択して保存しておいてください。

トビタカ

注意画面が出てもOKを選択してくださいね!

publicにするとカスタムツールの設定がResXFileCodeGeneratorからPublicResXFileCodeGeneratorに変わりますが、気にしなくてもOKです。

セッティングファイルの追加方法

続いてはセッティングファイルの追加方法をご説明していきます。

やり方は、リソースファイルとほぼ同じです。

ソリューションエクスプローラーにあるプロジェクトを選択してから、『Alt』『Enter』を同時押ししてプロパティを開きます。

次の画面が開いたら、①『リソース』のタブを選択して、②『アプリケーション設定を作成する/開く』をクリックしてください。

この操作を行うと『Properties』フォルダに『Settings.settings』が追加されます。

これがセッティングファイルです。

きっと、ソリューションエクスプローラーは次の画像のようになっていると思います。

トビタカ

リソースファイルとセッティングファイルが同じフォルダに作られているはずです!

とび助

確認できました!

リソースファイルと同様に、Settings.Designer.csという自動生成されるファイルも追加されていると思います。

このファイルはビルド時に改変されてしまうので、なるべく変更しないようにしてくださいね。

リソースファイルとセッティングファイルをさらに追加する方法

基本的にリソースファイルとセッティングファイルは1つずつあればOKです。

ですが、規模が大きいWPFアプリを作成するときは、更にリソースファイルとセッティングファイルを追加することがあります。

例えば、ユーザーに表示するメッセージをまとめた『MessageResources』、エラーコードをまとめた『ErrorResoureces』などです。

セッティングファイルの場合は、スコープごとにファイルを分けることだってあります。

なので、追加する方法をご紹介しておきます。

まずは、『Properties』を選択して『Ctrl』『Shift』『A』を同時押ししてください。

『新しい項目の追加』の画面が表示されると思います。

トビタカ

このショートカットもよく使うので覚えておくとオススメです!

こちらの画面が表示されたら、下側の方に①『リソースファイル』 or 『設定ファイル』があるので、追加したいファイルを選択してください。

そして、②でファイル名を設定して、③『追加(A)』をクリックしましょう。

トビタカ

この方法で『MessageResources.resx』も追加しておいてください!

とび助

了解です!

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA