Javaでは、移植性や国際化対応を考慮して、コード中に文字列データ(ストリング)を直接記述するのは極力避け、文字列データをプロパティファイル(リソースファイル)として、外部化することが推奨されています。
本稿では、そのプロパティファイルを既存のコードから作成する方法について紹介します。Eclipseでは「ストリングの外部化」機能を用いることで、既存コードに含まれる文字列データを抽出し、プロパティファイル(リソースファイル)を自動生成できます。
プロジェクトから「.java」ファイルを開きます。ここでは、以下のようなサーブレットクラスが存在するものと仮定します。
package javatips; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloSample extends HttpServlet { protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=Windows-31J"); PrintWriter out = response.getWriter(); out.print("こんにちは"); } }
[ソース(S)]メニューから[ストリングの外部化(E)...]を選択します。その際、コードが未保存の場合は、以下のようなダイアログが表示されます。
リソースを保存しても良い場合は[OK]ボタンをクリックします。なお、次回から同じダイアログを表示させたくない場合は、[リファクタリングの前に、変更されたリソースは常に自動的に保管(A)]にチェックを入れておいてください。
外部化の設定ダイアログが表示され、対象の文字列がリストアップされます。キーは元の文字列をUnicode変換したもので、「=」のような予約文字は「_」(アンダースコア)に変換されます。また、日本語などの2バイト文字は自動的にUnicode変換がされた状態で表示されます。
[外部化するストリング(R)]の一覧からストリングを選択すると、コンテキスト欄の該当文字列が反転します。また、最終的に接頭辞が付加されたキーがダイアログ下部に「完了キー」として表示されます。
ダイアログ中の各項目の設定は、下表の説明を参考に行ってください。
設定項目 | 概要 | |
---|---|---|
生成されたキーに共通の接頭部を入力 | キーの先頭に共通して付加する接頭辞を指定する。一般的には末尾に「.」を付加する | |
外部化するストリング | キーと値のセット。変換対象を選択する(変換・スキップ・変換しない)。また、デフォルトのキー値を変更したい場合は、該当セルをダブルクリックするか、[キーの編集(K)...]をクリックする | |
次に、生成されるプロパティファイルの情報、および、プロパティファイルを参照するためのクラス名などの設定を行います。
ダイアログ中の各項目の設定は、下表の説明を参考に行ってください。
設定項目 | 概要 | |
---|---|---|
パッケージ | パッケージ名(既存のパッケージを指定) | |
プロパティファイル名 | 生成されるプロパティファイルの名前(拡張子に「.properties」を指定) | |
リソースバンドル・アクセサクラスの作成先 | リソースバンドル・アクセサクラスの名前を指定する(「ストリングの外部化」では、プロパティファイルにアクセスするためのクラスが自動生成される。デフォルトのクラス名は、変更可能)。クラス生成が不要な場合はチェックを外す | |
デフォルトの置き換えパターンを使用 | 外部化された元のソースには、プロパティファイルからリソースを読み取るためのコードが自動的にセットされる。デフォルトの置き換えパターンを使用したくない場合にはチェックを外し、置き換えパターンを書き換える。また、必要に応じてインポート宣言を追加することができる | |
[次へ(N)>]ボタンをクリックすると、外部化する際に問題となる個所がリストアップされます。致命的な問題が検出されなかった場合には、そのまま[次へ(N)]ボタンをクリックします。
外部化の結果、変更されたり、新規作成される個所がリストアップされます。[終了(F)]ボタンをクリックすると、必要なファイルが作成され、これで一連の処理は完了です。
今回は1つのファイルだけを対象に外部化の処理を行いましたが、現在のプロジェクト全体を対象に「外部化の対象」を検索し、プロジェクト内の全ファイルを対象に外部化を行うことも可能です。パッケージ・エクスプローラでプロジェクト名を選択して、[ソース(S)]メニューから[外部化するストリングの検索(F)...]をクリックすると、次のようにプロジェクト内にある外部化されていないストリングの一覧が表示されます。
Copyright © ITmedia, Inc. All Rights Reserved.