Javaプラグインで機能を拡張する方法

 ここでは、Javaを利用して、HTML/JavaScriptの機能を拡張する方法を紹介します。JavaScriptを使うと処理速度が遅い場合や、標準APIで提供されていない機能を追加したい場合などに、プラグインを作って機能を拡張することができます。

どんな場合にプラグインを作る必要があるか

 jsWaffleのフレームワークでは、よく使われるAndroidのAPIを使いやすい形で提供しています。そのため、それほど凝った処理をするのでなければ、特にプラグインを作る必要はないでしょう。しかし、最新のAndroid APIを利用したい場合や、JavaScriptでは計算が遅いのでもっと速く処理する必要がある場合に、Javaでプラグインを作ることができます。

  • Javaを使って処理速度を速くしたい時
  • 最新の Android API や、jsWaffleで提供されていない機能を使いたい時
  • マルチスレッドでバックグランドで何かしらの処理を行いたい時

Javaを知っているなら拡張は簡単

 jsWaffleは非常にシンプルな作りとなっており、ちょっとJavaを知っている人ならば、手軽にプラグインを作ることが可能です。Javaでプラグインを作って機能を拡張するならば、JavaScriptの柔軟性を利用しつつ、必要な部分だけJavaで処理を補うことが可能です。

 プラグインの作り方は、以下の通りです。

(1)プラグイン用のJavaファイルを作る

 AptanaのPackage Explorerで、/src/パッケージ名 を開き、そこに、「TestPlugin.java」のようなプラグイン用のJavaファイルを作成します。内容は以下のように、WafflePlugin を継承したクラスとします。

そして、プラグインに追加したいメソッドを定義します。ここでは、文字列を返す getMessage() というメソッドを追加しました。これは「Hello!」という文字列を返すだけのメソッドです。

file:/src/com.example.Tips/TestPlugin.java

package com.example.Tips;
import com.kujirahand.jsWaffle.model.WafflePlugin;
// プラグインクラス
public class TestPlugin extends WafflePlugin {
    // プラグインに追加するメソッド
    public String getMessage() {
        return "Hello!";
    }
}

(2)プラグインを登録する

次に、「/src/パッケージ名/プロジェクト名.java」のファイルを開きます。そして、その中にある「onAddPlugins()」メソッドに以下のプログラムを追加します。これで、JavaScriptに
Testというオブジェクトが追加され、そのメソッド「getMessage()」が利用可能になりました。

file:/src/com.example.Tips/Tips.java

protected void onAddPlugins() {
    super.onAddPlugins();
    addPlugin("Test", new TestPlugin()); // ←←← この行を追加
}

(3)サンプルプログラムを記述する

HTMLにサンプルプログラムを記述して、プラグインに追加したメソッドが利用できるかどうか試してみましょう。

file:/assets/www/index.html

<script type="text/javascript">
    var s = Test.getMessage(); // プラグインのメソッドを呼び出す
    alert(s);
</script>
見事プラグインのメソッドが実行されました!
見事プラグインのメソッドが実行されました!