WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

Opera Widgets の作り方 : パッケージング

今回は、Opera Widget の作り方の仕上げとして、思いっきり手抜きをしてきた "config.xml" の詳しい書式と、実際に Opera Widget を配布するためのパッケージングの方法、さらに Widget の自動インストールを利用するための Apache サーバーの設定方法などをご紹介します。

config.xml の書式

これまで使ってきた "config.xml" は Widget のサイズだけを記述した非常に簡素なものでした。それだけでも Widget は動作するようですが、本当はもっとたくさんの項目があり、Widget の配布時には必須とされているものもあります。ここではそれらの詳細をご紹介します。

まず、記述するべきと思われる項目すべてを記述した "config.xml" を以下に示します。config.xml の仕様書にはもっと多くの要素が定義されているのですが、まだベータ版で仕様が固まっていない可能性もあるので、Opera 謹製の Widget で使用されていないものは省略しています。

<?xml version="1.0" encoding="utf-8"?>
<widget>
  <widgetname>Tiny Memo</widgetname>
  <description>簡単なメモを保存するための Widget です。</description>
  <id>
    <host>www.sourcewalker.com</host>
    <name>Tiny Memo</name>
    <revised>2006-03-04</revised>
  </id>
  <width>320</width>
  <height>240</height>
  <icon>favicon.ico</icon>
  <author>
    <name>歩行者</name>
    <email>hoge@sourcewalker.com</email>
    <link>http://wiki.livedoor.jp/sourcewalker/</link>
    <organization>SourceWalker.com</organization>
  </author>
</widget>

"config.xml" はもちろん XML ファイルですので、XML の文法に沿って記述します。ルート要素は必ず widget にしてください。ここでは説明の都合上、widget の子要素のうち他の要素のコンテナとなっているものを「セクション」、テキストを保持しているものを「値」と呼ぶことにします。それでは、widget の子要素それぞれをご紹介していきます。

widget 直下の値

まずは、どのセクションにも含まれない値をご紹介します。これらは Widget 自体に関する情報が主です。

widgetname
Widget の名前を指定します。有効な DOMString であればよいようなので、日本語でもかまわないと思います。(必須)
description
Widget の説明を指定します。こちらも日本語 OK です。(省略可能)
width
Widget ウインドウの幅をピクセル数で指定します。(省略可能)
height
Widget ウインドウの高さをピクセル数で指定します。(省略可能)
icon
Widget パネルに表示されるアイコンを指定します。(省略可能)

id セクション

id セクションは必須のセクションです。Widget を一意に識別するために以下の値を記述します。

host
Widget がダウンロードできるホストの FQDN を指定します。必須です。ドメインを持っていない場合はどうするんでしょうね・・・(^^;
name
上記のホスト内でユニークな Widget の名前を指定します。日本語が許容されるかどうかは不明です。(必須)
revised
更新日付を W3CDTF フォーマットで指定します。YYYY-MM-DD で記述するのが無難だと思います。(省略可能)

author セクション

author セクションは省略可能です。Widget 作者に関する以下の値を記述します。

name
作者の名前を指定します。日本語 OK です。(推奨)
organization
作者が所属する組織を指定します。日本語 OK です。(省略可能)
email
作者のメールアドレスを指定します。(省略可能)
link
作者のホームページなどの URL を指定します。(省略可能)

だいたい以上のような要素を記述すれば、配布する際にも問題はないようです。割愛した要素については、config.xml の仕様書を参照してください。

なお、"config.xml" を作成する際は文法の間違いに注意してください。"config.xml" に間違いがあってもエラーなどは表示されないので、最後まで間違いに気づかない可能性があります。まずは別の名前で作成して Opera で表示してみると良いと思います。そうすれば通常のファイルとして処理されるので、XML としての文法エラーは表示してくれます。

Widget の配布

Opera Widget を配布するときは、関連するファイルをすべてまとめて .zip 形式でアーカイブします。それだけで配布する準備は OK です。実際に Widget を配布するには、Opera の Widget 配布ページに投稿するか、もしくは自分のサーバーで配布するかの 2 つの方法があります。

Opera のカスタマイズページに投稿する

Opera のカスタマイズページに投稿するには、まずMy Opera にサインアップする必要があります。My Opera のユーザーになったら、こちらのページから投稿できます。・・・とか書いてますが、実は私もまだ My Opera のユーザーになっていませんので、実際にやってみたわけではないです(^^ヾ。どなたか挑戦してみてください。

自分のサーバーで配布する

自分のサーバーで配布する場合は、なんらかの方法で .zip ファイルの MIME タイプを "application/x-opera-widgets" に設定する必要があります。もし Web サーバーの設定が変更できるなら、それが一番簡単です。基本的には .zip ファイルに対して上記の MIME タイプを割り当ててやればよいのですが、すべての .zip ファイルを Widget として認識させるのはあまり好ましくないと思います。そこで、Widget を格納するディレクトリをどこか一箇所に固定し、以下のように指定するとよいでしょう。

<Directory /var/www/www.sourcewalker.com/widgets>
    AddType application/x-opera-widgets .zip
</Directory>

これで "/var/www/www.sourcewalker.com/widgets" ディレクトリの中にある .zip ファイルだけが Widget として認識されます。ほかに、.htaccess を用いても同様の設定が可能かと思います。

もし Web サーバーの設定が変更できないなら、CGI などを経由することで MIME タイプを指定することができます。試していませんが、 HTTP レスポンスヘッダの "Content-type" に上記の MIME タイプを、"Content-length" に .zip ファイルのファイルサイズを指定し、ボディとして .zip ファイルの内容を送信すればよいと思います。詳細は CGI の解説ページなどを参照してください。m(_ _)m

以上のいずれかの方法で MIME タイプを設定できたなら、後は .zip ファイル(もしくは CGI)へのリンクを Web ページに設置するだけです。 Opera 9 でそのリンクをクリックすると、Widget データであることが認識され、自動でインストールされます。

以上、3 回にわたって Opera Widget の作り方をご紹介しました。作成から公開まで、とても手軽にできるようになっていると思います。こんな記事を書いておけば、きっと誰かが便利な Widget を作ってくれるに違いない!と期待しておりますので(他力本願)、皆さんぜひ挑戦してみてください!(^^)

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles