[ 前へ | 目次 | 次へ ]
2024/02/05
Japanese English

各ソフトウェアをアップデート、リニアングラフのコマンド拡張やVCSSLの英語対応など

RINEARNでは本日、リニアングラフ3D&2DとVCSSLのアップデート版をリリースいたしました。

今回の更新は、下記の目次の通り、大きく分けて「リニアングラフのコマンド機能強化」と「VCSSLの英語対応」の2つです。 今回の記事では、それぞれを掘り下げてお知らせいたします!

リニアングラフ3D&2Dのコマンド機能を強化

それでは、まずはリニアングラフの更新内容からご紹介しましょう。 リニアングラフには、3次元プロット用の「リニアングラフ3D」と、2次元プロット用の「リニアングラフ2D」がありますが、今回の更新は両方に共通しています。

今回は、リニアングラフをコマンドで使用するための機能に、結構大幅なテコ入れを行いました。

従来も一応はコマンドで使えたが…

これまでも、一応はリニアングラフをコマンドで使用できたものの、オプションの類がほぼ無く、「開くファイルを指定しつつ起動する」くらいしかできませんでした。 従って、起動後の操作は全て、GUI上で手動で行う必要がありました。

ただ、そもそもリニアングラフでは制御用APIをサポートしているため、複雑な操作を自動で行いたい場合、APIを叩くプログラムを書けばほぼ何でも可能です。 そのため、コマンド周りは、機能不足でも他の手段でカバーできてしまうため、これまであまり注力していませんでした。

コマンドもコマンドで重要、という声

しかし最近、コマンド周りの強化をリクエストする声をいただいて、その提案が素晴らしい内容だったため、考え方が一気に変わったのが今回の更新に繋がっています。

具体的に、そのリクエストを読ませていただいて気付いた点としては:

  • 設定ファイルを読ませるオプション」と、「画像を出力して終了するオプション」の2つさえあれば、実用でよくある作業をほぼ自動化できる。そのたった2つが有るか無いかで、汎用性が天と地ほど変わる。
  • 現状の自動処理では、APIを叩くプログラムを実装したり、Javaの場合は開発環境を導入したり、といった事が必須になるが、それは「ちょっとした自動化のニーズ」には面倒すぎる。
  • 連続的な処理も、ある程度はシェルスクリプトでカバーできる。シェルスクリプトは、特定のプログラミング言語よりも、書き慣れている人の母数が恐らく各段に多い。

リクエストには、想像でコマンドラインの例も書いていただいていたのですが、それを見た瞬間「これ絶対めっちゃ便利なやつだ」と感じて、速攻で実装して次のバージョン(今回のリリース)に取り入れた、という次第です。

素晴らしいリクエストをご提案いただいた方には、この場をお借りして本当に御礼申し上げます。

ちなみに米国のユーザーさんだったんですが、やはりさすがのプレゼンのうまさですよね。短い文でも。

実際に使うには、まずソフトのフォルダをどこか定位置に配置

それでは、ちょっと実際に使ってみましょう。

リニアングラフをコマンドラインで使うには、まず、ソフト全体が入っているフォルダを、どこか固定的な場所に「据え置き(すえおき)」する必要があります。

ここでは(行儀は悪いですが)簡単な例として、Windows のCドライブ直下に「RINEARN」というフォルダを作り、その中にソフトのフォルダを置いたとしましょう。以下の図の通りです:

Cドライブ
|
+- RINEARN フォルダ(新規で作る)
      |
      +- rinearn_graph_3d_5_6_36 フォルダ (配置する)
            |
            +- bin フォルダ
            |
            +- etc フォルダ
            |
            …

ここで重要なのが bin フォルダです。この bin フォルダの場所を、「絶対パス」というテキストで表すと、以下の通りになります:

C:\RINEARN\rinearn_graph_3d_5_6_36\bin

この絶対パスの内容を、すぐ後で使います。

こういった絶対パスの内容は、最近のWindowsだと、Shiftキーを押しながら「bin」フォルダを右クリックし、「パスのコピー」というメニューを選択すると、自動でコピーできます。昔は面倒だったんですよね…

コマンドで使うために「パスを通す」

で、この絶対パスを、Windows の環境変数「 Path (またはPATH) 」というものに登録すれば、コマンド入力画面で使えるようになります。いわゆる、「パスを通す」と呼ばれる作業ですね。

