この記事では、LabVIEW2026Q3バージョンから可能になった、Nigelによるコード生成機能について、ピクチャの操作が関係した例を紹介しています。
ピクチャをふんだんに使用するプログラムは少ないかもしれませんが、様々な場面の表現力を高めるためには役立つので、コード生成により取り入れやすくなるのはうれしいポイントになります。
なお、Nigelによるコード生成の基本的な使い方については以下の記事を参考にしてみてください。
また、今回の記事で扱っている内容の実際の操作の様子は以下のビデオでも紹介しています。
LabVIEWにおけるピクチャとは
LabVIEWでピクチャを使用する場面は多くないかもしれませんが、Vision関連のツールキットを使用しないのであれば画像ファイルを扱うためにはピクチャを扱えます。
また、制御器パレットにある制御器、表示器ではできないような、アニメーションチックな表現を可能にできるのもピクチャを使用する理由になります。
一方で、基本図形の描画等のための関数では、ピクチャ表示器上の座標の情報を指定して、線や点、四角や丸を描いたりして、この座標指定というのが結構難しかったりします。
そのため、扱いづらさの面でピクチャを積極的にプログラムに取り入れるということに難がある場合もありますが、コード生成でその難を解消できれば、LabVIEWにおける表現力が一気に大きくなります。
ピクチャ操作が入ったコード生成指示例
では、ピクチャ操作が入ったコード生成の指示の例を紹介していきます。
物体の跳ね返り運動を表現
連続的に何かの動作を示すためにピクチャを使用することができ、その簡単な例として、以下のような物体の落下及び跳ね返りの様子を表現するためのプロンプトを与えてみました。
フロントパネル上で指定した反発係数の値に応じて球が落下し地面で跳ね返り再び落下して跳ね返るということを繰り返すアニメーションをピクチャで表現してください。
生成されたコードは以下のようなものです。

実際、なかなか出来のいいコードが生成されました。

実行の様子はなかなかスクリーンショットでは伝わりづらいと思うので、冒頭で紹介しているYouTube動画をご確認ください。

積分と区分求積を表現
次も、LabVIEWでよく書かれるであろうプログラムの種類とは言えない部類の話ですが、表現力を確認するため、そして教育的な立場での指示に対応できるかを見るため、積分と区分求積という考え方をうまく表現できるかについてのプロンプトを試してみました。
区分求積法と積分をピクチャ上で説明するような教育的な目的で使えるプログラムを生成してください。フロントパネル上には区分求積法の場合の切り分ける数nを指定できるようにしておき、nが無限大の場合には積分と一致することを示してください。
最終的に生成されたプログラムは以下の通りです。

ピクチャ絡みだと、実行するまでは「これが自分の意図した動作になっているのか」を判別するのは難しいのに加えて、プログラム自体もかなり大きくなっています。

使われているワイヤの数も多いですが、意味のまとまりでちゃんとクラスタの状態にしてデータを扱っていることがわかります。

様々な処理が実装されていて、自分で一からプログラムを作るとなると少し躊躇してしまうレベルです。

実行した結果としては、自分が想定していたよりもしっかりプログラムが作られていました。

物体同士の衝突を表現
最後に、物体同士の衝突の様子を表現させてみました。
単に2つの物体がぶつかるだけでは面白くないと思ったので、物体を3つにし、ある閉じ込められた空間を自由に飛び回って、衝突時にはちゃんと衝突反応をするプログラムが生成されるかを試してみました。
ある長方形の空間の中に3つのボールがあり、それぞれの初期位置、水平からの初期角度をもって運動し、長方形の内壁、あるいは別のボールに当たると物理法則に従って跳ね返る様子をピクチャで表現したプログラムを作ってください。
生成されたプログラムは以下のようなもので、相変わらずそこそこの規模です。

プログラムを実行すると、ちゃんと期待した通り、物体同士や壁への衝突で、予想されるであろう跳ね返り方をしていました。

中の処理は複雑なのでブロックダイアグラムの内容を詳細には追っていないものの、実行した結果を見る限り、正しそうな動作になっていて、ピクチャに関するこれまでのいくつかのプロンプトでのコード生成の「出来」を見る限り、なかなか有用だと思います。

これはこれで、プログラム中で各パラメータが正しく処理されているかどうかを追うのもかなり苦労します。

実行する限り、期待した通りの動作をする以上は、ブロックダイアグラム上のこれら演算はおそらく正しそうだと思いつつ、例えば物体が衝突した後の挙動をどのように計算しているのか、この規模になると特定の処理がどこで行われているかを見つけるのが難しくなります。

本記事では、Nigelによるコード生成についてピクチャ処理が関係してくるプログラム生成のためのプロンプトの例をいくつか紹介しました。
LabVIEWで書くようなプログラムでの出番は少ないかもしれませんが、少ないからこそ、慣れていなったりして、面倒な部分の実装をやってくれるという意味ではかなり使えると思います。
ここまで読んでいただきありがとうございました。


コメント