【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
Java目線でコンパイラの仕組みをのぞいてみよう!

プログラマーの常識をJavaで身につける (5)

国際化プログラミングの常識


NTTデータ ビジネスブレインズ
伊賀敏樹
2007/5/2


本連載は、Java言語やその文法は一通り理解しているが、「プログラマー」としては初心者、という方を対象とします。Javaコアパッケージを掘り下げることにより「プログラマーの常識」を身に付けられるように話を進めていきます(編集部注:Java言語の基礎を学びたい読者は、連載「Eclipseではじめるプログラミング」や連載「いまから始めるJava」をご参照ください)。

今回の主な内容

実は、身近なところにある国際化対応プログラム
Javaプログラミングの国際化について
プロパティファイルを使った国際化
  [java.util.ResourceBundle]

ロケールを指定する[java.util.Locale]を使うと……
地域の時差を表す[java.util.TimeZone]
お金の情報が詰まっている[java.util.Currency]

次回は、「文字」の常識について

 今回の記事では、「国際化プログラミング」に関する常識をJavaで身に付けていきます。国際化プログラミングと聞いて、いまひとつピンと来ない人もいるでしょう。実際には、国際化プログラミングは私たちの身近にあるものなのです。

 そのうえ、国際化プログラミングの中に、ソフトウェアを開発するための基本的なノウハウの多くも含まれています。幸いJava言語では、国際化プログラミングのためのAPIが一通り提供されています。Java言語のAPIを通じて、国際化プログラミングを学び、プログラマーの常識を身に付けていきましょう。

 実は、身近なところにある国際化対応プログラム

 私たちの身近にある国際化対応されたプログラムとしてEclipseを取り上げてみましょう。

 Javaプログラマーの多くが利用している Eclipseは、1つのプログラムで多くの国・地域・言語による利用に対応しています。Eclipseの国際化対応を確認してみましょう。

デフォルト設定でEclipseを起動してみると

 まず、通常の設定で Eclipseを起動してみます。

図1 デフォルト設定でEclipseを起動(日本語)
図1 デフォルト設定でEclipseを起動(日本語)

 メニューなどが日本語で表示されていますね。

Eclipseを「英語―米国」と設定して起動するには?

 次に、Eclipseを「英語―米国」と設定を変更して起動してみましょう。Eclipseがインストールされたフォルダにeclipse.iniというファイルがありますので、以下の手順で編集してください。

図2 Eclipseインストールフォルダ内のeclipse.iniファイル
図2 Eclipseインストールフォルダ内のeclipse.iniファイル
  1. eclipse.iniのバックアップを取る
  2. eclipse.iniファイルをメモ帳で下記のように編集(改行コードの処理の都合、以下のように表示される)
    図3 eclipse.iniファイルのメモ帳による編集(英語)
    図3 eclipse.iniファイルのメモ帳による編集(英語)

  3. 編集後の状態(テキスト版)
    -vmargs
    -Xms40m
    -Xmx256m


    -Duser.language=en
    -Duser.country=US

ワンポイント 「エディタによって改行コードの扱いは違う」

編集するエディタによって表示(改行の表示など)が異なりますが、慌てないでください。これは改行コードの扱いの差によるものです。 秀丸エディタというテキストエディタでは、以下のように表示されます。

図4 eclipse.iniファイルの秀丸エディタによる編集
図4 eclipse.iniファイルの秀丸エディタによる編集

 さて、これでEclipseを起動してみます。すると、英語メニューに切り替わっています。

図5 英語によるEclipseの起動
図5 英語によるEclipseの起動

 一部、「階層」などの用語が日本語のまま残っていますが、該当のタブをクリックすると、ちゃんと英語に切り替わると思います。

Eclipseを「フランス語―フランス」と設定して起動

 次に、フランス語で起動してみます。英語のときと同様に、今度は以下のように設定します。

-vmargs
-Xms40m
-Xmx256m


-Duser.language=fr
-Duser.country=FR

 すると、フランス語メニューに切り替わっています。