Windows 10や11をご使用の場合は、以下の手順で登録できます。 ただ、既にある値をうっかり消してしまうと、PCの動作が色々とおかしくなるというリスクがあるので、初めての方は、詳しい人に付き添ってもらう事をおすすめします。 もしくは、新しいユーザーアカウントを作って、そっちで設定の練習をしてみる、等もおすすめです。

  • 1. 「スタート」メニューを押し、Windows 10 では歯車アイコンの「設定」を開く。Windows 11 ではそのまま。
  • 2. 検索欄に「環境変数」と入力し、表示される中から「環境変数を編集」というメニューを開く。
  • 3. 「〇〇のユーザー環境変数」のリストに、「Path」や「PATH」という変数があれば、選択して「編集」ボタンをクリックする(無い場合はすぐ後で)。
  • 4. すると色々な絶対パスが並ぶリストが表示される。ここで「新規」を押して、上述した絶対パス(C:\RINEARN\...\bin)の内容を貼り付けて「OK」で閉じる。
  • 5. 他の画面も「OK」で閉じる。が、ちょっとでも何かミスった不安がある場合は、「キャンセル」を押す。不安なまま確定してしまうのは絶対NGです!

もし、3. のステップで「Path」や「PATH」が無かった場合は:

  • 3. 「〇〇のユーザー環境変数」のリストに、「Path」や「PATH」という変数が、何度入念に確認しても絶対に無い場合は、「新規」ボタンをクリックして「新しいユーザー変数」の画面を開く。

    そして、「変数名」の欄に「Path」と入力する。

    なお、同名の変数があった場合は警告等が出ずに上書きされてしまうので要注意です! 上書き前の内容が吹っ飛びます! 心配になった場合は一旦キャンセルしましょう。

  • 4. 「変数値」の欄に、上述した絶対パス(C:\RINEARN\...\bin)の内容を貼り付けて「OK」で閉じる。
  • 5. 他の画面も「OK」で閉じる。が、ちょっとでも何かミスった不安がある場合は、「キャンセル」を押す。不安なまま確定してしまうのは絶対NGです!

以上で、いわゆる「パスを通す」作業は完了です。PCに、コマンドラインで色々やる環境を整備する際は、この作業はほぼ不可避なので、どこかで慣れる必要があります。ただ、既存設定を吹き飛ばすと本当にシャレにならないので、油断は禁物です。 焦らずゆっくりやりましょう。指差し確認してもいいくらい。

ちなみに実は、この設定画面は近年の Windows でかなり改善されたほうで、昔(XPとかの頃)はもっとミスりやすい恐ろしい画面でした。

Linux の場合はシェルのログイン設定時のスクリプトとかに指定

以上は Windows をご使用の場合ですが、別種のOS(Ubuntu やその他 Linux ディストリビューション等々)を使用されている場合は、この「パスを通す」操作はそれぞれ異なります。

また、同じOSでも使ってるシェルによって違ったりするので、結構(説明するのが)ややこしいです。 そのため、Web で「環境変数 path 設定 (OS名)」とか「環境変数 path 設定 (シェル名)」とかで検索して、ご使用と同じ環境での設定ガイド記事をご参照ください。このページよりもよっぽど親切なガイドページがたくさんあります。

その際、ソフトは「 /usr/local/bin/.../rinearn_graph_3d_5_6_36/ 」等の適当な場所に据え置けばOKです。そして、その中の bin ディレクトリのパスを、環境変数 PATH に追加してください。 加えて、bin ディレクトリの中にある「ring3d」というファイルに実行権限を付与しておいてください( chmod +x ring3d )。

コマンドでリニアングラフを起動してみる

さて、パスが通ったら、コマンドで起動してみましょう。

コマンドで色々やるには、そのための入力画面を立ち上げます。Windows だと「コマンドプロンプト」や「PowerShell」等、他のOSだと「端末」とか「ターミナル」とかその他色々ですね。

コマンドプロンプト や PowerShell は、Windows のバージョンによって場所が結構変わるのですが、 最近は画面下のタスクバーからアプリを検索できるので、初回はそこに打ち込んで出した方が早いです。コマンド作業をよくやる場合はタスクバーに登録しておくと便利です。

他のOSでは出し方が様々ですが、こちらも最近はアプリを検索する画面で「端末」とか「ターミナル」とか入れると出てきます。なお、「 bash 」とか「 dash 」とか、シェルの名前を入れても出てこないので注意です。シェル自身と、それを包む「コマンド入力画面」のアプリ名は別扱いなので。ややこしいですね…

コマンド入力画面を起動したら、以下のように入力してみましょう:

ring3d

これでリニアングラフ3Dが起動します。

3Dではなく、リニアングラフ2Dを起動したい場合は、これまでと同様にパスを通した上で(リニアングラフ3Dに同梱はされていないので、別途通す必要があります)、以下のように入力します:

ring2d

これで、今度は以下のような画面が起動します:

これ以降、ring3d コマンドも ring2d コマンドも使い方は全く同じなので(プロット結果が3Dグラフか2Dグラフかだけが異なります)、需要の多い ring3d の方で説明します。

データファイルを開きつつ起動する

一番簡単な実用例として、データファイルを指定し、それを開いた状態で起動するやつをやってみましょう。

そのためには準備として、まずデータファイルがある場所に「 cd 」する必要があります。これは、GUIでフォルダを開きながら移動していく操作の、コマンド版といった感じです。 コマンド作業には「今の作業フォルダ」のようなもの(カレントディレクトリと呼びます)があり、cd コマンドは、指定された絶対パスにあるフォルダを、作業フォルダに設定します。

リニアングラフ3Dには、サンプルのデータファイルがいくつか同梱されているため、そのフォルダに「cd」してみましょう:

cd C:\RINEARN\rinearn_grapg_3D_5_6_36\SampleDataFile

これで、上記のフォルダが、コマンド処理の作業フォルダになりました。 このように、何かしらのデータファイルを開く際は、あらかじめ、そのファイルがあるフォルダに「 cd 」してから作業します。

ちなみに上のように、コマンド画面でフォルダのパスを入力する場面では、途中まで入力した状態で Tab キーを押すと、残りの一部が補完される(複数押すと別の補完候補になる)ため、うまく使うとかなり楽になります。

また、大抵の環境(WindowsでもLinuxでも)では、GUI画面でフォルダをマウスで掴み、そのままコマンド入力画面にドラッグ&ドロップすると、絶対パスが入力された状態になります。 手入力よりもそっちの方が楽かもしれません。このあたりは、かなり人によって好みが分かれますが…

この状態で「 dir 」(コマンドプロンプトの場合) または「 ls 」(PowerShellやLinux等、ちなみに「l」は小文字のエルです) というコマンドを打つと、作業フォルダ内のファイル一覧が表示されます:

(表示内容はOSやシェルによって微妙に異なり、以下は要約です)
.
..
MatrixSample_マトリックス書式サンプル.csv
MembranePlotSample_面プロットサンプル.txt
MultiSeriesSample_複数系列サンプル.txt
4ColumnsSample_4列書式サンプル.txt
LinePlotSample_線プロットサンプル.txt

ここでは「MembranePlotSample_面プロットサンプル.txt」を開きつつ起動してみましょう:

ring3d MembranePlotSample_面プロットサンプル.txt
上記も、「ring3d Mem」まで重力して Tab キーを押すと、残りが補完されます。

すると以下のように、指定したファイルを開いた状態の3Dグラフが表示されます:

データファイルを開いたら画像を保存して終了する

次に、「上記同様にデータファイルを開きつつ起動し、表示された3Dグラフを、画像に保存してすぐ終了する」という操作をしてみましょう。これには、以下のようにコマンド入力します:

ring3d MembranePlotSample_面プロットサンプル.txt --saveimg temp.png --quit

すると、グラフ画面自体はすぐ閉じますが、作業フォルダ内にPNG形式の画像ファイル「temp.png」が保存されます。

ここで「--saveimg」が画像を保存するオプション、「--quit」が処理完了後にソフトを閉じるオプションです。

なお、保存対象のファイルが既に存在する場合、上記は上書きするかどうかを訪ねてきます。無確認で上書きしてほしい時は、「--overwrite」オプションを指定てください。

設定ファイルを適用する

上の例で、さらにグラフの角度/範囲とか、プロットオプション(点で描くか面を張るか等)とかを細かくいじりたい場合、まず設定ファイルを作っておいて、それをコマンドで読み込み指定します。

