リニアングラフ3D&2D Ver.5.6 リリース! Java言語のプログラムからも制御可能に

RINEARN Graph 5.6

RINEARNでは、データ解析・数値計算用のグラフソフト「 リニアングラフ3D(RINEARN Graph 3D) 」および「 リニアングラフ2D(RINEARN Graph 2D) 」の最新版、Ver.5.6 をリリースいたしました。 今回は、この新しいリニアングラフの概要をお伝えいたします!

- 目次 -

新しいリニアングラフ Ver.5.6 が正式リリース!

リニアングラフについて

リニアングラフは、表計算ソフトや数値計算プログラムなどで作成したデータファイル、および数式などから、手軽にグラフをプロットできるソフトです。

各種デスクトップOSにおいてインストール不要で使用できる事や、"普段使い" のツールとしての扱いやすさを重視したUIデザインなど、手軽さを第一の特徴とするグラフソフトですが、 一方でアニメーション描画やプログラムからの制御・自動処理などにも対応しています。

なお、リニアングラフには、3次元プロット用の「 リニアングラフ3D 」と、その2次元プロット版である「 リニアングラフ2D 」があり、 それぞれ独立した別のソフトです。 ただ、毎回「リニアングラフ3D&2D」と書くのもややこしいので、以下では両者をまとめて単に「リニアングラフ」と表記する事にしましょう。

公式サイトは以下のリンク先で、ダウンロードもそちらから可能です:

先月(2018年7月)のリリースから新しい Ver.5.6 に

リニアングラフの最初のバージョン(当時は別名)のリリースは2007年であるため、その年齢は実はRINEARNそのものよりも長く、今年で11年目となります。 一方で、バージョン番号の2桁目以上が上がるような比較的大きめのアップデートは、2013年の Ver.5.5 リリースを最後として、しばらく期間が空いていました。

そこでRINEARNでは、約5年ぶりにリニアングラフの全体的なリファインを実施し、新しい Ver.5.6 として、先月(2018年7月)にリリースを行いました。 現在は、そこから数回の初期アップデートを実施して、新機能も安定した状態となっています。

以下では、新しいリニアングラフ Ver.5.6 の特徴をご紹介します!

Java言語のプログラムから制御可能なAPIを正式サポート

Java言語でのプログラミングにおけるグラフ描画ライブラリとしても活用可能に

Ver.5.6 で恐らく最も大きな新機能は、 Java言語のプログラムからリニアングラフを起動したり、制御したりといった事ができるAPIが、正式に利用可能になった 事です。 この機能は、リニアングラフ3Dの先行開発版において2年ほど前から試験サポートしていたもので、そこからいくつかの仕様の調整を行った上で、今回から正式サポートになりました。

このAPIを利用すると、リニアングラフを単体のグラフソフトとしてだけではなく、 Java言語でのプログラミングにおけるグラフ描画ライブラリとしても活用できるようになります。

リニアングラフ2Dでの使用例

具体例を見てみましょう。Java言語のプログラム内で、座標値を格納する配列データを、2次元グラフとして線プロットしてみます。 そのためのサンプルコードは以下の通りです:

code/Graph2DSample.java

このコードを、リニアングラフ2Dの本体である「 RinearnGraph2D.jar 」にクラスパスを通した状態でコンパイル・実行すると、 リニアングラフ2Dが起動し、以下のように線グラフが表示されます:

実行結果

データを変化させつつ連続でプロットさせ続ける事で、アニメーションプロットを行う事もできます。 より詳しい扱い方は、 リニアングラフ2Dのダウンロードパッケージ 内に同梱されている、PDF版の取扱説明書に記載されています。

リニアングラフ3Dでの使用例

もちろんリニアングラフ2Dだけでなく、リニアングラフ3Dの方でも、同様のAPIをサポートしており、Java言語のプログラムからライブラリとして扱えます。 具体例として、Java言語のプログラム内で、格子状に並ぶ点の座標値を格納する配列データを、3Dでメッシュプロットしてみましょう。 そのためのサンプルコードは以下の通りです:

code/Graph3DSample.java

