LabVIEW(LabVIEW)[1] :3 は、ナショナルインスツルメンツ社が開発・販売するグラフィカルシステム設計・開発 プラットフォームであり、ビジュアルプログラミング言語を用いたプログラミング環境をベースにしています。データ収集、計測器制御、産業オートメーションなどに広く利用されています。複雑な試験・計測システムの設計・導入のためのツールを提供します。[2]
ビジュアル(グラフィカル)プログラミング言語は「G」(Gコードと混同しないでください)と呼ばれます。これは、もともとナショナルインスツルメンツによって開発されたデータフロー言語です。[3] LabVIEWは、 macOSやその他のUnixおよびLinux、Microsoft Windowsなど、さまざまなオペレーティングシステム(OS)でサポートされています。
LabVIEWの最新バージョンは、LabVIEW 2024 Q3(2024年7月リリース)とLabVIEW NXG 5.1(2021年1月リリース)です。[4] National Instrumentsは、2020年4月28日に非商用利用向けのLabVIEWおよびLabVIEW NXG Communityエディションを無償でリリースしました。[5]
LabVIEW "G" 言語で使用されるプログラミングパラダイムは、データの可用性に基づいています。関数に十分なデータが利用可能であれば、関数は実行されます。実行フローは、グラフィカルブロックダイアグラム(LabVIEWソースコード)の構造によって決定されます。プログラマはブロックダイアグラム上にノードを配置し、ワイヤを描画して接続します。ノードは、制御器、表示器、構造体、関数、または再帰的に別のブロックダイアグラムのいずれかになります。単純な4ノードブロックダイアグラムの例としては、2つの制御器と1つの表示器が加算関数に配線されており、表示器には2つの制御器の合計が表示されます。ノードを接続するワイヤはデータを変数として伝播し、すべての入力変数(データ)が利用可能になるとすぐに、どのノードでも実行できます。これは複数のノードで同時に発生する可能性があるため、LabVIEWは概念的に並列実行が可能です。[6] : 1–2 マルチプロセッシングおよびマルチスレッドハードウェアは、組み込みスケジューラによって自動的に活用され、実行準備が整ったノード上で複数のOSスレッドを多重 化します。

