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

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

ここでは、より発展的な内容として、RINPn が搭載している処理エンジンを、自作のアプリに組み込んでみましょう!

スポンサーリンク


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

サンプルコード

以下は、Vnanoエンジンを用いて、 RINPn と同じようなエンジン設定で式「 1.2 + 3.4 」の値を計算する単純なサンプルコードです:

import org.vcssl.nano.VnanoEngine;
import org.vcssl.nano.VnanoException;
import org.vcssl.nano.interconnect.ScriptLoader;
import org.vcssl.nano.interconnect.PluginLoader;
import java.util.Map;
import java.util.HashMap;

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

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

        // RINPn で計算に用いているスクリプトエンジン(Vnanoエンジン)を生成
        VnanoEngine engine = new VnanoEngine();

        // Vnano エンジンのオプション設定(詳細は Settings.txt 内の説明参照)
        Map<String, Object> optionMap = new HashMap<String, Object>();
        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.setOptionMap(optionMap); // エンジンに登録

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

        // プラグインの読み込み
        PluginLoader pluginLoader = new PluginLoader("UTF-8");
        pluginLoader.setPluginListPath("./plugin/VnanoPluginList.txt");
        pluginLoader.load();
        for (Object plugin: pluginLoader.getPluginInstances()) {
            engine.connectPlugin("___VNANO_AUTO_KEY", plugin);
        }

        // ライブラリの読み込み
        ScriptLoader scriptLoader = new ScriptLoader("UTF-8");
        scriptLoader.setLibraryScriptListPath("./lib/VnanoLibraryList.txt");
        scriptLoader.load();
        String[] libPaths = scriptLoader.getLibraryScriptPaths(true);
        String[] libScripts = scriptLoader.getLibraryScriptContents();
        int libCount = libScripts.length;
        for (int ilib=0; ilib<libCount; ilib++) {
            engine.registerLibraryScript(libPaths[ilib], libScripts[ilib]);
        }

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

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

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

コンパイル・実行方法

上記のコードは、Vnano エンジンのJarファイル「 Vnano.jar (RINPnのフォルダ内に既に存在) 」をクラスパスに指定しつつ、下記のようにコンパイルします:

# Microsoft® Windows® をご使用の場合
javac -cp ".;Vnano.jar" -encoding UTF-8 EmbedUseExample.java

# Linux® やその他の環境をご使用の場合
javac -cp ".:Vnano.jar" -encoding UTF-8 EmbedUseExample.java
※ 最初の2行は、-cp 直後の "〜" 内の区切り文字が、「 ; 」か「 : 」かという点が異なります。

コンパイルに成功すると、「 EmbedUseExample.class 」が生成されます。 同様に、Vnano.jar をクラスパスに指定しつつ実行します:

# Microsoft® Windows® をご使用の場合
java -cp ".;Vnano.jar" EmbedUseExample

# Linux® やその他の環境をご使用の場合
java -cp ".:Vnano.jar" EmbedUseExample

実行結果は:

スクリプトエンジンの出力値: 4.6

この通り、計算式「 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
この階層の目次
新しいお知らせ

Exevalator の最新版 Ver.2.3 をリリース、新たに Python で使用可能に
2025-11-04 - 式計算ライブラリ Exevalator の Ver.2.3 をリリースしました。今回から、新たに Python 製のプログラムでも使用可能になりました! AI用ツール開発需要などの背景も踏まえて、詳細をお知らせします。

Exevalator をアップデート、エラーメッセージの日本語化が手軽に
2025-10-31 - 式計算ライブラリ Exevalator の Ver.2.2.2 をリリースしました。今回から、エラーメッセージを手軽に日本語化できるようになりました。数件のバグ修正&微調整も作んでいます。詳細をお知らせします。

関数電卓 RINPn(りんぷん) オンライン版の内部構造を解説
2025-10-22 - 先日登場した、関数電卓ソフト RINPn(りんぷん)のオンライン版の内部構造を解説します。オープンソースなので、自由に改造・流用して、自分だけのWeb電卓を作る事も可能!(かもしれない)

関数電卓 RINPn(りんぷん)、どこでもすぐ使えるオンライン版が登場!
2025-10-21 - フリー関数電卓ソフト RINPn(りんぷん)に、Web上でどこでもすぐ使える「オンライン版」が新登場しました! PCだけでなく、スマホでも利用可能です。詳細をお知らせします!

VCSSLのサポートAIが登場! ただし実用品質には ChatGPT 有料アカウント(Plus)での利用推奨
2025-08-19 - プログラミング言語VCSSLについての質問対応や、コーディング作業を手伝ってくれるAIさんが登場しました! 使用までの流れや推奨事項を解説し、実際の回答例や生成コード例などもたくさん紹介します!

各ソフトやVCSSLの英語版ドキュメント整備がほぼ完了
2025-06-30 - RINEARNでは2年前から、AIの補助による英語版ドキュメントの大幅拡充計画を進めてきました。今回、主要ドキュメント&コンテンツの英訳がほぼ完了し、一応の目標水準に達しました。詳細をお知らせします。

VCSSLの最新版をリリース: 外部プログラムとの連携機能を少し強化、他
2025-05-25 - VCSSL 3.4.52をリリースしました。外部プログラム(C言語製の実行ファイル等)との連携機能を少し強化し、文字化け対策やOS判別などを可能にしました。他にも細かい機能追加があります。詳細をお知らせします。

VCSSLの最新版をリリース、Java 24上での非互換な挙動を対処
2025-04-22 - VCSSL 3.4.50をリリースしました。Java 24環境上でのネットワークドライブ関連のファイルパス解決で、従来環境とは異なる挙動が生じていたのを解消しました。詳細をお知らせします。

リニアングラフやVCSSLの最新版をリリース、目盛りの位置や内容を自由に指定可能に!
2024-11-24 - リニアングラフ3D/2Dを更新し、自由な位置に、自由な表記内容の目盛りを描けるようになりました! 併せて、Java言語やVCSSLでの、プログラム制御用APIも拡張しています。詳細をお知らせします。

Exevalator 2.2 をリリース、TypeScript 対応によりWebブラウザ上で動作可能に
2024-10-22 - オープンソースの式計算ライブラリ「Exevalator(エグゼバレータ)」の2.1をリリースしました。新たに TypeScript に対応し、Webブラウザ上での式計算にも使えるようになりました。詳細を解説します。