構成情報ファイルの書き換え

概要

Firefoxのテーマのinstall.rdfとchrome.manifest(またはcontent.rdf)は、作成したテーマのインストールに関する一連の設定を記述しています。

これらは作成したテーマを、Firefox内部で扱うために必要な事ですが、2chのスレッドなどで話を聞く限り、案外難しくってハマり込んで頓挫しがちです

なのでこの章で行う作業は、一旦飛ばして公開する直前に行ってしまうのも一つの手ですが、逆に公開をするまでには、キチんと設定を変更しておかないと、他のテーマと競合を起こして他人に迷惑を掛けることになる事を覚えておきましょう

install.rdfの書き換え

install.rdfはRDFというXML形式のファイルです。はっきり言って、Mozillaのテーマを作成する上では特に詳しく知る必要は無いと思いますので、何処を書き換えればいいのかだけここで理解して下さい

一応、今回は例として、fooという名前のテーマを作成する場合を考えてみましょう、あなたが書き換え無ければいけないところを色違いで表示しておきましたのでサッと見てみてください


<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:em="http://www.mozilla.org/2004/em-rdf#">

  <Description about="urn:mozilla:install-manifest">
    <em:name>テーマの表示名(今回は"Foo Theme"とします)</em:name>
    <em:id>自分のテーマのGUID、なんかのツールで生成してください</em:id>
    <em:internalName>テーマのファイル名</em:internalName>
    <em:version>テーマのバージョン(こっちの都合でスイマセンが、1.0以上推奨です)</em:version>
    <em:description>テーマの説明文</em:description>
    <em:creator>作者名(今回はno-nameとします)</em:creator>
    <em:homepageURL>テーマを公開しているページへのURL</em:homepageURL>

    <em:targetApplication>
      <Description>
        <!-- MozillaFirefoxのGUID、弄ってはいけません -->
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>2.0</em:minVersion>
        <em:maxVersion>2.5</em:maxVersion>
      </Description>
    </em:targetApplication>
  </Description>    
</RDF>

まずは簡単なところから書き換えていくのが定石なので上に上げたところを書き換えて、再びzip圧縮して拡張子をjarに変換、そしてインストールを行ってください

それで、テーマの名前や作者名を変更出来ていたなら成功です

GUIDって何?

Global Unique IDの略で、元々はMicrosoftがWindowsNT系のOSで使っているCOMという技術で使っている物です

簡単に説明すると、プログラムやDLLをOSが管理するために、ダブりの出ないID(というかIDにダブりなんで出ないよね)を振ってしまうための技術なんですが、今回はその応用、Mozillaのテーマも、そのIDを振って管理しています

IDの生成方法は基本的にはVisualStudioとかを使う事になるのですが、他にもフリーでツールは結構そろっているので、検索エンジン等を辿って見て下さい(WindowsならGUIDGen等)

RDFって何?

人間よりも、コンピューターが主に読み込むような情報を扱うためのXMLフォーマットです。Webサイトの更新情報を書き込むRSS等が、これを拡張して作られた物の代表としてあげられます。

ただ、結論から言うと、テーマの変更に必要な箇所以外は全く知る必要が無いので、調べて詳しくなっても意味がありません。一応、日本語解説サイトもあるのですが、無視しておいて結構です

マニフェストファイルの書き換え

マニフェストファイルとはFirefoxのテーマではchrome.manifestというファイル名になっているファイルで、テーマ内部のファイルの配置に関する情報を記述しています。

かつてはこの様な情報はcontent.rdfに記述していたのですが、Firefox1.5でmanifestファイルでの記述法が登場し、段階的にこちらの方に置き換えるようになっているので、こちらの方を先に解説しておきます

まず最初に解説しておかないといけないのは、ファイル構成を弄らなくて良いときはこのファイルの編集は必要ないということです。つまり最初に何にも分からないときはこのトピックは飛ばしてしまって良いです。というよりはそうする事をお勧めいたします


chrome.manifestファイルの中は大体以下の様になっています


skin	communicator foo jar:chrome/foo.jar!/communicator/
skin	global       foo jar:chrome/foo.jar!/global/
skin	browser      foo jar:chrome/foo.jar!/browser/
skin	inspector    foo jar:chrome/foo.jar!/inspector/
skin	mozapps      foo jar:chrome/foo.jar!/mozapps/
skin	help         foo jar:chrome/foo.jar!/help/

ぞれぞれの行がhelpの装飾を行うファイルがあるフォルダは何処か?等を示しており、foo.jar!の最後にある感嘆符(!)はzip圧縮されたものなので、その内部を探してくれ、という事を表しています

content.rdfの書き換え

