SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Eclipse 3.4からはじめるIDE入門

Eclipse 3.4のコード生成&リファクタリング機能(続)~Eclipse 3.4入門~

第9回


ストリングを外部化する機能

 次は第3回「Eclipse 3.4プラグインのインストール/設定方法」の「その他のお勧めプラグイン」で少し触れた、プロパティファイル機能を用いてストリングを外部化する機能です。プログラム中の文字列部分を自動的に取り出して、プロパティファイルに書き出します。また、プロジェクトのリソース(資源)として管理するクラスを追加し、元の文字列部分は、このクラスを呼び出すことで文字列を得るように書き換えます。

 ではまず、この機能を試すための文字列をHelloStaffクラスに書き加えます。今回は、2つめのコンストラクタとして、下記を挿入します。

public HelloStaff(int age) {
    this("氏名未設定", age);
}

 パッケージ・エクスプローラーで、クラス名HelloStaffが選択されているのを確認してから、メニューの[ソース(S)]‐[ストリングの外部化(X)]を実行します。

図10:[ソース]‐[ストリングの外部化]を実行
図10:[ソース]‐[ストリングの外部化]を実行

 「ストリングの外部化」ウィンドウが表示されます。ソース中の文字列を検索した結果、「外部化するストリング」に先ほど挿入した文字列「氏名未設定」が表示され、自動的に検索キーHelloStaff.0が設定されます。このキーはプロパティファイルから必要な文字列を得るために用いるものです。ドットより前の部分は「共通接頭部」と言います。共通接頭部の規定値はクラス名で、[生成するキーの共通接頭部を入力します(オプション)]に入力することで変更できます。

 確認し、[次へ(N)]をクリックします。

図11:[次へ(N)]をクリック
図11:[次へ(N)]をクリック

 プロパティファイルは、パッケージごとに作成され、ファイル名はmessages.propertiesです。最初はこのファイルがないので、作成してよいかどうかの確認プロンプトが表示されます。[次へ(N)]をクリックします。

図12:[次へ(N)]をクリック
図12:[次へ(N)]をクリック

 ストリングの外部化により行われる変更(追加)を説明するウィンドウに切り替わります。[実行される変更]を上から順にクリックして確認します。まず[ファイル hellorefact/src/hello1/Messages.javaの作成]をクリックすると、プロジェクトのリソース(資源)として管理するMessagesクラスが追加されることが分かります。追加されるソースがウィンドウ下部に表示されます。

図13:[ファイルhellorefact/src/hello1/Messages.javaの作成]をクリック
図13:[ファイルhellorefact/src/hello1/Messages.javaの作成]をクリック

 次に2つめの[HelloStaff.java …]をクリックすると、元の文字列部分がMessagesクラスを呼び出すメソッドに書き換えられることが分かります。先ほど設定した検索キーが、このメソッドのパラメータに用いられます。

図14:[HelloStaff.java …]をクリック
図14:[HelloStaff.java …]をクリック

 最後の[ファイル hellorefact/src/hello1/messages.propertiesの作成]をクリックすると、プロパティファイルが追加されることが分かります。表示のように、Unicodeに変換されています。確認し[終了(F)]をクリックします。

図15:[ファイル hellorefact/src/hello1/messages.propertiesの作成]をクリックし、内容を確認後、[終了]をクリック
図15:[ファイル hellorefact/src/hello1/messages.propertiesの作成]をクリックし、内容を確認後、[終了]をクリック

 リファクタリングが完了したので、ソースを確認します。パッケージ・エクスプローラーを見ると、Messages.javaファイルとmessages.propertiesファイルが追加されています。また、HelloStaff.javaファイルをエディタで開くと、元の文字列部分がMessagesクラスを呼び出すメソッドに書き換えられています。

図16:パッケージ・エクスプローラーおよびHelloStaff.javaファイルの変更結果を確認
図16:パッケージ・エクスプローラーおよびHelloStaff.javaファイルの変更結果を確認

 追加された2つのファイルをエディタで開くと、設定・確認したとおりのファイルになっていることが確認できます。

図17:追加された2つのファイルを確認
図17:追加された2つのファイルを確認

 この機能はプログラムの変更や再ビルドを行わずに文字列の差し替えが可能ですので、プログラムの多言語対応などにも活用できます。前回の「マジックナンバーの定数への置き換え」の上位にあたる機能とも言えるでしょう。ただし、プロパティファイルからの読み込みを行いますので、ファイルシステムが低速である環境では不向きです。

次のページ
try/catchブロックで「囲む」機能

修正履歴

この記事は参考になりましたか?

Eclipse 3.4からはじめるIDE入門連載記事一覧

もっと読む

この記事の著者

平野正喜@ランドッグ・オーグ(ヒラノマサキ)

フリーのIT系執筆者&講使(※)の「ランドッグのマウ」こと平野正喜(HIRANO Masaki)です。【略歴】 1962年札幌市生まれ。今で言うIT企業のシステムエンジニア、プロジェクトリーダー、システムコンサルタント、採用担当などを経て独立し、2002年11月にランドッグ・オーグ平野正喜事務所(h...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4088 2010/05/14 15:34

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー