リニアングラフ3Dをアップデート、
次期版(Ver.6)の開発もスタート!

RINEARNでは先日、リニアングラフ3Dの最新版 Ver.5.6.34 をリリースいたしました。

今回のアップデートは、先行開発版の ADV-20230722 の内容を反映させ、加えてメモリー使用量の再設定スクリプトのバグを修正した、比較的小規模な更新です。 この記事では、まずその内容をお知らせします。

また、本記事後半では、最近開発がスタートした、リニアングラフ3Dの次期メジャーバージョン(Ver.6系)についての情報も少しご紹介します!

- 目次 -

Ver.5.6.34 での更新内容

グラフの6面に画像を貼り付け可能に

従来も、グラフの底面に画像を貼り付ける事はできました。今回は、その機能を少し拡張し、6面全てに画像を貼り付け可能になりました。各面に、それぞれ別な画像を貼り付ける事ができます。

実はこの機能は、数年前にも一度、先行開発版に入った事があるのですが、当時は正式リリース版には入らず流れてしまいました

※ 確か当時は、とりあえず実装したものの、「各面の画像がどういう向きになるべきか( 数学的に整った規則性 vs 実用性 )」という仕様の最終決定に悩み、結局決めきれずに塩漬けになってしまった記憶があります。

しかし今回、改めて同機能のリクエストを(当時とは別の方から)いただいたため、「今度こそ」という事でやっと正式リリース版にも反映した、という流れです。

通常の正式リリース版は、新機能が数個溜まってからまとめて反映&リリースする事が多いのですが、上記の経緯があるため、今回は機能的には単発での追加になっています。

今回リクエストをお寄せいただいた方には、この場をお借りして改めて御礼申し上げます。 …と同時に、当時せっかくリクエストいただいた方には、正式版への反映がかなり遅れてしまい、申し訳ありませんでした…!

バグ修正

今回のアップデートでは、1件のバグ修正を含んでいます。

リニアングラフ3Dでは、初回起動時にメモリ使用量の上限を設定するステップがありますが、その値を再設定するためのスクリプト(バッチファイル)として「 メモリー容量設定.bat 」が同梱されています。

このスクリプトに、少し前のバージョンからバグが混入してしまい、最近は機能しなくなっていました。そのため、今回のリリースで修正版に差し替えました。

最近のPCでは、デフォルト設定のままで困る場面はほぼ無くなったのですが、非常に重いデータファイルを開いてなんとかプロットしたい場面など、まだ有用な場面もたまにあると思います(バグっていてすみません…)。

なお、上限をラフに上げ過ぎた状態で、重いファイルを開き、PCのメモリを全て食い尽くしてしまった場合、PC全体の動作が非常に重くなります(昔のPCでよくあったような状態です)。なので、必要が無ければデフォルト設定のままがおすすめです。

次期版(Ver.6系)の開発がスタート!

今回のアップデート内容は以上の通りです。

ここからは、本記事後半のトピックに入りましょう。 冒頭でも少し触れましたが、リニアングラフ3Dの次期メジャーバージョン(Ver.6系)の開発がスタートしました。

個々の特徴についての詳しい内容は、また追い追い別記事でお伝えしていく予定です。今回は、全体像をざっと眺めるような形で見てみましょう!

Ver.5.0 からは既に13年が経過
− 次期版では基礎からリフレッシュへ

まずは背景についてです。

リニアングラフ3Dの現行版は Ver.5.6.x ですが、その土台になっている Ver.5.0 は2010年のリリースで、今から13年前になります。そこから拡張を重ねた現行の Ver.5.6 でも、既に5年が経っています。

ソフトウェアやアプリは、同じ土台を使いまわして、最初に想定していなかった「建て増し」的な拡張を重ねると、次第に限界が見えてきます。

例えば、「こうするなら土台はもっと別の構造の方が綺麗にできたな、しかし今更なので仕方ない…」といった箇所が蓄積してきたり、 「あの機能を入れるには土台の構造から変えないと無理だ」と保留にする案が増えてきたり、といった具合です。

そこで、たまに土台からリフレッシュして造り直したくなる時があります。 「どれくらいの頻度でそれをやるか or やらないか」は、人や会社やソフトウェアの種類(堅さ)や採算性にもよると思いますが、RINEARNではフリーウェア類では結構やります。 色々と自由ですからね。