図6 フランス語によるEclipseの起動
図6 フランス語によるEclipseの起動

 Eclipseを言語を切りかえて起動してみましたが、いかがでしたか? さながら、デスクトップ上の仮想世界旅行ですね。ここで確認したかったことは、「単一のプログラムで多くの地域・言語に対応できるものが存在する」ということです。これは、国際化プログラミングという取り組みの結果、初めて実現できていることなのです。

注意!!

実験が終わったら、eclipse.iniを変更前の状態に戻してください。 

起動オプションによって言語や地域を切り替える

 では、言語を切り替えてEclipseを起動した際に設定した-Duser.languageなどの記述について簡単に説明しておきます。

 まず、eclipse.iniファイルの記述内容は、Eclipseを経由して最終的には、Java実行環境に引き継がれます。

 -Dなどと記述されている内容は、Javaアプリケーション起動ツール(javaコマンド)のオプション指定方法と一致しています。どのように記載するかについての詳細は、「java - Java アプリケーション起動ツール(Windows版)」の「システムプロパティの値を設定」から読み取れます。

編集部注javaコマンドについて詳しく知りたい読者は、Java Solution FAQの「javaコマンドを使いこなす」をご参照ください

 そして、-Dオプションで指定された値は、システムプロパティとしてJavaへと引き継がれます。プログラミング言語上では、java.lang.System#getProperties()などから参照できます。

編集部注System#getProperties()について詳しく知りたい読者は、Java TIPSの「VMが脆弱性のあるバージョンかチェックするには?」をご参照ください

 getProperties()にuser.languageについて記載されていませんが、これは別途「Java国際化FAQ」というサン・マイクロシステムズから提供されているドキュメントに記載があります。

 このように、-Dオプションで指定された値はJavaのデフォルトロケール(既定の地域・言語)として、Java言語のいろいろなAPIへと作用するようになっていたのです。このように、いくつもの層を経て、これら言語の切り替えが実現されていたのです。

ISOの言語コードと国コード

 -Duser.languageで指定したen、frは「言語」を表す値です。また、-Duser.countryで指定したUS、FRは「」を表す値です。

 Javaにおいてどのような値を設定するのかについては、java.util.Localeクラスのドキュメントに説明が記載されています(参考として、旧バージョンの1.4.2のドキュメントへのリンク)。

 これら言語や国を表す文字列は、Javaで利用できるものであるとともに、国際的な標準(ISO)として定められているものでもあります。関連するISOの標準については、Localeクラスのドキュメント上に記載のある下記のリンク先の記述が、全体像を把握しやすいと思います。

編集部注ISOについて詳しく知りたい読者は、@IT Insider's Computer Dictionaryの[ISO (International Organization for Standardization)]をご参照ください
 
1/3

 Index
第5回 国際化プログラミングの常識
Page1
実は、身近なところにある国際化対応プログラム
  デフォルト設定でEclipseを起動してみると
  Eclipseを「英語―米国」と設定して起動するには?
  ワンポイント 「エディタによって改行コードの扱いは違う」
  Eclipseを「フランス語―フランス」と設定して起動
  起動オプションによって言語や地域を切り替える
  ISOの言語コードと国コード
  Page2
Javaプログラミングの国際化について
  Javaの国際化の概要
  国際化は「ほどほど」に!
  文字列をソースコードから外部ファイルへ抽出[java.util.ResourceBundle]
プロパティファイルを使った国際化[java.util.ResourceBundle
  国際化したpropertiesファイルを作る
  Page3
  ResourceBundleクラスの利用例
  すでに英語も対応しているので、試してみよう!
ロケールを指定する[java.util.Locale]を使うと……
地域の時差を表す[java.util.TimeZone]
お金の情報が詰まっている[java.util.Currency]
  日本の通貨の情報を見てみよう
  なんと、米国の通貨には小数点が!
  フランスの通貨はちゃんとユーロになっている
次回は、「文字」の常識について






Java Solution全記事一覧



ホワイトペーパーTechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています