BEITELに付属しているかんたんアプリケーション開発機能を用いることで、簡単にBEITELドキュメントを操作するアプリケーションを記述、実行することができます。

アプリケーションの記述

BEITELのアプリケーションは、以下の手順で作成することができます。
  1. [アプリ]メニューの[かんたんアプリケーション開発]を選択する
  2. [スクリプトの新規作成]ボタンを押す
  3. スクリプトエディタが開くので、スクリプトを記述する
    メッセージボックスで"Hello, World!"と出力する例:
    alert("Hello, World!");
    alert関数以外に使用可能なAPIについては BEITEL API を参照してください。
  4. [実行]ボタンを押す

アプリケーションの実行タイミング設定

記述したアプリケーションは、BEITELウィンドウを開く際に自動的に実行するようにしたり、メニューに組み込んで実行できるようにすることが可能です。
スクリプトエディタの [実行タイプ] コンボボックスによって変更することができます。
  1. [アプリケーション起動時に実行]
    BEITELウィンドウオープン時に自動的にこのスクリプトを実行することができます。
  2. [アプリケーションメニューに組み込み]
    [アプリ]メニュー配下に組み込みます。
    スクリプト名にスペースで区切ってショートカットキーを指定することができます。例えば、[HTMLで出力 CTRL-SHIFT-W]などとスクリプト名を付加することでメニューにショートカットキーを設定することができます。詳しくは[メニュー拡張]スクリプトのコメントを参照してください。
  3. [ポップアップメニューに組み込み]
    ポップアップメニューに組み込みます。
    アプリケーションメニューへの組み込み同様、ショートカットキーを設定することができます。

スクリプトエンジンの追加

JavaのScripting仕様(JSR 223)に対応したスクリプトエンジンを組み込むことができます。
例えば、Groovyのスクリプトを組み込む場合には以下のように行います。
  1. GroovyのWebサイトから、Groovyのバイナリファイル一式をZIPファイルでダウンロードする
    BEITELを動作させているJREが1.6の場合(Windowsインストーラでインストールした場合など)はGroovy 1.8をお使いください
  2. ZIPファイル中のlibディレクトリ以下の.jarファイルをすべて、(BEITELをインストールしたフォルダ)\apps\jp.carabiner.beitel.app.appdoitフォルダ以下のどこかに展開する
    サブフォルダを作成してそこに展開しても問題ありません。
  3. BEITELを起動する。すでにBEITELを起動している場合は一度停止し、再度起動する
  4. [アプリ]メニューの[かんたんアプリケーション開発]メニューを選択する
    右上の言語選択コンボボックスの選択肢に[Groovy]が現れるようになります。
apps\jp.carabiner.beitel.app.appdoitフォルダ以下に拡張子名でフォルダを作成すると、そこに設定ファイルなどを記述することができます。詳しくは、apps\jp.carabiner.beitel.app.appdoit\jsフォルダを参照してください。

スクリプトエディタのカスタマイズ

スクリプトエディタの機能自体をスクリプトで変更することが可能です。詳しくは、[このUIの設定処理]スクリプトのコメントを参照してください。

