[ 前へ | 目次 | 次へ ]
2019/01/26

シンプル&コンパクトなプログラム関数電卓!
「 リニアンプロセッサー nano 」の概要

Vnano

RINEARNでは現在、デスクトップの隅に置いて手軽に使えるようなものを目指した、 非常にコンパクトなプログラム関数電卓ソフト 「 リニアンプロセッサー nano(ナノ) 」 を開発中です。 今回は、開発途中のバージョンの画像などを踏まえながら、このソフトの概要を解説します。

前提となるリニアンプロセッサーについて

リニアンプロセッサー nano は、その名前の通り、既存のプログラム関数電卓ソフト「 リニアンプロセッサー 」の派生版となるソフトです。 そこでまず、この( nano ではない方の)リニアンプロセッサーの特徴について簡単にご説明します。

リニアンプロセッサー

グラフ描画機能や関数定義・プログラム実行機能をサポートした関数電卓

リニアンプロセッサーは、RINEARN において2010年から現在まで、幾度かメジャーバージョンアップを経ながら公開している、 比較的高機能な関数電卓ソフトです。 アニメーション対応の2次元&3次元グラフ描画機能が大きな特徴ですが、 もう一つの特徴としてC言語系の簡易プログラミング言語「 VCSSL 」をサポートしており、 それによる自動処理や、独自関数(いわゆるユーザー定義関数)の自作などを行う事ができます。 また、それなりに豊富なライブラリ機能を用いて、GUIなどを備える計算アプリなどを開発し、メニューバーに登録して使う事などもできます。

電卓ソフトの中では、シンプルさやコンパクトさよりも、機能性やカスタマイズ性を重視したタイプのもの

世の中に電卓ソフトは多数存在しますが、 一つの方向性の分類の軸としては、「 シンプルさやコンパクトさを重視したもの 」と、 「 機能性(特殊な用途への特化を含む)やカスタマイズ性を重視したもの 」の2パターンに分けられるのではないでしょうか。 恐らくこれら2つの方向性は、ある程度までは両立できても、突き詰めるとトレードオフがあり、結局は個々のソフトがどちら側に軸足を置くかという話になるのだと思います。

既存の( nano でない方の )リニアンプロセッサーは後者で、先に述べた通りの色々な機能を盛り込んでいます。 電卓ソフトとしてはやや限定的な層向けになってしまっている事もあり、派手なヒット作ではないものの、 それなりにニッチな需要もあるようで、 加えて雑誌やWebメディア様に何度か取り上げて頂いた事もあり、10年近くにわたって開発が継続しています。

半面、「 日常での使い勝手 」に課題も…

一方で、既存のリニアンプロセッサーは、 電卓ソフトとしては大柄な画面を持ち、起動や操作のレスポンスも電卓ソフトとしては比較的重めな部類に入ります。 その代償を払う代わりに、色々な機能を盛り込んでいるわけです。 ただ、単純な1行の計算式の値を求めるだけのような用途においては、 使わない機能のために画面の面積や操作の応答時間などが消費されるのは無駄になってしまいます。

そして、日常的な場面での使用頻度では、 むしろそのような単純な用途のほうが恐らく多いのが悩み所でもあります。

リニアンプロセッサー nano の開発コンセプトと特徴

リニアンプロセッサー nano では、逆にシンプルさとコンパクトさを優先

そこで、既存のリニアンプロセッサーから、日常的な場面での使用頻度が多いと思われる機能のみを抜き出して、 「 シンプル & コンパクト 」 な方向性の電卓ソフトとしてまとめる事を目指したのが、今回の「 リニアンプロセッサー nano 」 です。

下図は、実際にリニアンプロセッサー nano を起動した画面の様子です。このWebページをPC上で見ている場合は、ほぼ原寸大で表示されています。

リニアンプロセッサー nano の画面

このように、リニアンプロセッサー nano では、入力項目やボタンなどの部品を必要最小限に絞った、非常にシンプルな画面デザインを採用しています。

