タイトルBrowsing Mac OS X》純粋Java開発が可能になったMac OS X(その1)カテゴリーProjectBuilder/Interface Builder, Java, Browsing Mac OS X
作成日2001/3/28 16:8:23作成者新居雅行
Javaのブームは去ったとは言え、Javaの開発のメリットは決して薄れたわけではない。クロスプラットフォームということが当初は強くうたわれたが、現在のいちばんのメリットは開発言語として洗練されていて学習しやすいなどの特徴があることだろう。特に、バグが潜在しにく言語仕様という点や、Javaの標準ライブラリ(フレームワーク)の高機能さや明解さなども挙げられる。今までのOSのAPIは複雑になり過ぎた感じがするが、そうした点をオブジェクト指向をベースにスマートにまとめあげているのがJavaのフレームワークである。また、クロスプラットフォームという点は、稼動する環境ごとにAPIを学習する必要性はなくなるという点でも意味がある。もちろん、同一バイナリの完全互換はなかなか難しいにしても、ほとんどの部分に互換性があるということでも、十分に実用的にはクロスプラットフォームなのである。また、初期のJavaが速度の遅さによって実用度を低く見積もられるということにもなっていたのだが、現在のハードウエア環境では、Javaの実行速度も通常のアプリケーションとそん色ないと言えるところにまで来ている。
こうした、メリットのあるJava言語、そしてJavaの標準ライブラリを使ってMacintosh向けのアプリケーションを作成したいと思う人も決して少なくはない。ところが、Mac OS 9.1までで使えるJava VMは、JDK 1.1.8という今となっては恐ろしく古いものだった。もちろん、JDK 1.1.8までにサポートされた機能でも一般的なアプリケーションは作成できるとは言え、他のプラットフォームはすでにJava2対応していることからも、Macintosh環境でのJava2対応は待ち望まれていた。というか、Mac OS XでJava2対応したことから、「Mac OS Xが発売されたらJavaでプログラムを作ろう」というモチベーションにもなったのである。そうして、2001/3/24に発売されたMac OS Xでは、Java2 Ver.1.3をサポートして登場したわけだ。開発ツールとしてProject Builderなどは付属するが、JavaのコンパイラなどのJDKツールは、Mac OS Xの方ですでにインストールされるようになっており、Javaの実行環境はMac OS Xのコア機能でもある。また、ユーザインタフェースのコンポーネントのSwingは、Mac OS XのAquaユーザインタフェースをサポートしていることもあり、Mac OS X向けのアプリケーション作成という点でもJavaはネイティブなフレームワークに匹敵する面を持っているということになる。

□Project Builderを使った純粋Java開発
まずは、せっかく標準でついてきたProject Builderを使った純粋Javaの開発を行うということを紹介しよう。プログラムをテキストファイルに保存し、拡張子が.javaであることはもちろん変わりはない。そうしたファイルを新たに作成したり、あるいは別のところのものを追加するなど、プロジェクトの処理は開発言語にはあまり関係しない。今回の記事はこのあたりのProject Builderの基本的なことは割愛させていただく。なお、Interface BuilderでSwingのユーザインタフェースを設計できれば申し分はないのだが、それはできないので、基本的にProject Builderの作業になる。
Project Builderで、FileメニューからNew Project(Command+shift+N)を選択すると、新しいプロジェクトを作成するウィザードが出てくる。ウィザードとは言ってもステップは2ステップだけだ。最初のダイアログボックスでJava Applicationを選択し、次のダイアログボックスでは、プロジェクト名とプロジェクトを保存するフォルダを指定する。

◇Java Applicationのプロジェクトを用意する



最初にスケルトンとして作成されるJavaのプログラムは、AWTのウインドウに、Labelオブジェクトで単に文字列を表示するだけのものだ。Labelのコンストラクタの文字列を日本語に変更して、とにかくビルドして、実行してみよう。

◇スケルトンのプログラムに日本語文字列を入れてみた


ビルドは、左上のとんかちのアイコン、実行は左から3つ目のディスプレイのアイコンだ。ただし、ここでファイルを保存していないと、保存するかどうかのダイアログボックスが表示される。そこでSave Allボタンをクリックしてもいいが、常に、Command+Sで保存しておくのがうざったくなくていいだろう。なお、ビルドして実行は、Command+RでOKだ。
ではしっかり日本語が出るかと言うと、いきなり次のように文字化けしてしまうに違いない。日本語がでるべきところはすべて文字化けしていないだろうか?

◇日本語の文字が文字化けしてしまう


さっそく回避モードに移ろう。ソースファイルにいきなり日本語の文字列を打ち込んだときには、どうやらファイルへはShift-JISコードで保存されるようなのである。もっとも、ファイルのエンコードをメニューから切り替えることができるので、どうしても、UTF-8が必要だという場合などはエンコードを切り替えることはできる。今回は、そのままShift-JISコードで保存したとしよう。
そうすると、コンパイラにソースコードがShift-JISで記述されていることを、オプションを指定して与えてやらないといけないようである。コンパイラはJava2 SDKのjavacが使われているので、オプションは「-encoding x-sjis」と与えたい、そうしたコンパイル時の追加オプションを、Project Builderで指定することができるのである。これは、コンパイル自体を背後のスクリプトで動かしており、スクリプトの変数を外部から与えるような形式でさまざまなカスタマイズができるようになっているのだ。ProjectメニューのEdit Active Target(Command+option+E)を選択すると、次のように、プロジェクトのターゲットに関する設定を変更するパネルが出てくる。ここで、Build Settingsのタブをクリックして、パネルを呼び出す。

◇プロジェクトの設定を変更する


パネルのいちばん下の方に、Expert Build Settingsというところがあるので、Java_COMPILER_FLAGSの右側をクリックして、そこに「-encoding x-sjis」を記入してやる。

◇コンパイラにソースファイルはShift-JISで作成されていることを教える


こうして、ビルドして実行すると、めでたく日本語がAWTのFrameのウインドウの中に表示される。なお、ビルド結果は、プロジェクトのフォルダの中にあるbuildフォルダに作成されており、Mac OS Xのパッケージ形式になっている。つまり、それをダブルクリックすれば、実行できるアプリケーションの仕上がっているわけだ。

◇無事に日本語の文字列が表示された


なお、作成されるアプリケーションに関する諸設定は、プロジェクトに最初から作成されているMRJApp.propertiesというファイルでも行われている。ここは、Javaのプロパティファイルの形式、つまり、名前と値をイコールで結ぶ形式になっている。これについてはいろいろなオプションや追加のシステムプロパティなどを定義できるが、MRJAppBuilderのドキュメントを参照していただきたい。

◇作成されるアプリケーションに関する諸設定


このファイルで重要なのは、com.apple.mrj.application.mainという設定だ。容易に想像できるように、アプリケーションのmainメソッドのあるクラス名を指定するのである。通常はこのままでOKだが、たとえば、「package MyPack;」という宣言のあるソースの中の「class myApp」にmainメソッドがありそれを実行して起動させるのなら、イコールの右は「MyPack.myApp」のような指定になる。
(続く)
関連リンク