BEITELでは、アップデートサイトを用意することで、独自アプリケーションをオンラインで配布することができます。
BEITELアプリケーションは以下のルールに則ってアップデートサイトを作成することで、誰でも配布可能です。
  1. アプリケーションパッケージの作成
    アプリケーションパッケージとは、アプリケーション本体とその補助情報を格納したZIPファイルです。
    ZIPファイルは、以下のようなファイルで構成してください。
    • package.properties
      アプリケーションパッケージに関する情報を定義したファイルです。
      以下のようなキーと値のセットを定義したテキストファイルとして定義します。文字コードはUTF-8を使用してください。
      package.id=jp.carabiner.beitel.app.gecko
      package.name=BEITEL Gecko App (for Windows)
      package.version=0.1
      package.providerName=Carabiner Systems, Inc.
      requireLicenseAgreement=true
      licenseURL=agreement.txt
      icon.small=gecko-16.png
      icon.medium=gecko-32.png
      icon.large=gecko-64.png
      それぞれの項目の意味は以下のとおりです。
      • パッケージ情報定義
        • package.id
          パッケージIDを定義します。
          パッケージIDとは、アプリケーションパッケージを識別するためのIDで、(BEITELのインストールディレクトリ)/apps/パッケージID にアプリケーションパッケージの内容が展開されます。
          この定義は必須です。
        • package.name
          パッケージ名を定義します。
          パッケージ名は、アプリケーションの管理ダイアログなどにおいて、パッケージの名前として利用されます。
          この定義は必須です。
        • package.version
          バージョンを定義します。
          バージョンは、更新チェック時にパッケージが新しいかどうかを判定するために利用されます。以下のような形式が定義できます。
          • 0.1
          • 0.1_rc1
          • 0.1_rc2
          • 0.1_rc10
          • 1.0
          バージョン番号は 主バージョン番号とRC番号から構成することができ、以下のような順に新しいものとして解釈されます。
          0.1_rc1 < 0.1_rc2 < 0.1_rc10 < 0.1 < 1.0
          この定義は必須です。
        • package.providerName
          パッケージ提供者の名前です。
          アプリケーション管理ダイアログなどにおいて表示されます。
          この定義は必須です。
      • ライセンス定義
        • requireLicenseAgreement
          インストール・アップデート時に利用規約を表示し、それに同意させるかどうかを定義します。
          この値をtrueとした場合は、licenseURLキーの値を定義する必要があります。
          この定義は任意です。
        • licenseURL
          ライセンスファイルへのパスです。アプリケーションパッケージのルートに対する相対パスとして定義します。
      • アイコン定義
        • icon.small
          16×16のアイコンファイルへのパスを定義します。この定義は任意です。
        • icon.medium
          32×32のアイコンファイルへのパスを定義します。この定義は任意です。
        • icon.large
          64×64のアイコンファイルへのパスを定義します。この定義は任意です。
    • *.js
      パッケージのルート中にある.jsファイルはアプリケーションの起動時に実行されます。
      ここでは、.jar中のクラスを呼び出したり、APIにアクセスすることでBEITELに機能を追加することができます。
      パッケージのルート以外のjsファイルは importFile(path) グローバル関数を用いて任意のタイミングでロードすることができます。
    • *.jar, **/*.jar
      パッケージ中に存在する拡張子.jarのファイルは、アプリケーションの起動時、.jsファイルの実行前に自動的にロードされます。
      ここに含まれる.classファイルおよびリソースファイルは、.jsファイルから参照することができます。
      .jarファイル中でBEITELのクラスを参照したい場合は、開発中にクラスパス内に(BEITELをインストールしたフォルダ)\core\beitel.jarを含めるようにしてください。
    • アイコンファイル
      package.propertiesに定義されたアイコンファイルを配置します。
      指定可能な形式は、image/png, image/jpeg, image/gifのいずれかです。
    • ライセンスファイル
      package.propertiesに定義された利用規約などの文章をまとめたテキストファイルを配置します。
      文字コードはUTF-8で保存してください。
  2. フィーチャーパッケージの作成
    フィーチャーパッケージとは、アプリケーションパッケージのうち、アプリケーションダウンロード時に表示すべきアイコン、ライセンス規約のみをまとめたZIPファイルです。
    アプリケーションパッケージのうち、以下のファイルを含めてください。
    • package.properties
    • アイコンファイル
    • ライセンスファイル
    なお、これらの情報をダウンロード時に表示する必要がない場合は、フィーチャーパッケージは不要です。
  3. アップデートサイト定義ファイルの作成
    アップデートサイト定義ファイルとは、あるサイトが配布するアプリケーションパッケージおよびそのバージョンの一覧をまとめたXMLファイルです。
    <?xml version="1.0" encoding="UTF-8"?>
    <update-site>
      <!-- Gecko --> 
      <package-def id="jp.carabiner.beitel.app.gecko" label="BEITEL Gecko App (for Windows)"> 
        <description>BEITEL Geckoアプリ (for Windows)</description> 
      </package-def> 
      <package 
               id="jp.carabiner.beitel.app.gecko" 
               version="0.1_rc1" 
               archive="beitel-gecko-0.1_rc1.zip"/> 
      <package 
               id="jp.carabiner.beitel.app.gecko" 
               version="0.1" 
               archive="beitel-gecko-0.1.zip"
               feature="beitel-gecko-feature-0.1.jar"/> 
      ...
    </update-site>
    それぞれの要素の意味は以下のとおりです。
    • update-site
      アップデートサイト定義ファイルのルート要素です。
    • pacakge-def
      • 機能
        パッケージIDが示すパッケージに関する情報を定義します。
      • 属性
        • id
          パッケージIDを定義します。
        • label
          パッケージ内容の表示時のラベルを定義します。
      • 要素
        • description
          パッケージに関する詳細説明を定義します。
    • package
      • 機能
        特定バージョンのパッケージの内容を定義します。
      • 属性
        • id
          パッケージIDを定義します。
        • version
          パッケージのバージョンを定義します。
        • archive
          アプリケーションパッケージへのパスを定義します。
        • feature
          フィーチャーパッケージへのパスを定義します。
  4. アップデートサイトURLの配布
    アップデートサイトとアプリケーションパッケージ、フィーチャーパッケージをWWWサーバにアップロードします。
    ユーザに対してアップデートサイト定義ファイルのURLを配布してください。

JavaScriptとJava

BEITELでは、アプリケーションは基本的にJavaScriptで記述します。
実行環境では、BEITELにアクセスするためのいくつかのグローバルオブジェクトが提供され、これらのオブジェクトから情報を取得したり、変更操作を行うことでアプリケーションの機能を実現することができます。
JavaScriptにおけるグローバルオブジェクトや、そこからアクセス可能なオブジェクトはすべてJavaのオブジェクトによって実現されます。それぞれのJavaScriptオブジェクトに対応するJavaオブジェクトについてはドキュメントの各オブジェクトの説明にリンクがありますので、そちらを参照してください。

BEITEL API

グローバルオブジェクトdocument, window, beitel, scriptから、APIの提供する各機能にアクセスすることができます。
各オブジェクトのプロパティを通じて情報を取得したり、イベントハンドラを登録することでBEITEL上での変化を検出することができます。
また、ファイル読み込み・保存の処理や、添付ファイルのサムネイル生成処理として独自のオブジェクトを作成、登録することによるBEITELのカスタマイズも可能です。