国際化プログラミングの常識:プログラマーの常識をJavaで身につける(5)(2/3 ページ)
本連載は、Java言語やその文法は一通り理解しているが、「プログラマー」としては初心者、という方を対象とします。Javaコアパッケージを掘り下げることにより「プログラマーの常識」を身に付けられるように話を進めていきます。今回は、「国際化プログラミング」について。国際化なんて自分には関係ないと思っていませんか? 実は身近な存在で、プログラムの基本となる知識も含んでいます。
Javaプログラミングの国際化について
それでは、Javaの国際化に関する情報を見ていきましょう。Javaにとっての一次情報源であるサン・マイクロシステムズ提供のドキュメントに、Javaの国際化に関する有益な情報が記載されていますので、こちらを見ていきます。
サン・マイクロシステムズからさまざまな情報が提供されていますが、ドキュメントが日本語訳されているものとしては以下の2点がよくまとまっています。
- JDK 5.0ドキュメント:国際化(日本語)
国際化関連のインデックスにもなっている。このドキュメント中の、以下のページが特に有益- JDK 5.0ドキュメント:国際化の概要(日本語)
JDKのドキュメントなので、重要な一次情報源。特に貴重な情報が多数
- JDK 5.0ドキュメント:国際化の概要(日本語)
- Java国際化FAQ(日本語)
日本語で書かれた国際化に関する、よくあるQ&A集
Javaの国際化の概要
Javaの国際化の概要をより深く知るために、「JDK 5.0ドキュメント:国際化の概要」をもう少し詳しく見ていきましょう。。このドキュメントでは、Javaの国際化について、以下のような分類でまとめられています。各分類の詳細については、要約してあります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
国際化は「ほどほど」に!!
この国際化対応の記載には、「Java実行環境に実装されているためプログラマーが意識しなくても自然に実現される国際化対応」と「Javaプログラマーが意識的にJava APIを活用などすることによって実現される国際化対応」の2種類が含まれている点に注意が必要です。このため、プログラマーがここに記載されているすべてを理解しておく必要はありません(例えば、Java実行環境のUnicode対応に関する実装については、プログラマーの多くは知る必要がないことでしょう)。
さらに、Javaプログラマーが利用する国際化対応機能についても、すべてを使いこなす必要はありません。むしろ、国際化対応機能をむやみに使うと、訳の分からないソースコードが出来上がってしまう懸念すらあります。目的をしっかり持ち、必要となる国際化プログラミングを選択しながら、ほどほどに適切に利用する必要があるのです。
文字列をソースコードから外部ファイルへ抽出[java.util.ResourceBundle]
また、国際化プログラミング技術の中には、国際化以外の目的でも有益な技術が含まれています。例えば、ResourceBundleクラスを使うと、画面表示内容やメッセージなどの文字列をソースコードから外部ファイル(*.properties)へと追い出すことができます。外部ファイル化しておくと、そのプログラムに精通していない第三者でも、メッセージなどの文字列を変更(保守)しやすくなるというメリットがあります。
プロパティファイルを使った国際化
それではいよいよ、国際化プログラミングに関するJava APIのうち、いくつかを見ていきましょう。
最もよく利用される国際化関連Java APIの1つがjava.util.ResourceBundleクラスです。このクラスを使うと、ロケールに対応した言語の*.propertiesファイルが自動的に読み込まれます。
国際化したpropertiesファイルを作る
最初に、プロパティファイル(*.properties)を作成します。ResourceBundleが利用するプロパティファイルはnative2asciiコマンドを使って作成します。このコマンドについては「native2ascii - ネイティブ - ASCII コンバータ」 を参照してください。
ただし、native2asciiコマンドは場合によって面倒なことが多いので、プロパティファイルの作成・編集には、Eclipseプラグインを利用する場合が多いです。@ITの記事「CoolなEclipseプラグイン(1):Javaのプロパティファイルを編集できるプラグイン」に、主なものが紹介されています。
今回は、Excelを用いてプロパティファイルの記述が可能なblancoResourceBundleプラグイン(バージョン 1.0.0)を使います。インストールや使い方については、blancoResourceBundleプラグインのサイトを参照してください。
また今回は、「ことわざバンドル」というリソースバンドルについて英語版と日本語版の2つを準備します。以下のように、enシートとjaシートの2つを作成します(シート名とロケールとをそろえておいてください)。
インストールしたblancoResourceBundleプラグインの[ソースコード生成]ボタンを押します。
すると、以下の3つのプロパティファイルが作成されます。
- kotowaza.properties(基底名.properties)
- kotowaza_en.properties(基底名_en.properties)
- kotowaza_jp.properties(基底名_jp.properties)
これらのうち、_enのものが英語版、_jpのものが日本語版となります。。ちなみに、対応するプロパティファイルがない場合(例えば、このケースにおいてフランス語としてプログラムが起動された場合)には、kotowaza.properties(基底名.properties)が利用されるようになっています。
これらのファイルはJavaのクラスパスの範囲に存在する必要があります。ここでは便宜上、Eclipseがクラスパスとして取り扱うsrcフォルダへプロパティファイルをコピーして利用します。
Copyright © ITmedia, Inc. All Rights Reserved.