このコードを、今度はリニアングラフ3Dの本体である「 RinearnGraph3D.jar 」にクラスパスを通した状態でコンパイル・実行すると、 リニアングラフ3Dが起動し、以下のようにメッシュグラフが表示されます:

実行結果

メッシュプロットだけでなく、陰影のある曲面プロットや、点・線プロットなども可能です。 データを変化させつつ連続でプロットさせ続ける事で、アニメーションプロットを行う事もできます。

詳しい扱い方は、 リニアングラフ3Dのダウンロードパッケージ 内に同梱されている、PDF版の取扱説明書に記載されています。 また、以下のウェブページでも同様の解説記事を掲載しています:

(※ リニアングラフ2Dの方のWeb版ガイド記事は、現在準備中です)

Java言語用APIが可能にする新たな用途

リニアングラフのJava言語用APIの機能的なイメージについては、以上の通りです。

このAPIの活用形態としては、 プログラミング時のちょっとしたグラフ描画用途だけでなく、 リニアングラフで対応していない形式のファイルを開く処理を自作して使えるようにしたり、 外部の何らかの時間変動データをリアルタイムで表示するシステムを開発したり、 ... 等々の様々なものが考えられます。

また、特にリニアングラフ3Dに関しては、 3D描画エンジンを直接制御して、空間中に点や線・ポリゴンなどの基本図形を直接描画できるAPIもサポート されています。これにより、「 Java言語プログラミングでちょっとした立体図形を描きたい 」といった用途に対して、 表示画面やマウスでの視点操作機能などが最初からオールインワンで揃った、簡易3D描画 & 表示環境として、リニアングラフ3Dを活用する事なども考えられます。

描画エンジンを直接制御し、空間中に点や線・ポリゴンなどの基本図形を描画する事も可能
グラフの枠線や目盛りを消したり、プロット範囲(箱状の領域)でカットせずに描画するなど、細かい設定も可能です。

リニアングラフでは、これまでもちょっとしたスクリプト処理用に、簡易プログラミング言語である VCSSL での制御用APIをサポートしてきました(もちろん今後も利用可能です)。 そちらは、ソフトと別に開発環境などを用意しなくても、テキストエディタでコードを書くだけで使用でき、文法的にも比較的ライトな処理を手短に記述しやすいといった、「 手軽さ 」にメリットがありました。 一方で、VCSSLは簡易用途を重視した言語であるため、ある程度以上に高度な事を行おうとすると、言語機能の限界に阻まれてしまう場合もありました。

それと比較して、今回新たに利用可能になったJava言語用APIでは、開発環境(JDK)の導入が必要であったり、コードの記述量や複雑さが恐らく少し増えるといった側面はあります。 しかしその代わりとして、世界中で様々な用途に使用されているJava言語の、高い汎用性という恩恵を受ける事ができます。 その汎用性は、リニアングラフを活用してできる事の限界を、これまでと比べてより広い範囲へと押し広げてくれるはずです。 もっとも、現時点でそれらを具体的に列挙する事は難しいですが、リニアングラフはこのAPIの活用によって、これまでの枠を超えた新しい形も模索していきます。

UI は骨格を維持しつつリファイン、「クイック設定セレクタ」も新設

UI の改修

リニアングラフ Ver.5.6 では、メイン画面や各種メニュー画面などのユーザーインターフェース(UI)においても、比較的軽い規模のリファイン的な改修を実施しました。 と言っても、これまでの Ver.5.x 系を通した UI の骨格は維持しているため、従来のバージョンに慣れた方でも、すぐに違和感なく扱う事ができるよう意識しています。

Ver.5.6 のUIでは、各設定ウィンドウや、その上の操作項目・余白などが全体的に少し大きくなっています。 これは標準的なディスプレイの広さや解像度が年々向上している事を踏まえてのもので、 さらにいくつかの設定ウィンドウでは、広くなったスペースに新しい設定項目が追加されています。

複数の設定をすぐに切り替えられる「クイック設定セレクタ」を新設

また、UIに関連する新しい機能として、画面上部のメニューバー右端にある「 クイック設定セレクタ 」から、複数の設定をすぐに切り替えられるようになりました。

