[ 前へ | 目次 | 次へ ]
Japanese English

ステップ 6 - 別のソフトウェア内に組み込んで使う

RINPn が使用している計算&スクリプト処理エンジンである「 Vnanoエンジン 」は、Java® 言語で記述した別のソフトウェア内に組み込んで使う事ができます。 開発元は RINPn と同じで、組み込み方や使い方も意外と簡単なので、ここで実際に試してみましょう!

サンプルコード

Vnanoエンジンを用いて、RINPn と同じようなエンジン設定で式「 1.2 + 3.4 」の値を計算する単純なサンプルコードが、 RINPn のフォルダ直下に「 EmbedUseExample.java 」として同梱されています:

import javax.script.ScriptEngine;
import javax.script.ScriptException;
import java.util.Map;
import java.util.HashMap;

public class EmbedUseExample {
    public static void main(String[] args) {

        ////////// Vnano エンジンの準備 ここから //////////

        // RINPn で計算に用いているスクリプトエンジン(Vnanoエンジン)を取得
        ScriptEngine engine = new ScriptEngineManager.getEngineByName("vnano");
        if (engine == null) {
            System.err.println("スクリプトエンジンが見つかりません");
            return;
        }

        // Vnano エンジンのオプション設定(詳細は Settings.txt 内の説明参照)
        Map optionMap = new HashMap();
        optionMap.put("EVAL_INT_LITERAL_AS_FLOAT", true);
        optionMap.put("EVAL_ONLY_FLOAT", true);
        optionMap.put("EVAL_ONLY_EXPRESSION", true);
        optionMap.put("UI_MODE", "CUI");      // CUIベースソフト用
        // optionMap.put("UI_MODE", "GUI"); // GUIベースのソフト用
        optionMap.put("ACCELERATOR_ENABLED", true);
        optionMap.put("ACCELERATOR_OPTIMIZATION_LEVEL", 0);
        engine.put("___VNANO_OPTION_MAP", optionMap); // エンジンに登録

        // パーミッション機能に対応したプラグインに通知するパーミッション設定
        Map permissionMap = new HashMap();
        permissionMap.put("DEFAULT", "ASK");   // ユーザーに尋ねる挙動をデフォルト化
        // permissionMap.put("DEFAULT", "DENY"); // デフォルトを拒否挙動にしたい場合
        // (ここで個別に設定したい許可項目を追加設定 / 例は以下)
        // permissionMap.put("FILE_READ", "ALLOW");
        engine.put("___VNANO_PERMISSION_MAP", permissionMap); // エンジンに登録

        // ライブラリ/プラグインの読み込み設定
        engine.put("___VNANO_LIBRARY_LIST_FILE", "lib/VnanoLibraryList.txt");
        engine.put("___VNANO_PLUGIN_LIST_FILE", "plugin/VnanoPluginList.txt");

        ////////// Vnano エンジンの準備 ここまで //////////

        // Vnano エンジンで「 1.2 + 3.4 」の値を計算して表示
        try{
            String input = "1.2 + 3.4";
            double x = (double) engine.eval(input + ";");
            System.out.println("Vnano エンジンの出力値: " + x);
        } catch (ScriptException e) {
            e.printStackTrace();
        }

        // ライブラリ/プラグインの解放/接続解除(ソフトウェアの終了前などに行います)
        engine.put("___VNANO_COMMAND", "REMOVE_LIBRARY");
        engine.put("___VNANO_COMMAND", "REMOVE_PLUGIN");
    }
}

コンパイル・実行方法

上記のサンプルコードのコンパイル方法は、下記の通りです:

javac -encoding UTF-8 EmbedUseExample.java

コンパイルに成功すると、「 EmbedUseExample.class 」が生成されます。 これを、Vnano エンジンのJarファイル「 Vnano.jar (RINPnのフォルダ内に既に存在) 」をクラスパスに指定しつつ実行します:

java -cp ".;Vnano.jar" EmbedUseExample     (Microsoft® Windows® をご使用の場合)
java -cp ".:Vnano.jar" EmbedUseExample     (Linux® やその他の環境をご使用の場合)

(結果) スクリプトエンジンの出力値: 4.6
※ 最初の2行は、-cp 直後の "〜" 内の区切り文字が、「 ; 」か「 : 」かという点が異なります。

この通り、計算式「 1.2 + 3.4 」の値「 4.6 」を Vnano エンジンで求める事ができました。 式の中でライブラリ/プラグインの関数を呼んだり、式の代わりに Vnano で記述したスクリプトのコードを渡す事もできます。

Vnanoエンジンのライセンス、その他詳しい情報など

RINPn 同様に、VnanoエンジンもMITライセンスのオープンソースソフトウェアで、商用・非商用問わず無償で利用できます。

その他、より詳しい情報や、ガイド・仕様書などのドキュメント類などについては、 下記 Vnano エンジンの公式サイトで整備されていますので、ご参照ください。

Vnano 公式サイト(日本語版)
https://www.vcssl.org/ja-jp/vnano/
Vnano 公式サイト(英語版)
https://www.vcssl.org/en-us/vnano/
- 本文書内の商標などについて -
  • OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
  • Windows は、米国 Microsoft Corporation の米国およびその他の国における登録商標です。
  • Linux は、Linus Torvalds 氏の米国およびその他の国における商標または登録商標です。
  • Ubuntu は、Canonical Ltd. の米国およびその他の国における商標または登録商標です。
  • その他、文中に使用されている商標は、その商標を保持する各社の各国における商標または登録商標です。


スポンサーリンク



Japanese English
この階層の目次
新しいお知らせ

関数電卓 RINPn が正式リリース版(Ver.1.0)へ移行
2022/12/31 - オープンソース&プログラム機能付きの関数電卓ソフト「RINPn」を、ベータ版から正式リリース版へと移行し、Ver.1.0.0を公開しました。概要をご説明します。

スクリプトエンジン/言語「Vnano」、Ver.1.0を正式リリース
2022/12/12 - 以前よりベータ版などを公開していたスクリプトエンジン/言語「Vnano」を正式リリース扱いへ移行し、初版のVer.1.0.0を公開しました。概要をご説明します。

関数電卓 RINPn をアップデート、折りたたみ可能なキーパネルを搭載
2022/11/11 - 関数電卓 RINPn のアップデート版を公開しました。画面デザインを少し見直し、今回から、1クリックで折りたたみ/展開が可能なキーパネルを搭載しました。詳細をご紹介します。

コードアーカイブ新着
[公式ガイドサンプル] 各種の図形や画像を描画する

「VCSSL 2DCG開発ガイド」内のサンプルコードです。図形や画像などを描画します。
2022/12/16
角度の「度」とラジアンとを相互変換し、図示もするツール

45度などの「度」の値と、ラジアンの値とを相互に変換できるツールです。対応する角度の図示もできます。
2022/11/22
[公式ガイドサンプル] 立体モデルを回転させるアニメーション

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを、アニメーションで回転させ続けます
2022/11/18
[公式ガイドサンプル] 立体モデルを回転させる

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを、指定した角度だけ回転させます。
2022/11/17
[公式ガイドサンプル] 四則演算の計算順序や、カッコを使った順序指定

「VCSSLスタートアップガイド」内のサンプルコードです。四則演算が計算される順序や、カッコを使って順序を指定する方法を例示します。
2022/10/31
新着・お知らせ配信用Twitter