例えば、作業フォルダの中にある設定ファイル「TempSettings.ini」を読み込むには:

ring3d MembranePlotSample_面プロットサンプル.txt --saveimg temp.png --config TempSettings.ini --quit

のように、「--config」オプションでその設定ファイルの名前を指定します。または、作業フォルダからみた相対パスや、絶対パスも指定できます。下図は、面プロットする設定ファイルを指定した例です:

一方、「クイック設定」機能で使っている設定ファイルは、ソフトの「RinearnGraph3DQuickSetting」フォルダ内にありますが、それをわざわざ相対パスや絶対パスで指定するのは面倒ですよね。 そのため、それらについては「--config」の代わりに「--quick」オプションを使うと、ファイル名だけで指定できます:

ring3d MembranePlotSample_面プロットサンプル.txt --saveimg temp.png --quick TempQuickSettings.ini --quit

実はこの「--quick」オプションは、今回のリクエストをくださった方のアイデアです。恐らく非常に便利ですよね。感謝です!

その他のオプション等

以上が、だいたいよく使いそうな場面を想定した例でしたが、全オプションの一覧や詳細を見たい場合は:

ring3d --help

で読めます。今後も恐らく、しばしばオプションを追加したりしますので、たまにチェックしてみてくださいね。

VCSSLの全メッセージが英語化可能に

続いて、今回の更新のもう一つのトピック、VCSSLについてです。

VCSSLについて

VCSSLはC言語系のスクリプト言語で、リニアングラフ3Dにおいても、制御用言語としての役割を担っています。というか恐らく、VCSSLのユーザーさんの半分以上がリニアングラフ3Dの制御目的だと思います。詳しくは正確な統計が無いので分かりませんが。

リニアングラフ3Dの制御はJava言語でもできますが、しかし「Javaの開発環境を構築するのはちょっと大げさすぎる」という位の、比較的ライトな自動処理はもっぱらVCSSLが担っています。 gnuplot で例えると、plt ファイル+αくらいのポジションでしょうかね。

そのあたりは、今回のコマンド拡張+シェルスクリプトでもある程度カバーできるようになりました。 が、シェルスクリプトはシェルスクリプトで、ちょっと混み入った事をやろうとすると黒魔術みたいになるし、そういう領域は今後もVCSSLがメインで担っていく事になります。 シェルスクリプトよりはだいぶガチな事を高速にやれます。

英語対応が停滞

一方でVCSSLは、ライトな用途向けとは言っても一応プログラミング言語なので、普通のアプリ類と比べると、ドキュメントの総量がかなり多いです。 なので、それらの英訳がなかなか進まないという課題がありました。なかなか進まないというか、「果たして完了はいつの日になる事やら…」といったレベルの感じでした。

で、日本語のドキュメントしかないのに、エラーメッセージだけ英語化しても、ほぼ意味がないという事もあり、エラーメッセージも長らく日本語のみの対応でした。

AIがドキュメント英訳の転機に

一方でRINEARNでは昨年、ChatGPTさん(大規模言語モデル型のAI)に協力してもらいながら、技術的な文書を英訳していくプロジェクトを開始しました。詳細は下記の記事をご参照ください:

上記は最初、半ば実験的な試みとしてスタートしたのですが、だいぶ色々と慣れてきて、前回のお知らせのような長く難解な内容も、無理なく高速に訳せるようになりました

で、色々とAI達の役割分担や作業フローを調整しながら、スピードと品質のバランスとかを探っているうちに、なんか「これならVCSSLの全ドキュメントを一気に英訳できそうでは?」みたいな見通しが立ってきました。急に。

で、実際に英訳をぼちぼち進めてみてるんですが、今年の前半には全部完了してしまいそうな気配がしています。 突然で私もにわかに信じ難いんですが、本当にAIで完全に時代が変わりましたね…

逆に、エラーメッセージの英訳に速く着手しないと、という状況に

そうなると、うかうかしていられないのが、実行環境側のエラーメッセージの英訳です。 ドキュメントとエラーメッセージ、両方を翻訳できて初めて意味があるので、後者が遅れたら台無しです。

とはいえ、VCSSLの実行環境は、今現在トータルでたぶん十数万行くらいある上に、後発のVnanoよりも設計をだいぶやらかしていて、あちこちの処理にエラーメッセージが直接コーディングされている、という有様(ありさま)です。