加えて、別のウィンドウ上に重ねて作業する事を想定して、常にウィンドウの最前面に表示されるモードをサポートします。 その際、邪魔な雰囲気を極力感じさせないように、実は画面は半透明で、背景が少し透けるようになっています。 実際に使い勝手のイメージが伝わりやすいように、デスクトップ背景をイメージした画像の隅(右下の端)に重ねて置いた様子が下図です。

デスクトップ背景をイメージした画像の隅に重ねて置いた様子

このように、作業しながら画面の隅にちょこっと置いて計算するのに便利な形になっています。 なお、上の画像では、Webページ上のサイズで見やすくするために、実際のデスクトップ上に置いた印象よりは、リニアンプロセッサー nano の画面を大きめに見せています。 実際のフルHDディスプレイ上での比率では、もっとずっとコンパクトです。

既存のリニアンプロセッサーから、機能面はかなり割り切って取捨選択
―― 計算式の全体を入力できる事や、プログラムで関数を自作できる事などは踏襲

このように、リニアンプロセッサー nano は、機能性やカスタマイズ性を重視した既存のリニアンプロセッサーに対して、 その派生版として、逆にシンプルかつコンパクトな方向性の電卓ソフトを目指したものです。 そのため、機能面では割り切った取捨選択を行い、「 本当に日常で頻繁に使うか? 」 という観点から、かなり絞り込んだものになる予定です。 例えば、10進ベースで任意精度の多倍長演算を行う「 VF(varfloat)モード 」や、画面を最大化するとプログラムのエディタとして使えるようになる機能などは、 nano ではサポートされません。 グラフ描画機能も、現状の予定では nano では採用しない見込みです(ただし、後々の判断で追加する可能性もあります)。

一方で、計算式の全体を入力できる事や、独自関数(いわゆるユーザー定義関数)をプログラムを書いて自作できる事については、 リニアンプロセッサー nano でもサポートされます。これは、関数電卓ソフトとして、これらの機能は日常利用でもメリットが大きいと判断したためです。 なお、画面デザインの複雑性を上げないように、関数は別ファイルに記述し、自動で読み込まれる方式となります。

プログラム機能にはVCSSLサブセットの「 Vnano 」を採用

アプリケーション組み込み用途に特化した新スクリプトエンジン「 Vnano 」により、軽快なレスポンスを重視

リニアンプロセッサー nano は、既存のリニアンプロセッサーの派生版とは言っても、それは上で述べたような開発コンセプト上のものであって、 ソフトウェアの実装としては土台から完全な新開発を行っています。

これは UI のような目に見える部分だけではなく、より中心的な、計算式やユーザー定義関数などを解釈・実行するスクリプトエンジンについても同様です。 具体的には、リニアンプロセッサー nano では、 新開発のコンパクトなスクリプト言語&エンジン「 Vnano (VCSSL nano)」 を採用しています。 Vnano は、アプリケーション組み込み用途に焦点を絞り、機能を必要最小限に抑える事で、 スクリプトエンジンをコンパクトにする事を目指した、VCSSL のサブセット(機能限定版)です。

Vnano

既存のリニアンプロセッサーで採用している言語のVCSSLは、 単体のスクリプト言語としても使える水準の機能性を目指した代わりに、 起動や実行開始までのオーバーヘッドが比較的大きく、 従ってシンプルさや軽快さを重視したいタイプのアプリ内に組み込むには、そこがネックになってしまう面があります。 Vnano では逆に、アプリ組み込み用途に割り切って機能を削り込む事で、その代わりとして軽快なレスポンスを実現します。

Vnano のプログラムは VCSSL としても動作
―― リニアンプロセッサー nano 用のプログラムはリニアンプロセッサーでも使用可能

VCSSL に対する Vnano( VCSSL nano )の位置づけは、ちょうど既存のリニアンプロセッサーに対する、リニアンプロセッサー nano の位置づけに一致しています。

