コードから情報を追い出せ!プロパティファイルの常識:プログラマーの常識をJavaで身につける(9)(3/3 ページ)
本連載は、Java言語やその文法は一通り理解しているが、「プログラマー」としては初心者、という方を対象とします。Javaコアパッケージを掘り下げることにより「プログラマーの常識」を身に付けられるように話を進めていきます。今回はプロパティファイルについて。もちろん、使ってますよね? ソースコードに設定情報をベタ書きすると、情報を書き換えるたびにコンパイルが必要ですしね。
国際化にも対応、java.util.ResourceBundleクラス
Java言語からプロパティファイルを扱う2つ目のAPIは、java.util.ResourceBundleクラスです。このクラスは以前の記事の「プロパティファイルを使った国際化」でも紹介していますね。java.util.Propertiesクラスとは異なり、java.util.ResourceBundleクラスでは国際化対応をするための機能が備わっています。
java.util.ResourceBundleクラスを利用したプロパティファイルの読み込みは下記のようになります。悩ましいことに、先に紹介したjava.util.Propertiesクラスとはプログラミングの仕方が異なります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
説明
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここで、ResourceBundleクラスがプロパティファイルの内容を読み込みます。「.properties」というファイル拡張子の部分が不要であるという点に注目してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この個所で、mykeyというキーに対応した値を取り出します。
プロパティファイルの配置場所
ResourceBundle.getBundleメソッドは、クラスパス上からプロパティファイルを読み込もうとします。そのため、sampleprop.propertiesファイルはクラスパス上に配置してください。
ここでは、ソースフォルダに配置することによりクラスパス上に配置されたことと同じ状況を作り出しています。
例外処理に注意!
さらに悩ましいことに、ResourceBundleクラスのメソッドのいくつかはjava.util.MissingResourceException例外を発生させます。この例外クラスは、java.lang.RuntimeExceptionを継承したクラスであるという点に注意を払う必要があります。RuntimeExceptionを継承した例外クラスは例外処理を思わず忘れてしまいがちだからです。
プロパティファイルが存在しない場合の例外
ここでも、参考までにいくつかの正常系ではない動作についてお伝えします。まず、プロパティファイルを読み込めなかった場合の例外には、下記のような例外が発生します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
クラスパス上にsampleprop.propertiesやsampleprop_ja.propertiesが見つからない場合に、この例外が発生します。
存在しないキーを指定した場合の例外
また、存在しないキーによる読み込みを試みると、下記のような例外が発生します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
どのような場合に例外が発生するのかについても、Propertiesクラスとは異なる点が多いので注意してください。
ソースコードから「情報」を追い出そう!
今回は、プロパティファイルやそれを扱うプログラミングを紹介してきました。どういうものかお分かりいただけましたでしょうか。
冒頭で紹介したように、プロパティに関するプログラミングは外部ファイルと関係が出てくる技術であるため、初心者にとっては少し難易度の高いものとなります。クラスパスに関する話題が出てくると、さらに難しいものになってしまいますね。
一方で、ソースコードからそれら固有の設定情報やメッセージなどを追い出すことができるメリットはかなり大きいです。ぜひ、プロパティファイルを扱う技術を身に付けて、活用できるようになっていきましょう!
筆者紹介
blanco Framework(コミッタ)
伊賀 敏樹(いが としき)
ハンドル:いがぴょん
1968年生まれ。現在、NTTデータ ビジネスブレインズ 第一SI事業部 ソリューショングループ所属。システム開発の技術支援などに従事する。仕事におけるJava言語とのかかわりは1998年から。 現在 blanco Frameworkというオープンソースによるソースコード自動生成タイプの開発フレームワーク提供に取り組んでいる。 趣味はヴァイオリン演奏。アマチュアオーケストラで演奏することもある。
ホームページ
いがぴょんの日記ウェブページv2(1996年から続けているWeb日記)
主な著書
「やさしく学ぶ基礎からのJDBC」
「Javaプログラミング[アプリケーション編]ステップアップラーニング」
Copyright © ITmedia, Inc. All Rights Reserved.