X-0000-3 XULアプリの開発環境を整える・Mac OS X編

Windows環境しか使ったことのない僕がMac OS X上でデバッグを行うにあたって調べたXULアプリ開発のための支援情報をまとめておきます。MacでXULアプリケーションを開発される方や、Mac上でのみ起こる問題のデバッグに手を焼いている方に参考にして頂けましたら幸いです。

パッケージの中身を見る

Mac向けのMozillaは、ダウンロードしてファイルを展開するとファイルが一つだけ出てきて、それをダブルクリックするだけでMozillaを起動することができます。

この動作はMacのユーティリティの機能の一つである仮想ディスク機能を使って実現されていて、「たった一つだけのファイル」に見えているものは、「パッケージ」という仮想ディスクのようなものになっています。ファイルの上でControl-クリックしてコンテキストメニューを出し、パッケージの内容を表示を選択すれば、そのパッケージの中に隠されている多数のファイルを見ることができます。

中身を見ると分かりますが、実際のファイル構成は他のプラットフォームのMozillaとほとんど変わりません。ちなみに、拡張機能をインストールする時に保存先を「プロファイル」ではなく「プログラムディレクトリ」にした場合は、このパッケージの中にファイルがインストールされます。

コンソールモード――dump()で出力したメッセージを見る

Windowsでは-consoleオプションを付ければコンソール付きでMozillaを起動できますが、Macでは基本的に「起動オプション」というものがありません。ですからMac OS9までの環境では、コンソール付きビルドという専用のバージョンのMozillaを使わなくてはいけません……が、Mac OS Xは内部がFreeBSDなので、他のUnix系プラットフォームと同じようにターミナルを使ってコンソールモードでMozillaを起動できます

まずはターミナルを起動します。ハードディスク内を アプリケーションユーティリティ と辿って、 ターミナル をダブルクリックして起動します。すると、Windowsで云うところのMS-DOSプロンプト(コマンドプロンプト)のようなウィンドウが表示されます。

次に、前述の手順で Mozilla(Mozilla.app) あるいは Firefox(Firefox.app) のパッケージの中身を表示し、 ContentsMacOS と辿って mozilla-bin(Firefoxの場合は firefox-bin)という名前のファイルを探し出します。

ファイルが見つかったら、今度はそれを先ほどのターミナルのウィンドウにドラッグ&ドロップします。すると、ターミナルにファイルのフルパスが自動的に入力されます(このあたりの機能はWindowsのDOSプロンプトと似ています)。

後は、EnterするだけでMozillaが起動します。こうしてターミナルからMozillaを起動すると、dump()メソッドに渡した文字列がターミナルに出力されるようになります。(当然のことながら、あらかじめabout:configなどを使ってbrowser.dom.window.dump.enabledtrueに設定してdump()メソッドを有効化しておく必要があります)

ダブルクリックだけでMozillaをコンソールモードで起動するためのシェルスクリプトを作る

Mac OS Xでのシェルスクリプトの作り方をそのまま利用して、Windowsのバッチファイルやコマンドラインオプション付きのショートカットのように「ダブルクリックするだけでMozillaをコンソールから起動する」簡単なスクリプトを作ることができます。Firefoxの場合を例にとって簡単に解説しましょう。

まず テキストエディット を起動して、以下のように記述します。

#!/bin/sh
/Users/piro/Desktop/Firefox.app/Contents/MacOS/firefox-bin

ここでは、ユーザー名「piro」でログイン中、デスクトップに「Firefox」を無造作に置いているものとします。フルパスは前述のターミナルへの入力で使ったものと同じものですので、ターミナルからコピー&ペーストして構いません……というより、ミスを防ぐためにもコピペするのがベターです。

リッチテキストモードになっている場合は、メニューの フォーマット標準テキストにする を選択してシンプルなテキストファイルにして下さい。

ここまでできたら、ファイル名を付けてこのスクリプトを保存します。ファイル名は何でも構いませんが、最後に必ず .command を付けて下さい。具体例を示すと、Firefox with Terminal.commandという風な感じです。この名前で保存しようとすると、「拡張子.txtを付けるか、.txtを付けずに.commandをそのまま使うか」を問い合わせてきますので、ここでは .txtを付けない と答えて下さい。(別の名前で保存してから拡張子を.commandに変更しても構いません)

これでスクリプトのファイルができあがったのですが、このままではまだ実行できません。ターミナルを使ってこのファイルに実行権限を設定する必要があります。

ターミナルを起動し、chmod 755 " (最後に半角スペースとダブルクォーテーション)と入力してから、先ほど作ったスクリプトファイルをドラッグ&ドロップします。するとダブルクォーテーションの後にファイルのフルパスが入力されます。それから、もう一度ダブルクォーテーションを入力してEnterします。例えばデスクトップにファイルを保存した場合なら、以下のような具合です。

chmod 755 "/Users/piro/Desktop/Firefox with Terminal.command"

これで全ての準備が完了しました。あとはスクリプトファイルをダブルクリックするだけで、自動的にターミナルが起動し、ターミナル経由でFirefoxが起動するようになります。また、ここまで設定した後であれば、スクリプトのファイル名は好きに変えて構いません。

zip/unzipコマンド

Mac OS Xではターミナルのコマンドを使ってZIPアーカイブを作ったり展開したりできます。ターミナルから直接使用しても良いでしょうが、僕は以下のような内容のシェルスクリプトをそれぞれ用意してデバッグに役立てています。

#!/bin/sh
cd "/Users/piro/Library/Firefox/Profiles/xxxxxx/extensions/{0B0B0DA8-08BA-4bc6-987C-6BC9F4D8A81E}/chrome/"
unzip tabextensions.jar
exit
#!/bin/sh
cd "/Users/piro/Library/Firefox/Profiles/xxxxxx/extensions/{0B0B0DA8-08BA-4bc6-987C-6BC9F4D8A81E}/chrome/"
zip -r tabextensions.jar content locale skin
chmod -c 644 tabextensions.jar
exit