それぞれ同じ骨格を共有しながら、前者( nano でない方 )は機能性を重視したもので、後者( nano )は機能をコンパクトに抑えて軽快さを重視したものとなっています。 ユーザー側からの視点としては、 後者に対して機能不足を感じれば前者を使用し、前者に対して無駄な機能のせいで重いと感じれば後者を使用する、という使い分けを想定しています。

そのような相補的な使い分けを実現するために、Vnano のプログラムは、原則として VCSSL のプログラムとしても実行できるようになっています。 そのため、リニアンプロセッサー nano のために書いたユーザー定義関数などは、nano でない方のリニアンプロセッサー上でも、そのままコピー&ペーストして使う事ができます。

今後の予定

オープンソースのソフトウェアとしての公開を予定
―― まずは開発版ソースコードの公開と逐次更新から

RINEARNでは、リニアンプロセッサー nano は、スクリプトエンジンの Vnano と同様に、オープンソースのソフトウェアとして公開する事を予定しています。 ライセンスは、メジャーなオープンソースライセンスの一つであるMITライセンスになる見込みです。

リニアンプロセッサー nano の開発は今年に入ってからスタートしたものですが、 そもそもが「 シンプル&コンパクト 」な形を目指しているため実装規模も小さく、そのため現時点で既に試作版が動作する程度までは進んでいます。 そこでまずは、恐らくそう遠くない内に、開発中のバージョンを GitHub 上などで、ソースコード込みで公開する予定です。

正式リリースは Vnano のスクリプトエンジンとの兼ね合いで、2019年内(なるべく早期)を目標に

一方で、完成したバージョンとしての正式なリリース時期については、現状では未確定です。

これは、そもそもプログラム機能のために使用する Vnano のスクリプトエンジン自体が、GitHub の公開リポジトリ上でまだ開発の途中であるためです。 具体的には、機能上はほぼ全て揃っているものの、品質やテスト等がまだ追い付いていない状態です。 リニアンプロセッサー nano は、ソースコードの内訳ではこの Vnano のスクリプトエンジンが大半を占めるため、両者の正式リリースはほぼ同時になる見込みです。

未確定ながら、一応の暫定的な目標としては、2019年内のなるべく早期の正式リリースを目指しています。

リニアンプロセッサー nano についての続報は、また追ってこのコーナーにてお知らせいたします。


この階層の目次
[ 前へ | 目次 | 次へ ]
新しいお知らせ

Vnanoの公式サイトがオープン、チュートリアルやAPI仕様書等も掲載
2019年08月07日 - オープンソースのアプリケーション組み込み用スクリプトエンジン「 Vnano 」の公式サイトを開設しました。チュートリアルや、スクリプトエンジンのAPI仕様書などが参照できます。その概要をお知らせします。

リニアングラフ3D/2Dが連番ファイルのアニメーションに標準で対応
2019年07月17日 - リニアングラフ3D/2Dでは、7月17日公開の最新版より、連番ファイルを連続的に読み込みながらアニメーション描画するプログラムを同梱し、メニューから標準で使用可能になりました。その概要をお知らせします。

Vnanoのスクリプトエンジンアーキテクチャ解説2: コンパイラ
2019年07月03日 - オープンソースで開発中のスクリプトエンジン「 Vnano 」のアーキテクチャを解説する連載の第2回です。今回は、スクリプトを中間コードへと変換する、コンパイラ部分の内部をクローズアップして解説します。

コードアーカイブ新着
[公式ガイドサンプル] ユーザーのGUI操作に対して処理を行う

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
[公式ガイドサンプル] 各種GUIコンポーネントを画面上に配置する

「VCSSL GUI開発ガイド」内のサンプルコードです。色々な種類のGUI部品を画面上に配置します。
2019年07月28日
連番ファイルから3Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年06月03日
連番ファイルから2Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年05月24日
[公式ガイドサンプル] 立体モデルを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを生成し、3D空間に配置します。
2019年05月21日
公式Twitterアカウント