JavaFXでデスクトップを遊ぶ「WidgetFX」


JavaFX+NetBeansでWidgetFXアプリを作るには


JavaFXでデスクトップを遊ぶ「WidgetFX」(後編)

小林 秀樹
2009/11/19

キッチン・タイマ・ウィジェットもあるよ

 誌面の都合上、「Hello! World」ウィジェットの仕組みについて詳細まで解説できないのが残念ですが、もう1つサンプルとして、キッチン・タイマのウィジェットを作ってみたので、ぜひそちらもご覧になってください(図13)。

 このサンプルでは、タイマの分と秒を、ユーザーがスライダー・コントロールを使って設定できるようにしており(図14)、Integer型の値で「IntegerProperty」というクラスを使って設定します。

図13 キッチン・タイマ・ウィジェット 図14 キッチン・タイマのコンフィグレーション・ダイアログ
図13 キッチン・タイマ・ウィジェット 図14 キッチン・タイマのコンフィグレーション・ダイアログ

 下の「launch」アイコンをクリックすると、ウィジェットを実行できます。

Launch Widget

 KitchenTimerWidgetのNetBeansプロジェクトは、ここからダウンロードできます。見た目も機能もまだ十分ではないので、ぜひとも、いまより洗練させてみてください。

自分で作ったウィジェットを公開するには

 せっかく苦労して開発した自信作のウィジェットは、自分1人で使うだけでなく、誰かほかの人にも使ってほしいものです。誰かに使ってもらって喜んでくれたり、感想などフィードバックが得られたら、それはとてもうれしいものです。

 そこで、ここではウィジェットを公開する方法を説明します。WidgetFXのウィジェットは、Java Web Startで公開・配布しますが、そのためにはJNLPファイルが必要です。JNLPファイルはXMLで記述しますが、それを一から書いたのでは大変ですが、安心してください。NetBeansが自動で生成してくれます。

 先ほど紹介した手順でウィジェットを開発したのであれば、プロジェクトをビルドした際に、プロジェクト・フォルダの下に「dist」というフォルダができているはずです。その中に「プロジェクト名.jnlp」という名前のファイルが生成されています。KitchenTimerWidget の例では、distフォルダに以下のものが生成されていました。

図15 生成されたdistフォルダとその中身
図15 生成されたdistフォルダとその中身

 いろいろと生成されていますが、ウィジェットの公開に必要なものは、KitchenTimerWidget.jarとKitchenTimerWidget.jnlp、そしてlibフォルダ(とその中身)だけです。これらのリソースを公開用のWebサーバに配置します。例えば、「KitchenTimerWidget」というディレクトリをWebサーバに作成して、その下にこれらのリソースをコピーすれば、めでたく公開となります。

 ただし、KitchenTimerWidget.jnlpは少しだけ編集しなければいけないので、以下の例を参考に修正してください。

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://www7b.biglobe.ne.jp/~fooami/KitchenTimerWidget/"
href="KitchenTimerWidget.jnlp"><!--【1】-->
<information>
<title>KitchenTimerWidget</title>
<vendor>Foo am I?</vendor>
<homepage href="http://www7b.biglobe.ne.jp/~fooami/KitchenTimerWidget/"/><!--【2】-->
<description>KitchenTimerWidget</description>
<offline-allowed/>
</information>
<resources>
<j2se version="1.6+"/><!--【3】-->
<extension name="JavaFX Runtime" href="http://dl.javafx.com/1.2/javafx-rt.jnlp"/>
<jar href="KitchenTimerWidget.jar" main="true"/>
<jar href="lib/JFXtras-0.5.jar"/>
<jar href="lib/jnlp.jar"/>
<jar href="lib/WidgetFX-API.jar"/>
</resources>
<application-desc main-class="com.sun.javafx.runtime.main.Main">
<argument>MainJavaFXScript=kitchentimerwidget.Main</argument>
</application-desc>
<update check="background">
</jnlp>

 【1】の<jnlp>要素のcodebase属性の値、および【2】の<homepage>要素のhref属性の値を、公開するリソースを配置したディレクトリのURLにします。【3】の<j2se>要素のversion属性の値を「1.6+」にします(2009年9月の原稿執筆時現在)。そのようにして配置したら、以下のHTMLタグを、自身のホームページやブログに張り付けます。赤字の部分は、自身のウィジェットのJNLPファイルのURLに変えてください。