content.rdfの書き換え方をここで解説しますが、content.rdfは現在では古い方法となっています。そのため、参考にしたテーマ等が既にmanifestファイルでテーマの構成情報を扱っており、内部にcontent.rdfを持っていない場合はこのトピックは読み飛ばしてください

content.rdf内部の書き換えるべき所を少し解説

em:idテーマに与えたGlobal Unique IDを入れます、なんらかの生成ツールで取得してください
em:internalNameテーマの内部名(詳しくは後述しますのでここはパス)
em:minVersionこのテーマの動く一番低いバージョンを表します
em:maxVersionこのテーマの動く一番高いバージョンを表します

ここらへんは、間違うとインストールできなくなることが多々あるので注意、慣れるまでは一カ所変更しては動作を確認した方が良いですね(em:inertnalNameは別、次に解説するinstall.rdfと一緒に書き換えてください)

ここらへんも書き換えてしまうと、結果は次のようになりますね


<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:em="http://www.mozilla.org/2004/em-rdf#">

  <Description about="urn:mozilla:install-manifest">
    <em:name>Foo Theme</em:name>
    <em:id>自分のテーマのGUID、なんかのツールで生成してください</em:id>
    
    <em:internalName>テーマのファイル名</em:internalName>
    <em:version>1.0</em:version>
    <em:description>テーマ作成解説用に、sample themeを書き換えています</em:description>
    <em:creator>no-name</em:creator>
    <em:homepageURL>http://(以下略</em:homepageURL>

    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>2.0</em:minVersion>
        <em:maxVersion>2.5</em:maxVersion>
      </Description>
    </em:targetApplication>
  </Description>    
</RDF>

内部を変更

最後にはハマりがちなのが、Firefox内部でのテーマの内部名

これが変更を間違うと困るのに一番間違いやすい箇所なので、慎重に作業をしていきましょう

まずは、テーマの内部名を変更します。変更箇所はem:inertnalNameタグ内部のみです


<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:em="http://www.mozilla.org/2004/em-rdf#">

  <Description about="urn:mozilla:install-manifest">
    <em:name>Foo Theme</em:name>
    <em:id>自分のテーマのGUID、なんかのツールで生成してください</em:id>
    
    <em:internalName>foo</em:internalName>
    <em:version>1.0</em:version>
    <em:description>テーマ作成解説用に、sample themeを書き換えています</em:description>
    <em:creator>no-name</em:creator>
    <em:homepageURL>http://(以下略</em:homepageURL>

    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>2.0</em:minVersion>
        <em:maxVersion>2.5</em:maxVersion>
      </Description>
    </em:targetApplication>
  </Description>    
</RDF>

そしてテーマの内部名に合わせてcontent.rdfの該当箇所を変更していきます


<?xml version="1.0"?>

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:chrome="http://www.mozilla.org/rdf/chrome#">

<RDF:Seq about="urn:mozilla:skin:root">
  <RDF:li resource="urn:mozilla:skin:foo"/>
</RDF:Seq>

<RDF:Description about="urn:mozilla:skin:foo"
    chrome:name="foo">
  <chrome:packages>
    <RDF:Seq about="urn:mozilla:skin:foo:packages">
      <RDF:li resource="urn:mozilla:skin:foo:communicator"/>
      <RDF:li resource="urn:mozilla:skin:foo:global"/>
      <RDF:li resource="urn:mozilla:skin:foo:browser"/>
      <RDF:li resource="urn:mozilla:skin:foo:mozapps"/>
      <RDF:li resource="urn:mozilla:skin:foo:help"/>
    </RDF:Seq>
  </chrome:packages>
</RDF:Description>

  <RDF:Description about="urn:mozilla:skin:foo:communicator" chrome:skinVersion="1.5" />
  <RDF:Description about="urn:mozilla:skin:foo:global" chrome:skinVersion="1.5" />
  <RDF:Description about="urn:mozilla:skin:foo:browser" chrome:skinVersion="1.5" />
  <RDF:Description about="urn:mozilla:skin:foo:mozapps" chrome:skinVersion="1.5" />
  <RDF:Description about="urn:mozilla:skin:foo:help" chrome:skinVersion="1.5" />
</RDF:RDF>

ここまでの部分を書き換えたら、圧縮し直してから、インストールしてみてください。これでfooというテーマとして、ベースにしたテーマとMozilla内で別扱いになります。

あ、ちなみに、文字コード宣言を省いているので、XMLの仕様上、文字の保存形式はUTF-8か、UTF-16必須です、RDFの場合はUTF-8が推奨されているので、こちらで保存しておくことをお勧めいたします

(というか文字コードを変えてcharsetをXML宣言に加えても動かなくなるだけなんだよね…)

クリエイティブ・コモンズ・ライセンス

このworkは、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。