例えばリニアングラフ3Dでは、バージョン番号の先頭の数字が変わる時がそうなのですが、現在は「5」なので、過去4回あった事になります。そして、次期版となる Ver.6.0 もそのターンになります。

実際に Ver.6.0 は、コードベースではほぼゼロからの最実装となります。

次期版からはオープンソース化

で、「せっかくゼロから再実装するなら、次は外から見える所で、なるべく綺麗に書こう」という自戒の気持ちを込めて、オープンソース化する事にしました。 既に以下の場所にリポジトリもあり、実際に開発を始めています:

次期版リニアングラフ3Dのソースコードリポジトリ(GitHub)
https://github.com/RINEARN/rinearn-graph-3d

オープンソース化する理由はもう一つあります。それは、Ver.5.6 からサポートしたJava言語用APIによる、「 グラフ描画ライブラリとしての用途 」を後押しするためです。

というのも、単体で使うアプリ用途と比べて、ライブラリとしての用途では、ライセンス面や開発形態のオープンさがより意識される(気にされる)ように思えるからです。 実際、私個人が何かライブラリを探す際にも、明らかにそのあたりは気にします。

その点では、メジャーなオープンソースライセンスを採用し、GitHub上で開発するのがベストそうに思えたので、Ver.6 系ではそうする事にしました。

3D描画エンジンを換装可能に
− その気になれば自作も可能

次期版リニアングラフ3Dでは、アプリ本体と3D描画エンジンとの間が、オープンなAPIによって完全に区切られます。 そして、そのAPI仕様を満たす3D描画エンジンを、アプリ側から読み込んで使用できるようになります。

これにより例えば、「従来からの互換性を重視した描画エンジン」や、 「画質を少し妥協する代わりに非常に高速化された描画エンジン」、 「特殊な用途に特化してカスタマイズされた描画エンジン」などを、 用途に応じて換装して使用できるようになります。

また、その気になれば、ユーザー自身やサードパーティーの組織/企業が、独自の描画エンジンを自作して組み込む事も可能になります。 ゼロから自作しなくても、既存の描画エンジンを改造して使う事もできるため、標準のAPIでカバーできないような細かいニーズに対応しやすくなると思います。

高速なスクリプトエンジン搭載によるデータ変換など

RINEARNでは、アプリ内への組み込み用スクリプトエンジン「 Vnano 」も開発しています。次期版リニアングラフ3Dでは、このスクリプトエンジンを搭載する予定です。 これにより、プロット対象のデータに対して、複雑な変換や加工処理を、プログラマブル(ユーザー定義可能)な形で行う事ができます。

なお、Vnanoの処理速度は、倍精度スカラ演算で概ね1GFLOPS(10億回演算/秒)程度、配列同士の演算では10GFLOPS以上を発揮可能(共に上限値)で、これはスクリプトエンジンとしては結構高速な水準です。

そのため、複雑な数式や方程式を使うような、かなり重い変換処理でも、軽快にこなせる事が期待できます。

操作性やAPI互換性は維持、現行の Ver.5 系も当面は続投

と、ここまでは変更点ばかりを追ってきましたが、最後は「変わらない点(保ちたい点)」についてです。

まず、今回の刷新で根本的にテコ入れしたいのは内部構造なので、逆に表面的な部分はあまり変わりません。特に、画面デザインや操作性については、なるべく大きな変化を避けて、Ver.5 系とほぼ同じ感覚で扱えるようにしたいと思っています。 とにかく移行時の違和感を減らす事を重視するつもりです。

また、ライブラリとして使う際のAPI互換性も確保します。これは将来的にも、よほどの事がない限り壊さないと思います(仕様がまずかった等で、非推奨化するAPIはたまに出てしまうとは思いますが)。

それでも、現行版の Ver.5 系は13年間に渡って公開してきたバージョンなので、いきなり次期版に移行するのも怖いですし、 Ver.6 系の中盤あたり(6.3くらい?)までは Ver.5 系も平行して更新していこうかなと思っています。 その方が、作る側としても落ち着いて作れますからね。

今回のお知らせは以上の通りです。次期版リニアングラフ3Dの情報は、また改めて何回かの記事にまとめて、このコーナーで詳しくお伝えしていく予定です!