TECH - テクノロジ

ソフトウェア開発やコンテンツ制作に活用する技術基盤の研究や蓄積を兼ねて、
言語やコンパイラ、仮想マシン、描画エンジンなどを開発しています。

プログラミング言語 VCSSL

VCSSL は、ライトな計算処理・シミュレーションやデータの可視化、及びちょっとしたツール製作などに便利な、C言語系の簡易プログラミング言語です。 » 詳細

2次元 & 3次元グラフィックスやグラフ描画機能などを標準でサポートしつつも、 各種デスクトップOSに対応・インストール不要で動作し、実行環境ごとUSBメモリーで持ち運んで利用する事もできます。

比較的軽い用途を想定したインタープリタ式の言語ですが、毎秒1億回(100 MFLOPS)程度の演算速度を発揮可能で、それなりの計算量の用途もこなせます。

| 公式サイト | ダウンロード |

スクリプトエンジン Vnano

Vnano(VCSSL nano)は、一般のJava®アプリケーション内に組み込み、文字列内の式の評価やスクリプト処理機能を提供するための、オープンソースの小型・軽量スクリプトエンジン & 言語です。 » 詳細

言語仕様はVCSSLのサブセットで、C言語系のシンプルな文法によるスクリプト処理機能を提供します。 仕様と実装をコンパクトに抑える事により、手軽に搭載し、アプリケーションに合わせたカスタマイズも可能な処理系を目指しています。

処理速度面では、中間コードの実行レイヤーにベクトルレジスタマシン型のVMを採用する事により、数百MFLOPS〜数GFLOPSクラスの演算速度を発揮します。

Vnanoは現在開発進行中であり、リポジトリはGitHubで公開しています。

| 公式サイト | ダウンロード | ソースコード リポジトリ | コンセプト発表記事 | アーキテクチャ解説記事 |

ベクトルレジスタ中間言語 VRIL

VRIL は、中間コードコンパイラ+VM形式の言語処理系内で用いる、VMの命令セットアーキテクチャおよび中間コード言語です。

VRILは「Vector Register Intermediate Language(ベクトルレジスタ中間言語)」の略で、 名称の通り、ベクトル単位の仮想レジスタ/メモリーを備える、レジスタマシン型のVM実装を前提に仕様設計されています。

VRILの命令セットはほぼ全てが仮想的なSIMD命令で構成されているため、ベクトル演算では命令実行オーバーヘッドに対して実演算時間の比率が高められ、高い性能を実現できます。 また、シンプルな三番地コードの形式であるため最適化が容易で、スカラ演算性能も高めやすい側面を備えています。

VRILは将来的にVCSSLの処理系内で採用する予定で、現在はそのサブセットであるVnanoにおいて先行して採用しています。

| 参照: Vnano処理系のアーキテクチャ |

ベクトルレジスタ仮想マシン VRIL-VM

VRIL-VM は、言語処理系の中間コード実行層に用いるプロセス仮想マシン(いわゆる仮想的なCPUとしてのVM)です。

データ解析ソフトウェアなどでの使用も見込んで、数値のスカラ演算およびベクトル演算の性能を共に重視しており、 そのためベクトルプロセッサ風の命令を備えるレジスタマシン方式のアーキテクチャを採用しています。 具体的には、中間コード言語にSIMD命令主体のVRILを採用し、レジスタやメモリーのデータ単位も全てベクトル(配列)となっています。

実測性能では、全体がJava言語のみで実装された中間コードインタープリタでありながら、倍精度浮動小数点演算で数百MFLOPS(スカラ演算)〜 数GFLOPS(ベクトル演算)クラスのピーク性能を発揮します。 これにより、プラットフォーム非依存性やアプリケーションへの組み込みやすさと、数値演算パフォーマンスとの間の高い妥協点を実現します。

VRIL-VMは将来的にVCSSLの処理系内で採用する予定で、現在はそのサブセットであるVnanoにおいて先行して採用・開発しています。

| 参照: Vnano処理系のアーキテクチャ | 実装コード |

VRIL出力コンパイラ LexicalCraft

LexicalCraft は、C言語系のオーソドックスな文法を持つVnanoのコードを、ベクトルレジスタマシン上で実行可能なVRILコードに変換するコンパイラです。

特にアプリケーション組み込み用途を想定したもので、構造上は一般的な字句/構文/意味解析器およびコード生成処理の4ステージ(最適化はVM側)を備えつつ、 カスタマイズ性を確保するために各ステージの分離性を重視し、複雑性や実装規模もコンパクトに抑える事を目指したコンパイラです。

