ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

下準備(1)

Yahoo! Widget (やふーうぃじぇっと)

Widgetウィジェット,ウィジット)は、小型の装置や仕掛け、部品、名前がない(あるいは思い出せないような)規格品。
転じて特定の機能を持った簡単なグラフィカルアプリケーションの総称として使われる。
…長いな…
一般的なソフトウェアがプラモデルなら、ウィジェットは紙飛行機。
手軽に作れる、使える。うまい人が作ればプラモより格好良く出来るけど、だめな人が作るとゴミになる。

Yahoo! Widgetは、Yahoo!が提供するウィジェットエンジンを使ってアプリをデスクトップアプリを作る。
Javascript で書けるので入り易いらしい。

参考
http://www.itmedia.co.jp/news/articles/0711/30/news089.html
http://d.hatena.ne.jp/n_shuyo/20070413/widgets

開発環境

まずはウィジェットエンジンのダウンロード。
今回ダウンロードされたのは、widgetja_4.5.4-2009.01.15.01.dmg でした。
http://widgets.yahoo.co.jp/download/


続けて開発環境をゲット。
以下から「ウィジェットコンバーター」を入手すればOK。
http://widgets.yahoo.co.jp/workshop/

CUI命なのでコマンドラインツールでも良いところですが、とりあえずGUI操作もできるウィジェット版をげと。



Mac の widget ファイルは

~/Documents/Widgets/

に格納される。これはWindowsのマイドキュメント下と同じかな。
で、利用中の Widgetは、Library/Application Support/ の下に同名のディレクトリが作成されるぽい。

~/Library/Application\ Support/Yahoo\!\ Widget\ Engine/Widgets/

Libraryの下ってごちゃごちゃしてるからあんまり好きく無いんですよね…

こどもおきた

2日経ってから続き。
Widget のディレクトリ構成は以下。

アプリ名/
    Contents/
        *.kon
        *.js
        ディレクトリ/画像などメディアファイル

メインとなるのは *.kon ファイル。こいつはXMLで書く。
動作させたい処理は Javascript で書いて、表示したい画像とか Flash を配置して、それらのパスを XML に記載してあげる感じかな?
ウィジェットコンバータはそれらの複数ファイルを *.widget 形式にまとめてくれるだけ。

なので *.kon ファイルだけ作ってしまえば Hello world は完了。とりあえずその辺を目指して寝るバイ。

  • hello.kon
<?xml version="1.0" encoding="UTF-8"?> 
<widget> 
    <debug>on</debug> 
    <window> 
        <name>main_window</name> 
        <title>hello</title> 
        <height>30</height> 
        <width>300</width> 
        <visible>true</visible> 
    </window> 
    <text> 
        <name>myText</name> 
        <color>#FF0000</color> 
        <size>18</size> 
        <alignment>left</alignment> 
        <vOffset>25</vOffset> 
        <hOffset>2</hOffset> 
    </text> 
    <timer> 
        <name>timer</name> 
        <interval>1</interval> 
        <ticking>true</ticking> 
        <onTimerFired> 
            var cpuLoad = system.cpu.activity; 
            myText.data = cpuLoad + "% CPU load"; 
            myText.opacity = cpuLoad * 2.55; 
        </onTimerFired> 
    </timer> 
</widget>