
プログラマーの常識をJavaで身につける (5)
国際化プログラミングの常識
NTTデータ ビジネスブレインズ
伊賀敏樹
2007/5/2
本連載は、Java言語やその文法は一通り理解しているが、「プログラマー」としては初心者、という方を対象とします。Javaコアパッケージを掘り下げることにより「プログラマーの常識」を身に付けられるように話を進めていきます(編集部注:Java言語の基礎を学びたい読者は、連載「Eclipseではじめるプログラミング」や連載「いまから始めるJava」をご参照ください)。
今回の記事では、「国際化プログラミング」に関する常識をJavaで身に付けていきます。国際化プログラミングと聞いて、いまひとつピンと来ない人もいるでしょう。実際には、国際化プログラミングは私たちの身近にあるものなのです。
そのうえ、国際化プログラミングの中に、ソフトウェアを開発するための基本的なノウハウの多くも含まれています。幸いJava言語では、国際化プログラミングのためのAPIが一通り提供されています。Java言語のAPIを通じて、国際化プログラミングを学び、プログラマーの常識を身に付けていきましょう。
実は、身近なところにある国際化対応プログラム
私たちの身近にある国際化対応されたプログラムとしてEclipseを取り上げてみましょう。
Javaプログラマーの多くが利用している Eclipseは、1つのプログラムで多くの国・地域・言語による利用に対応しています。Eclipseの国際化対応を確認してみましょう。
■ デフォルト設定でEclipseを起動してみると
まず、通常の設定で Eclipseを起動してみます。
![]() |
| 図1 デフォルト設定でEclipseを起動(日本語) |
メニューなどが日本語で表示されていますね。
■ Eclipseを「英語―米国」と設定して起動するには?
次に、Eclipseを「英語―米国」と設定を変更して起動してみましょう。Eclipseがインストールされたフォルダにeclipse.iniというファイルがありますので、以下の手順で編集してください。
![]() |
| 図2 Eclipseインストールフォルダ内のeclipse.iniファイル |
- eclipse.iniのバックアップを取る
- eclipse.iniファイルをメモ帳で下記のように編集(改行コードの処理の都合、以下のように表示される)

図3 eclipse.iniファイルのメモ帳による編集(英語)
- 編集後の状態(テキスト版)
-vmargs
-Xms40m
-Xmx256m
-Duser.language=en
-Duser.country=US
ワンポイント 「エディタによって改行コードの扱いは違う」 |
||
編集するエディタによって表示(改行の表示など)が異なりますが、慌てないでください。これは改行コードの扱いの差によるものです。
秀丸エディタというテキストエディタでは、以下のように表示されます。
|
さて、これでEclipseを起動してみます。すると、英語メニューに切り替わっています。
![]() |
| 図5 英語によるEclipseの起動 |
一部、「階層」などの用語が日本語のまま残っていますが、該当のタブをクリックすると、ちゃんと英語に切り替わると思います。
■ 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 | ||||||||
|
||||||||
プログラマーの常識をJavaで身につける バックナンバー
| Java Solution全記事一覧 |
ホワイトペーパー(TechTargetジャパン)
- 調査の難しい「OutOfMemoryError」事例、5選 (2010/3/11)
Java開発者が避けて通れないメモリ不足エラーの基本的な問題切り分け方法と発生につながる事例、対処法を解説 - 究極の問題解析ツール、逆コンパイラJD-Eclipseとは (2010/3/8)
ライブラリ内で例外が発生! そのクラスのソースコードを調べたい!! 自動で逆コンパイルしてくれる無料Eclipseプラグインがあります - いまさら聞けない「Webサービス」の常識 (2010/2/26)
昨今では企業システムでも使われる「Webサービス」の概念やJava標準のJAX-WSを紹介しJBoss WSでサンプルを作成 - Android 2.1の新機能で作る、美しく燃える“待ち受け” (2010/2/24)
新しく追加された、動く壁紙「Live Wallpaper」機能のサンプル動画を表示し、構成、設定ファイル、実装の仕方を解説します
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 New! |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜Java編〜
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |

| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |

| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |
| ◆ | 直属上司が海外にいるのエンジニアに見る 【実例】場所に捉われないワークスタイル |

| ◆ | 「仮想化工房」のマイスターが選んだのは VMware、Hyper-V、そしてVirtageだった! |
| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |











