Inkpodアプリの基本形とインストール方法

Inkpodアプリの基本形と、インストール方法について、Hello Worldサンプルを例にとって説明します。

以下のサンプルは、ヘルプメニューの最後に"Hello"メニュー項目を追加します。追加されたメニュー項目を選ぶと"Hello, Inkpod world!"というメッセージを表示します。Hello, World サンプル: hello.js

function init()
{
    inkpod.ui.addUIExtensionListener(function(event) {
        inkpod.ui.actions.addAction({
            id     : "HELLO",
            text   : "Hello",
            action : function(frame, event) {
                inkpod.showInfo("Hello, Inkpod world!");
            }
        });
        inkpod.ui.menuBar.helpMenu.addMenuItem("HELLO");
    });
}

function dispose()
{    
}

plugin = {
    init : init,
    dispose : dispose
}

InkpodがインストールされたフォルダをINKPOD_HOMEとしたとき、このファイル(hello.js)を INKPOD_HOME/apps/jp.carabiner.hello/hello.js に置いて、Inkpodを起動すると、アプリが使用可能になります。

なお、JavaScriptのファイルは、すべてUTF-8で書かれている必要があります。

アプリケーションの配置

すべてのアプリケーションは、INKPOD_HOME/apps/ 以下の、それぞれ異なるフォルダに配置されます。アプリケーションにはそれぞれ識別子があります。識別子をAPP_IDとした場合、INKPOD_HOME/apps/APP_ID/ が、それぞれのアプリケーションの配置場所になります。例えば、hello.jsの場合、jp.carabiner.hello がアプリケーションの識別子で、アプリの場所が、INKPOD_HOME/apps/jpcarabiner.hello/ です。

アプリケーションの読込

Inkpodは、INKPOD_HOME/apps/APP_ID/ 直下の全ての、*.js ファイルを読み込みます。しかし、 一つ下の階層のjsファイルは読み込みません。例えば、INKPOD_HOME/apps/APP_ID/js/foo.js は、読み込まれません。JavaScriptのグローバル変数の空間はjsファイルごとに独立していて、INKPOD_HOME/apps/APP_ID/ 直下に複数のjsファイルを置いても、互いに独立して扱われ、アクセスすることはできません。

アプリケーションを複数のjsファイルに分割したい場合は、Inkpodに直接読み込んでもらいたいファイルと、それ以外を分けます。そして、Inkpodに読み込ませたいjsファイルは、INKPOD_HOME/apps/APP_ID/ 直下に配置し、それ以外のjsファイルはフォルダを作ってその下に配置します。他のjsファイルを読み込む場合は、組み込み関数のimportScript()関数で読み込みます。引数は、読込元のjsファイルからの相対パスです。

標準的な配置では、INKPOD_HOME/apps/APP_ID/ 直下に1つメインとなるjsファイルを置き、そこから読み込まれるjsファイルを1階層下のフォルダに配置します。hello.jsの場合、例えば、以下のようになります。

  • INKPOD_HOME/apps/jp.carabiner.hello/
  • INKPOD_HOME/apps/jp.carabiner.hello/hello.js
  • INKPOD_HOME/apps/jp.carabiner.hello/js/foo.js
foo.jsは、hello.js から、importScript("js/foo.js") のようにして、読み込みます。
importScript("js/foo.js");

function init() {
    // 以下略

Javaのライブラリの利用

アプリから、Javaで書かれたライブラリを使用したい場合、hello.jsと同じフォルダか、それより下のフォルダにjarファイルを置くことで、使用可能になります。

クラスローダは、アプリ毎に独立しているため、他のアプリと違うバージョンライブラリを使用することも可能です。

アプリの再読込

Inkpodを起動したままプラグインを再読込したい場合、「ファイル」-「プラグインの再読込」メニューで再読込できます。

再読込は以下の手順で行われます

  1. 全プラグインのdispose関数の呼び出し
  2. 全プラグインの読込とinit関数の呼び出し(このときjsファイルは再読込されますが、jarは再読込されません。jarを置き換える場合はInkpodを再起動してください)