<a href="http://widgetfx.org/dock/launch.jnlp?arg=http://www7b.biglobe.ne.jp/~fooami/KitchenTimerWidget/KitchenTimerWidget.jnlp">
<img src="http://widgetfx.googlecode.com/svn/site/images/WidgetFX-launch-icon.png"
alt="Launch Widget" width="82" height="25" longdesc="Click to launch this widget." />
</a>

 これでWidgetFXのLaunchボタンを表示して、公開できますが、ウィジェットがローカル・コンピュータのリソースやネットワークへのアクセスを必要とする場合、JNLPファイルへの権限付与の記述と、JARファイルへのデジタル署名が必要となります。これについて詳しく知りたい読者は、ここを参照してみてください。

コラム 「良いウィジェットを作るコツ」

前回紹介したStephen Chin氏いわく、「『小さくて有益な情報を提供する』『パフォーマンスを意識して設計する』といったことが、しっかり意識して作られたものが良いウィジェットなのだ」とのことです。

「小さくて有益な情報を提供する」というのは、ウィジェットが小さなものなので、ちゃんとそれに収まり、それでも有益・便利な情報や機能を提供するということです。

「パフォーマンスを意識して設計する」というのは、ウィジェットが常にデスクトップ上で実行していても、ユーザーの本来の仕事を邪魔しないように、気を付けるということです。

ウィジェットが有益な情報や便利な機能を提供するものであっても、ユーザーにとって“主役”のアプリケーションにはなりません。ユーザーにとって主役のアプリケーションはあくまでWebブラウザや表計算ソフトといったものです。ウィジェットは、それらの邪魔になってはいけないということです。


WidgetFXがビジネスチャンスに?

 本特集では、WidgetFXについて紹介してきましたが、WidgetFXはJavaFXとNetBeansを使って簡単にデスクトップ・ウィジェットが作れることが分かったと思います。

 本稿を読まれた皆さんもぜひ、独自のウィジェットを作ってみてください。アイデア次第でいろいろな面白いウィジェットが作れるのではないかと思います。近い将来、このようなウィジェットがビジネスへとつながる可能性もあるかもしれません。

@IT関連記事


「Javaは遅い」から「Javaは楽しい」に至る歴史
小山博史のJavaを楽しむ(12) 
最新のJava実行環境は起動が速いドラッガブルアプレットなど楽しい機能が満載です。ここまで至るには、いろいろな出来事がありました……
Java Solution」フォーラム 2008/12/15
“不況”時代を切り拓く、7つのRIA技術の基礎知識
結局、RIAはどれを使うべきなのか?(2)  中立的な立場でRIA技術を比べるために、それぞれの基本的な情報と、それらを学ぶ際に最初に注意すべきことを説明しよう
リッチクライアント & 帳票」フ ォーラム 2009/2/4
Androidのホーム画面に常駐するアプリを作るには
Androidで動く携帯Javaアプリ作成入門(10) 
待ち受けウィジェットを作るには、これまで学んできたレイアウトやサービス、インテントの知識を総動員する必要があります
Java Solution」フォーラム 2009/9/28

筆者プロフィール
小林 秀樹(こばやし ひでき)

フリーランスのエンジニアとして仕事をする傍ら、技術分野の研究活動をしている。Java、JavaScriptと、最近は特にJavaFXとGroovyがお気に入り。日本JavaFXユーザーグループでのコミュニティ活動および、WidgetFXポータルサイトの日本語訳の活動なども行っている。本人のブログはこちら

1-2-3

 INDEX 「JavaFXでデスクトップを遊ぶ「WidgetFX」(後編)」
  Page1
  WidgetFXの開発環境を整えよう
NetBeansで作るJavaFXアプリの初歩
  Page2
  JavaFXアプリをWidgetFXウィジェットにする
作ったWidgetFXを動かしてみよう
Page3
  キッチン・タイマ・ウィジェットもあるよ
自分で作ったウィジェットを公開するには
コラム 「良いウィジェットを作るコツ」
WidgetFXがビジネスチャンスに?


Java Solution全記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間