国際化プログラミングの常識:プログラマーの常識をJavaで身につける(5)(3/3 ページ)
本連載は、Java言語やその文法は一通り理解しているが、「プログラマー」としては初心者、という方を対象とします。Javaコアパッケージを掘り下げることにより「プログラマーの常識」を身に付けられるように話を進めていきます。今回は、「国際化プログラミング」について。国際化なんて自分には関係ないと思っていませんか? 実は身近な存在で、プログラムの基本となる知識も含んでいます。
ResourceBundleクラスの利用例
これらのプロパティファイルをプログラムで利用すると、以下のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
(1)の個所で(日本語環境で実行している場合には)kotowaza_ja.propertiesファイルから設定値を読み込みます。そして、(2)、(3)、(4)の個所でキーに対応する文字列を取得します。
実行結果
MESSAGE1: 急がば回れ。
MESSAGE2: 時は金なり。
MESSAGE3: 郷に入いっては郷に従え。
プロパティファイル化された文字列を利用してプログラムが動作していることが確認できます。
すでに英語も対応しているので、試してみよう!
さて実は、このプログラムはすでに英語化対応が実現できています。Eclipseからアプリケーションをロケール指定で実行するには、下記の手順を踏みます。
- [実行(R)]→[構成および実行(N)]メニューを選ぶ
- [引数]タブの[VM引数]にJavaコマンドのオプションを指定
ここで、前述のEclipseのロケール指定を行った起動方法と同様の内容を指定すると、ロケール指定を切り替えられます。
ロケールを指定する[java.util.Locale]を使うと……
次に、強制的に英語ロケールのプロパティファイルを読み込む例を示します。先ほどのソースコードKotowazaSample.javaを以下の桃色太字のように書き換えて実行してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
実行結果
MESSAGE1: Slow and steady wins the race.
MESSAGE2: Time is money.
MESSAGE3: When in rome, do as the romans do.
(5)の個所をご覧ください。Localeクラスを利用して、ロケールを明示的に英語として指定しています。ただし、強制的にロケールを指定することは、通常のプログラムでは、あまり必要がないと考えます。
地域の時差を表す[java.util.TimeZone]
java.util.Calendarと連動して動作する、時差を表すクラスとしてjava.util.TimeZoneクラスがあります(Calendarについては、前回の記事を参照ください。タイムゾーンに関する記載もあります)。
いま使っているOSのタイムゾーンを取得するプログラムでTimeZoneクラスの動作を見てみましょう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
実行結果
Asia/Tokyo
日本標準時
OS上でタイムゾーンが日本として設定されていると、上記のように日本のタイムゾーンになっていることが確認できます。
お金の情報が詰まっている[java.util.Currency]
通貨も国や地域によって異なるものの1つです。Java APIには、通貨を表すクラスとしてjava.util.Currencyクラスがあります。このクラスを使って、通貨に関する情報を取得できます。
日本の通貨の情報を見てみよう
日本の通貨の情報を取得するには、(6)のように Localeクラスを併用して記述します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
実行結果
\
デフォルトの小数点けた数:0
なんと、米国の通貨には小数点が!
米国の通貨を取得するには、(7)のように記述します。米国内では、小数点けた数が2けたと取得されることが確認できます。私たち日本の通貨においては、小数点以下は日常生活では利用しないので、あまり見慣れませんね。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
実行結果
USD
デフォルトの小数点けた数:2
フランスの通貨はちゃんとユーロになっている
同じように、フランスの通貨を取得しましょう。(8)のように記述します。フランスでは、ユーロが利用されているのですね。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
実行結果
EUR
デフォルトの小数点けた数:2
なお、このCurrencyクラスはほとんどのJavaプログラマーは利用したことがないと思います。
次回は、「文字」の常識について
次回は、「文字」についての常識を取り上げます。java.lang.Stringクラス、java.lang.Characterクラスで学ぶ文字列の概念や操作、パッケージjava.util.regexのクラスで学ぶ正規表現、今回の「国際化プログラミング」にも関係がある、パッケージjava.nio.charsetのクラスで学ぶ文字コードの基礎知識、Javaで使える文字エンコードの種類などについて学んでいきましょう。
筆者紹介
blanco Framework(コミッタ)
伊賀 敏樹(いが としき)
ハンドル:いがぴょん
1968年生まれ。現在、NTTデータ ビジネスブレインズ 第一SI事業部 ソリューショングループ所属。システム開発の技術支援などに従事する。仕事におけるJava言語とのかかわりは1998年から。 現在 blanco Frameworkというオープンソースによるソースコード自動生成タイプの開発フレームワーク提供に取り組んでいる。 趣味はヴァイオリン演奏。アマチュアオーケストラで演奏することもある。
ホームページ
いがぴょんの日記ウェブページv2(1996年から続けているWeb日記)
主な著書
「やさしく学ぶ基礎からのJDBC」
「Javaプログラミング[アプリケーション編]ステップアップラーニング」
Copyright © ITmedia, Inc. All Rights Reserved.