LabVIEW は、ユーザインタフェース(フロントパネルと呼ばれる)の作成をプログラム開発サイクルに統合します。LabVIEW プログラムは、1 つ以上の仮想計測器(VI) の集合です。各 VI には、フロントパネル、バックパネル、コネクタパネルの 3 つのコンポーネントがあり、すべてユーザに対してグラフィカルに表示されるノードとワイヤで構成されています。フロントパネルは、制御器と表示器を使用して構築されます。制御器は入力であり、ユーザが VI に情報を提供できるようにします。表示器は出力であり、VI に与えられた入力に基づいて結果を示しますまたは表示します。バックパネルは、グラフィカルソースコードを含むブロックダイアグラムで構成されます。フロントパネルに配置されたすべてのオブジェクトは、バックパネルのブロックダイアグラムに端子として表示されます。ブロックダイアグラムには、関数パレットから選択されたストラクチャと関数も含まれており、これらは制御器に対する操作を実行し、表示器にデータを供給します。コネクタパネルには、前面パネルと背面パネルのノードとの間でワイヤが接続される端子があり、接続されている可能性のある上流 (呼び出し側) VI と下流 (呼び出される側) VI の背面パネル内で VI を表すために使用されます。
VIを実行する方法は2つあります。1つはプログラムとして単独で実行し、フロントパネルをユーザーインターフェースとして利用する方法、もう1つは、別のVIのブロックダイアグラム上にドロップし、コネクタパネルを介してVIノードに接続したノードとして扱う方法です。この場合、VIはより大きなプログラム内のサブルーチンとして実行され、フロントパネルはVIノードの入出力を制御します。そのため、各VIは、より大きなプログラムにサブルーチンとして組み込む前に、スタンドアロンプログラムとして簡単にテストできます。
"G" のグラフィカルアプローチにより、プログラマー以外の人でも、使い慣れた実験装置の仮想表現をドラッグ&ドロップするだけで簡単にプログラムを作成できます。LabVIEW プログラミング環境には、小規模なアプリケーションの作成をガイドし、簡素化するためのサンプルプログラムとドキュメントが含まれています。他の入門用プログラミングガイドと同様に、動作する "G" プログラムの作成が容易なため、プログラマーは高品質な "G" プログラミングに必要な専門知識を過小評価してしまう可能性があります。複雑なアルゴリズムや大規模なコードを扱うには、LabVIEW の特殊な構文とメモリ管理のトポロジに関する広範な知識が必要です。最先端の LabVIEW 開発システムは、スタンドアロンアプリケーションの構築機能を備えています。さらに、"G" の本質的な並列性を活かした、 シンプルなクライアント・サーバーモデルで通信する分散アプリケーションを作成することも可能です。
LabVIEWアプリケーションは通常、デザインパターンと呼ばれるよく知られたアーキテクチャ([要出典])を用いて設計されます。グラフィカルLabVIEWアプリケーションで最も一般的なデザインパターンを下の表に示します。
LabVIEWは、計測器、カメラ、その他のデバイスとのインタフェースを幅広くサポートしています。ユーザーは、直接バスコマンド(USB、GPIB、シリアル)を記述するか、デバイスを制御するためのネイティブ「G」関数ノードを提供する高レベルのデバイス固有ドライバを使用することで、ハードウェアとのインタフェースを確立します。ナショナルインスツルメンツは、計測器ドライバネットワーク(IDNet)から数千種類のデバイスドライバをダウンロードできるようにしています。[10]
LabVIEW には、 CompactDAQおよびCompactRIOハードウェア プラットフォーム、Measurement and Automation eXplorer (MAX)、Virtual Instrument Software Architecture (VISA) ツールセットなど、他の National Instruments 製品のサポートが組み込まれています。
LabVIEWには、GコードをサポートされているCPUプラットフォームのネイティブコードに変換するコンパイラが含まれています。グラフィカルコードはデータフロー中間表現(DFR)に変換され、 LLVMベースのコンパイラによって実行可能なマシンコードのチャンクに変換されます。これらのコードチャンクはGランタイムエンジンによって呼び出され、グラフィカルコードの高速で高性能なネイティブ実行を実現します。編集プロセスではLabVIEW構文が厳密に適用され、Gコードを実行または保存すると、コンパイラが自動的に呼び出されます。Gコードは、ソースコードと実行コードの両方を含む単一のバイナリファイルに保存されます。実行はランタイムエンジンによって制御されます。ランタイムエンジンには、G言語で定義された一般的なタスクを実行するためのプリコンパイル済みコードが含まれています。ランタイムエンジンは実行フローを管理し、サポートされているオペレーティングシステム、グラフィックシステム、ハードウェアコンポーネントへの一貫したインターフェースを提供します。ポータブルなランタイム環境を使用することで、ソースコードファイルはサポートされているプラットフォーム間で移植可能です。 LabVIEWプログラムは同等のコンパイルされたCコードよりも遅いですが、プログラムの最適化によって速度の問題を軽減できる場合が多くあります。[11]
LabVIEWには、データ集録、信号生成、数学演算、統計、信号調整、解析、積分、フィルタリング、そしてハードウェアセンサーからのデータキャプチャといった特殊機能のための関数を含む多数のライブラリが含まれています。さらに、信号処理、解析、数学演算のための組み込み関数を備えたテキストベースのプログラミングコンポーネントであるMathScriptも含まれています。MathScriptはスクリプトノードを用いてグラフィカルプログラミングと統合することができ、 MATLABと概ね互換性のある構文を使用します。[12]
LabVIEWは本質的に並行処理を前提とした言語であるため、例えば2つ以上の並列Whileループを描画し、それらを2つの別々のノードに接続するなど、マルチスレッドを介して複数のタスクを並列に実行するようにプログラミングすることが非常に簡単です。これは、テストシーケンス、データ記録、ハードウェアインタフェースなどのプロセスを並列に実行することが一般的に行われているテストシステムの自動化に大きなメリットをもたらします。
LabVIEWプラットフォームの長年にわたる普及と人気、そしてユーザーによる機能拡張の容易さにより、コミュニティからの貢献を通じて、サードパーティ製アドオンの大規模なエコシステムが形成されてきました。これらのアドオンのほとんどは、LabVIEWアドオンの公式パッケージマネージャであるVI Package Manager (VIPM) [13]を使用して、LabVIEWに直接ダウンロードしてインストールできます。ナショナルインスツルメンツは、 NI Tools Networkと呼ばれる、無料および有料のLabVIEWアドオンのマーケットプレイスも運営しています。
教育機関向けに、学習目的の低価格なLabVIEW学生版をご用意しています。また、複数の電子メールグループやインターネットフォーラムを通じて活発なLabVIEWユーザーコミュニティも存在します。
ナショナルインスツルメンツは低価格のLabVIEW Home Bundle Editionを提供しています。[14]
ナショナルインスツルメンツは、非商用利用に限り無料で利用できるLabVIEW Community Editionを提供しています。[15]このバージョンには、LabVIEW Professional Editionのすべての機能が含まれており、透かしは表示されません。また、非商用利用のためのLabVIEW NXG Webモジュールも含まれています。これらのエディションは、K-12(小中学校)でもご利用いただけます。[16]
LabVIEWはナショナルインスツルメンツの独自製品です。C言語やFortranなどの一般的なプログラミング言語とは異なり、LabVIEWはサードパーティの標準化委員会によって管理または標準化されていません。
「G」言語は非テキスト言語であるため、バージョン管理、並列比較(diff)、バージョンコードの変更追跡といった一般的なソフトウェアツールを、テキスト言語と同様に適用することはできません。ただし、Subversion、CVS、Perforceなど、コードの比較とマージを可能にするソースコード管理(バージョン管理)ツールもいくつかあります。[17] [18] [19]
2005 年には、LabVIEW 8.0 から始まり、毎年恒例の National Instruments カンファレンス NI Week に合わせて 8 月の第 1 週頃にメジャー バージョンがリリースされ、翌年の 2 月にバグ修正リリースが続きました。
2009年、National Instrumentsはリリースにリリース年に基づいた名前を付けるようになりました。バグ修正はサービスパックと呼ばれます。例えば、2009年のサービスパック1は2010年2月にリリースされました。
2017 年、National Instruments は年次カンファレンスを 5 月に変更し、Windows Presentation Foundation (WPF) 上に構築され、完全に再設計された LabVIEW NXG 1.0 とともに LabVIEW 2017 をリリースしました。
OpenGとLAVAコードリポジトリ(LAVAcr)は、幅広いオープンソースのLabVIEWアプリケーションとライブラリのリポジトリとして機能します。SourceForgeでは、コードを記述できる言語の1つとしてLabVIEWが挙げられています。
VI Package Managerは、LabVIEWライブラリの標準パッケージマネージャとなりました。RubyのRubyGemsやPerlのCPANと用途は似ていますが、 Synaptic Package Managerに似たグラフィカルユーザーインターフェースを提供しています。VI Package Managerは、LabVIEW用のOpenGライブラリ(およびその他のライブラリ)のリポジトリへのアクセスを提供します。
MathMLを「G」コードに変換するツールが存在する。 [29]
National Instrumentsは、LabVIEWのテスト、計測、制御機能の多くをMicrosoft Visual Studioで使用できるクラスセットとして提供するMeasurement Studioも提供しています。これにより、開発者はテキストベースの.NET Framework内でLabVIEWの強みを活用できます。また、National InstrumentsはANSI Cプログラマー向けの代替として LabWindows/CVIも提供しています。
アプリケーションでシーケンスが必要な場合、ユーザーは多くの場合、LabVIEW を National Instruments TestStandテスト管理ソフトウェアと組み合わせて使用します。
Chインタープリタは、スクリプト作成のためにLabVIEWに組み込むことができるC / C++インタープリタです。 [30]
DSP Robotics の FlowStone DSP も、LabVIEW に似たグラフィカル プログラミング形式を使用しますが、ロボット業界に限定されています。
LabVIEWは、多分野・多目的最適化・設計環境であるmodeFRONTIERと直接連携するノードを備えています。modeFRONTIERは、ほぼあらゆるCAEツールとの連携を可能にするように設計されており、どちらも同じプロセスワークフロー記述の一部となり、modeFRONTIERで利用可能な最適化技術によって仮想的に駆動することができます。
{{cite journal}}: CS1 maint: multiple names: authors list (link){{cite journal}}: CS1 maint: multiple names: authors list (link){{cite journal}}: CS1 maint: multiple names: authors list (link){{cite journal}}: CS1 maint: multiple names: authors list (link){{cite journal}}: CS1 maint: multiple names: authors list (link)