また、アプリケーション内に組み込むという用途上、コンパイル時でのスタックオーバーフロー等の発生を回避しやすいよう、 構文解析器(パーサ)を含む全ステージを非再帰処理のみで実装する設計を採用しています。

LexicalCraft は現在、Vnanoのスクリプトエンジン内部の中間コードコンパイラ層において採用・開発しています。

| 詳細解説記事 | 実装コード |

ASTインタープリタ GARNET

GARNET は、現行版のVCSSL処理系内の実行レイヤーで採用している、中間表現インタープリタです。

アーキテクチャは広義のASTインタープリタに類するもので、 ポリモーフィズムで機能分化した演算オブジェクトの集合を、抽象構文木と同型のツリー構造となるよう参照リンクで繋ぐ事で、コードを比較的高速に実行します。

GARNETは、VCSSL最初期の頃から処理系の実行層として継続採用してきたものですが、現在は性能向上が鈍化し、実装も複雑化しつつあるため、 将来のVCSSL処理系では別方式のVRIL-VMへ置き換わる予定です。

その後はGARNETは互換エンジンの役割を担う予定であるため、現在は拡張方向での開発よりも、修正やメンテナンスを中心として安定性を固める方向の開発に収束しています。

簡易3D描画ライブラリ RINEARN-X

RINEARN-X は、RINEARN でのソフトウェア開発に使用している簡易3D描画ライブラリです。

ベクトルや変換行列等、一般に3Dに必要となる数学的な記述を要求せずに、データ可視化などの比較的単純な3DCGを、手軽に描画する事を目指した、簡易用途向けの3D描画ライブラリです。 もともとは リニアングラフ3D の描画エンジンから派生したもので、 現在は VCSSL3DCG機能 の下層レイヤーなどに採用しています。

RINEARN-X は、2009年頃に外部への一般公開を行ったものの、 その後の公開バージョンおよびドキュメントの更新やメンテナンスは、現在停止中となっています。 これはVCSSLの開発に伴って大幅な改修を行ったためで、 将来的には、再び一般公開に向けたバージョンおよびドキュメントの再整備を計画しています( そのタイミングにおいて「 BlockMount3D 」に改称予定です )。

| 詳細ページ( ※ 古い情報です。あらかじめご了承ください。 ) |

その他

先行開発版はこちら

VCSSLの実行環境などでは、開発途中の次期バージョンや、特定の機能を試験的に実装したバージョンなどを、先行開発版として試験公開する場合があります。 詳細はリンク先ページをご参照ください。

ソースコード等はこちら (GitHub)

オープンソース開発のものについては、GitHub上でソースコードのリポジトリを公開しています。

※: OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。

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

Vnanoがオープンベータ版に移行、VCSSLの実行環境で標準で実行可能に
2021年04月07日 - ソフト内組み込み用スクリプトエンジン&言語「 Vnano 」がオープンベータ版に移行し、併せて、VCSSLの実行環境でもVnanoコードの実行が可能になりました。詳細をお知らせします。

リニアングラフの最新版をリリース、2D版でも描画エンジンの直接操作が可能に
2021年04月03日 - リニアングラフ2D/3Dの最新版をリリースしました。それぞれのアップデート内容をお知らせします。今回から、2D版でもJava言語APIによる描画エンジンの直接操作が可能になりました。

RINPn のオープンベータ版をリリース! 詳細な公式ガイドも同梱&公開
2021年03月08日 - 2019年より開発進行中のプログラム関数電卓「 RINPn(りんぷん)」が、正式リリースに向けた最終準備段階として、オープンベータ版へと移行しました。その詳細をお知らせします。

コードアーカイブ新着
Vnano版 | ローレンツ方程式を数値的に解くプログラム

ローレンツ方程式を4次ルンゲ=クッタ法によって解き、グラフ描画用のデータを出力するプログラムです。
2021年02月12日
Vnano版 | 積分値のグラフ描画用データを出力するプログラム

数値的に積分を行い、結果の関数をグラフに描くためのデータを出力するコードです。
2020年12月20日
Vnano版 | 積分値を求めるプログラム (数値積分)

矩形法/台形法/シンプソン法を用いて、積分の値を数値的に求めるコードです。
2020年12月20日
3Dグラフを回転アニメーションさせるツール

3Dグラフを、Z軸まわりにゆっくりと回転アニメーションさせるツールです。全角度のグラフを、連番の画像ファイルに保存する事もできます。
2019年10月09日
[公式ガイドサンプル] ユーザーのGUI操作に対して処理を行う

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
新着・お知らせ配信用Twitter