これまでのリニアングラフでの設定ファイルの扱いは、その保存場所に応じて、「起動時に自動で読み込む」か「プロットするデータファイルと一緒に読み込む」かの2通りが基本でした。 どちらも、起動時やデータファイルに対して、「 デフォルト 」となる設定を1つ決めるイメージで、複数通りの設定を用意して切り替えたい場合には不便でした。

一応は、「ファイル」 > 「設定の読み込み」メニューから、任意の設定ファイルを読み込んで適用する事はできましたが、 その際はまずファイル選択ウィンドウが表示され、その上でフォルダ階層を辿って、目的の設定ファイルを選択する必要がありました。

Ver.5.6 で新設されたクイック設定セレクタでは、日常でよく使う複数の設定ファイルを特定フォルダ内に保存し、その一覧が常に画面右上のセレクタに表示されるようになっています。 そして、セレクタから設定ファイルを選択した瞬間に、その設定が読み込まれてグラフに反映されます。

これにより、これまでよりも積極的に設定ファイルの保存と読み込みを活用でき、毎回のUIメニューからの設定操作やオプション選択などの手間を省く事ができます。

レンダリング処理の調整により、描画品質などが向上

オフスクリーンバッファの多段化により、アニメーション時の "ちらつき" が低減

リニアングラフ Ver.5.6 では、描画エンジンのレンダリング処理についても、細かい調整レベルの改修を実施しています。

描画エンジンの構造的な改修点としては、画面描画時の一時作業領域となるオフスクリーンバッファの段数が、前バージョンよりも1段増加しました。 これは、アニメーション描画時における画面の "ちらつき" を低減するのに効果があります。

これまでも、リニアングラフではオフスクリーンバッファを複数用いるマルチバッファリング処理を行っていましたが、 比較的古い実装部分の都合により、バッファに対してノイズになり得る処理を行っている箇所が存在していました。 その影響は、実装当時の環境においてはそれほど問題にならなかったのですが、近年の特に高解像度なディスプレイにおいて、 ウィンドウを最大化した状態でアニメーション描画をさせた際などには、画面にちらつきが見られるようになっていました。

このちらつきは、レンダリング処理の一部を再実装する事でも解消可能でしたが、 リニアングラフの描画エンジンは将来的に土台から再実装する事もある程度見込んでいるため、 現状では安定性を優先し、実装を保ったままちらつきを解消できる手段として、 オフスクリーンバッファの段数の追加を実施しました。

ピクセルによる "ギザギザ" を目立たなくするアンチエイリアス処理をサポート

もう一つ、今度はアニメーションだけではなく通常利用時での描画品質にも大きく関わる調整点として、 画面のピクセル(画素)に起因するギザギザ、いわゆる「 ジャギー 」をならして目立たなくする、アンチエイリアス処理が利用可能になりました。 これにより、特にラベルの文字や目盛りの数字などにおいて、これまでのバージョンではジャギーが目立って見栄えが悪かったのが改善しました。 小さな点などが比較的いびつな形となってしまっていたのも、より真円に近い形で描画可能になりました。

アンチエイリアスのOFF/ON比較
※ 実際の画面上でのスケールよりも、かなり拡大して表示しています

このアンチエイリアス処理はデフォルトで有効になっており、リニアングラフ2Dでは「スクリーンの設定」メニュー、リニアングラフ3Dでは「カメラの設定」メニューにおいて、 「高品質描画」の項目によってON/OFFを切り替えられます。

アンチエイリアス処理は、描画品質と引き換えに、グラフのレンダリング処理をわずかに重くしてしまう面もあります。 通常の使用ではほとんど体感できる重さではありませんが、 非常に多い個数の点や線をプロットしたり、さらにそれをアニメーションさせたりするような場合には、 アンチエイリアス処理をOFFにすると、レスポンス(操作時の反応)の軽さやフレームレートが若干向上する事が見込めます。

以上、今回は新しくなったリニアングラフ Ver.5.6 の主な特徴を、大まかにピックアップしてご紹介してきました。 細かい改修点は他にも色々とありますが、大体のイメージはお伝えする事ができたと思います。 少し間が空き、約5年ぶりとなったリニアングラフの大型アップデートですが、RINEARNでは今後も継続的にリニアングラフやその他ソフトウェアの強化を行っていきます!

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