ストリングを外部化する機能
次は第3回「Eclipse 3.4プラグインのインストール/設定方法」の「その他のお勧めプラグイン」で少し触れた、プロパティファイル機能を用いてストリングを外部化する機能です。プログラム中の文字列部分を自動的に取り出して、プロパティファイルに書き出します。また、プロジェクトのリソース(資源)として管理するクラスを追加し、元の文字列部分は、このクラスを呼び出すことで文字列を得るように書き換えます。
ではまず、この機能を試すための文字列をHelloStaffクラスに書き加えます。今回は、2つめのコンストラクタとして、下記を挿入します。
public HelloStaff(int age) {
this("氏名未設定", age);
}
パッケージ・エクスプローラーで、クラス名HelloStaffが選択されているのを確認してから、メニューの[ソース(S)]‐[ストリングの外部化(X)]を実行します。
「ストリングの外部化」ウィンドウが表示されます。ソース中の文字列を検索した結果、「外部化するストリング」に先ほど挿入した文字列「氏名未設定」が表示され、自動的に検索キーHelloStaff.0が設定されます。このキーはプロパティファイルから必要な文字列を得るために用いるものです。ドットより前の部分は「共通接頭部」と言います。共通接頭部の規定値はクラス名で、[生成するキーの共通接頭部を入力します(オプション)]に入力することで変更できます。
確認し、[次へ(N)]をクリックします。
プロパティファイルは、パッケージごとに作成され、ファイル名はmessages.propertiesです。最初はこのファイルがないので、作成してよいかどうかの確認プロンプトが表示されます。[次へ(N)]をクリックします。
ストリングの外部化により行われる変更(追加)を説明するウィンドウに切り替わります。[実行される変更]を上から順にクリックして確認します。まず[ファイル hellorefact/src/hello1/Messages.javaの作成]をクリックすると、プロジェクトのリソース(資源)として管理するMessagesクラスが追加されることが分かります。追加されるソースがウィンドウ下部に表示されます。
次に2つめの[HelloStaff.java …]をクリックすると、元の文字列部分がMessagesクラスを呼び出すメソッドに書き換えられることが分かります。先ほど設定した検索キーが、このメソッドのパラメータに用いられます。
最後の[ファイル hellorefact/src/hello1/messages.propertiesの作成]をクリックすると、プロパティファイルが追加されることが分かります。表示のように、Unicodeに変換されています。確認し[終了(F)]をクリックします。
リファクタリングが完了したので、ソースを確認します。パッケージ・エクスプローラーを見ると、Messages.javaファイルとmessages.propertiesファイルが追加されています。また、HelloStaff.javaファイルをエディタで開くと、元の文字列部分がMessagesクラスを呼び出すメソッドに書き換えられています。
追加された2つのファイルをエディタで開くと、設定・確認したとおりのファイルになっていることが確認できます。
この機能はプログラムの変更や再ビルドを行わずに文字列の差し替えが可能ですので、プログラムの多言語対応などにも活用できます。前回の「マジックナンバーの定数への置き換え」の上位にあたる機能とも言えるでしょう。ただし、プロパティファイルからの読み込みを行いますので、ファイルシステムが低速である環境では不向きです。

![図10:[ソース]‐[ストリングの外部化]を実行](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-10s.gif)
![図11:[次へ(N)]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-11s.gif)
![図12:[次へ(N)]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-12s.gif)
![図13:[ファイルhellorefact/src/hello1/Messages.javaの作成]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-13s.gif)
![図14:[HelloStaff.java …]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-14s.gif)
![図15:[ファイル hellorefact/src/hello1/messages.propertiesの作成]をクリックし、内容を確認後、[終了]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-15s.gif)