つまり、エラーメッセージを英訳するには、十数万行のコードを一行ずつ読んでいって、「あ、この行はエラーメッセージだ」って所を見つけたら英訳、みたいな事を頭から尻尾までやる必要があるわけです。

そんなん絶対めっちゃ時間かかるやつなんですが、でもドキュメント英訳の進捗速度からすると、こっちも2024年の序盤あたりに済ませないと間に合わない。足を引っ張ってしまう。という状況に唐突になったわけです。 これまでは、「どうせドキュメント英訳が数年くらいかかるから、それまでにやればいいや」と気長に構えていたのに…

で、お正月休みにゾンビみたいになりながら頑張って一気に済ませました。それが今回の更新に入っています。

日本語/英語の切り替え方法

では、実際に言語を切り替える方法なのですが、一番分かりやすいのは、各言語向けの公式ページからダウンロードしてもらう事です。すると、あらかじめ各言語向けに設定されたやつがダウンロードされるので、初回起動時点から英語(または日本語)になっています。

一方、VCSSLのプログラムを実行すると立ち上がる「コンソール画面」のメニューバーから、「設定 / Settings」> 「言語の選択 / Select Language」を選んで切り替える事もできます。 共用PCとかにインストールして、ユーザーによって言語を切り替えたい場合は、この方法になります。

今回の更新内容は、以上の通りです。

最後に余談なんですが、VCSSLの実行環境は、上でも述べた通り設計がだいぶアレなので、そろそろゼロから新しく再実装しようと考えています。具体的には次の 4.0 からで、そのタイミングでオープンソース化もするつもりです。

開発の順番的には、次期版リニアングラフ3D(Ver.6)が完成してリリースした後になりますが、設計自体は既にあれこれ考え始めています。またこのコーナーで、追い追いお伝えしていきます!


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

各ソフトウェアをアップデート、リニアングラフのコマンド拡張やVCSSLの英語対応など
2024/02/05 - 各ソフトの一斉アップデートの内容をお知らせします。今回は、リニアングラフのコマンド機能を大幅拡張したのがメインです。また、VCSSLのメッセージ類の英語対応も行いました。

Vnano の Ver.1.1 で実装した反復計算高速化の内側
2024/01/17 - 前回のお知らせ記事の続編です。スクリプトエンジン Vnano の Ver.1.1 において実施した高速化を、エンジン内部の実装面から掘り下げて解説します。

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

各ソフトウェアをアップデート、リニアングラフのコマンド拡張やVCSSLの英語対応など
2024/02/05 - 各ソフトの一斉アップデートの内容をお知らせします。今回は、リニアングラフのコマンド機能を大幅拡張したのがメインです。また、VCSSLのメッセージ類の英語対応も行いました。

Vnano の Ver.1.1 で実装した反復計算高速化の内側
2024/01/17 - 前回のお知らせ記事の続編です。スクリプトエンジン Vnano の Ver.1.1 において実施した高速化を、エンジン内部の実装面から掘り下げて解説します。

スクリプトエンジン Vnano の Ver.1.1 を公開、同じ内容の反復実行が劇的に高速化
2023/12/22 - スクリプトエンジン Vnano の最新版を公開しました。同じ計算式やスクリプトを反復実行する速さが、大幅に向上しました。次期版リニアングラフ3D内での活用例を交えつつ、詳しく解説します。

コードアーカイブ新着
[公式ガイドサンプル] 各種の図形や画像を描画する

「VCSSL 2DCG開発ガイド」内のサンプルコードです。図形や画像などを描画します。
2022/12/16
角度の「度」とラジアンとを相互変換し、図示もするツール

45度などの「度」の値と、ラジアンの値とを相互に変換できるツールです。対応する角度の図示もできます。
2022/11/22
[公式ガイドサンプル] 立体モデルを回転させるアニメーション

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを、アニメーションで回転させ続けます
2022/11/18
[公式ガイドサンプル] 立体モデルを回転させる

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを、指定した角度だけ回転させます。
2022/11/17
[公式ガイドサンプル] 四則演算の計算順序や、カッコを使った順序指定

「VCSSLスタートアップガイド」内のサンプルコードです。四則演算が計算される順序や、カッコを使って順序を指定する方法を例示します。
2022/10/31