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 ]ナショナル インスツルメンツは、非商用利用向けの無料の LabVIEW および LabVIEW NXG Community エディションを 2020 年 4 月 28 日にリリースしました。[ 5 ]
LabVIEWの「G」言語で使用されるプログラミングパラダイムは、データの可用性に基づいています。関数に十分なデータが利用可能であれば、関数は実行されます。実行フローは、プログラマがノードを配置し、ワイヤを描画して接続するグラフィカルブロックダイアグラム(LabVIEWソースコード)の構造によって決定されます。ノードは、コントロール、インジケータ、構造、関数、または再帰的に別のブロックダイアグラムになります。単純な4ノードブロックダイアグラムの例は、加算関数にワイヤ接続された2つのコントロールとインジケータで、インジケータに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は、より大きなプログラムにサブルーチンとして組み込む前に、スタンドアロンプログラムとして簡単にテストできます。
「G」グラフィカルアプローチにより、プログラミング経験のないユーザーでも、使い慣れた実験機器の仮想表現をドラッグ&ドロップするだけで簡単にプログラムを作成できます。LabVIEWプログラミング環境には、小規模アプリケーションの作成をガイドし、簡素化するためのサンプルとドキュメントが含まれています。すべての入門プログラミングガイドと同様に、「G」プログラムを簡単に作成できるため、プログラマーは高品質な「G」プログラミングに必要な専門知識を過小評価してしまう可能性があります。複雑なアルゴリズムや大規模なコードの場合、プログラマーはLabVIEW特有の構文とメモリ管理のトポロジーに関する幅広い知識を持っている必要があります。最新のLabVIEW開発システムでは、スタンドアロンアプリケーションを構築する機能が備わっています。さらに、「G」の本来の並列性を活用したシンプルなクライアント/サーバモデルを使用して通信する分散アプリケーションを作成することも可能です。
LabVIEWアプリケーションは通常、デザインパターンと呼ばれるよく知られたアーキテクチャを使用して設計されます。グラフィカルなLabVIEWアプリケーションで最も一般的なデザインパターンを以下の表に示します。
LabVIEWには、計測器、カメラ、その他のデバイスとのインターフェースに関する広範なサポートが含まれています。ユーザーは、直接バスコマンド(USB、GPIB、シリアル)を記述するか、デバイスを制御するためのネイティブな「G」関数ノードを提供する高レベルのデバイス固有のドライバを使用することで、ハードウェアとインターフェースできます。ナショナルインスツルメンツは、Instrument Driver Network(IDNet)でダウンロード可能な数千ものデバイスドライバを提供しています。[ 10 ]
LabVIEWは、 CompactDAQやCompactRIOといったハードウェアプラットフォーム、およびMeasurement and Automation eXplorer(MAX)やVirtual Instrument Software Architecture (VISA)といったツールセットなど、他のナショナルインスツルメンツ製品に対するサポートを内蔵しています。
LabVIEWには、「G」コードをサポートされているCPUプラットフォームのネイティブコードに変換するコンパイラが含まれています。グラフィカルコードはデータフロー中間表現に変換され、 LLVMベースのコンパイラによって実行可能なマシンコードのチャンクに変換されます。これらのコードチャンクは「G」ランタイムエンジンによって呼び出され、グラフィカルコードの高速かつ高性能なネイティブ実行を実現します。LabVIEWの構文は編集プロセス中に厳密に適用され、「G」コードが実行または保存されると、コンパイラが自動的に起動されます。「G」コードは、ソースコードと実行可能コードの両方を含む単一のバイナリファイルに保存されます。実行はランタイムエンジンによって制御され、ランタイムエンジンには「G」言語で定義された一般的なタスクを実行するためのプリコンパイル済みコードが含まれています。ランタイムエンジンは実行フローを管理し、サポートされているオペレーティングシステム、グラフィックシステム、およびハードウェアコンポーネントに対して一貫したインターフェイスを提供します。ポータブルなランタイム環境を使用することで、ソースコードファイルはサポートされているプラットフォーム間で移植可能になります。LabVIEWプログラムは、同等のコンパイル済みCコードよりも低速ですが、プログラムの最適化によって速度の問題を軽減できる場合が多くあります。[ 11 ]
LabVIEWには、データ取得、信号生成、数学、統計、信号調整、解析、積分、フィルタリング、ハードウェアセンサーからのデータ取得などの特殊な機能を含む多数のライブラリが含まれています。さらに、信号処理、解析、数学の組み込み関数を備えたテキストベースのプログラミングコンポーネントであるMathScriptも含まれています。MathScriptはスクリプトノードを使用してグラフィカルプログラミングと統合でき、一般的にMATLABと互換性のある構文を使用します。[ 12 ]
LabVIEWは本質的に並行処理に対応した言語であるため、マルチスレッド処理によって複数のタスクを並列に実行することが非常に容易です。例えば、2つ以上の並列whileループを描画し、それらを2つの別々のノードに接続することで実現できます。これは、テストシーケンス、データ記録、ハードウェアインターフェースなどのプロセスを並列実行することが一般的なテストシステム自動化において、大きなメリットとなります。
LabVIEWプラットフォームの長きにわたる普及と人気、そしてユーザーがその機能を拡張できる能力のおかげで、コミュニティからの貢献により、サードパーティ製アドオンの大規模なエコシステムが発展してきました。これらのアドオンのほとんどは、LabVIEWアドオンの公式パッケージマネージャであるVIパッケージマネージャ(VIPM)[ 13 ]を使用して、LabVIEWに直接ダウンロードしてインストールできます。ナショナルインスツルメンツは、 NI Tools Networkと呼ばれる、無料および有料のLabVIEWアドオンのマーケットプレイスも運営しています。
教育機関向けに、学習目的で使用する低価格のLabVIEW学生版が用意されています。また、LabVIEWユーザーの活発なコミュニティがあり、複数の電子メールリスト(メールグループ)やインターネットフォーラムを通じて情報交換を行っています。
ナショナルインスツルメンツは、低価格のLabVIEW Home Bundle Editionを提供しています。[ 14 ]
ナショナルインスツルメンツは、非商用利用向けの無料版であるLabVIEW Community Editionを提供しています。[ 15 ]このバージョンにはLabVIEWのプロフェッショナル版に含まれるすべての機能が含まれており、ウォーターマークはなく、非商用利用向けのLabVIEW NXG Webモジュールも含まれています。これらのエディションは、K-12の学校でも使用できます。[ 16 ]
LabVIEWはナショナルインスツルメンツ社の独自製品です。C言語やFortranなどの一般的なプログラミング言語とは異なり、LabVIEWは第三者の標準化委員会によって管理または標準化されていません。
G 言語は非テキスト言語であるため、バージョン管理、並列比較 (または diff)、バージョンコード変更追跡などの一般的なソフトウェアツールは、テキストベースのプログラミング言語と同じようには適用できません。ただし、Subversion、CVS、Perforce など、コードの比較とマージを可能にするソースコード管理 (バージョン管理) ツールもいくつか存在します。[ 17 ] [ 18 ] [ 19 ]
LabVIEWの最初のリリースである1.0は、1986年10月下旬にリリースされ、当初はApple Macintosh専用でした。[ 20 ]開発者は当初、IBM PCの普及率の高さからIBM PCをターゲットにする予定でしたが、最初のプロトタイプではMacintoshをターゲットにした方が早いと判断しました。開発の過程で、PCプラットフォームが適切なウィンドウ環境を獲得するまでは、IBM PC版は実現不可能であることに気づきました。[ 20 ]
2005年以降、LabVIEW 8.0を皮切りに、メジャーバージョンは毎年恒例のナショナルインスツルメンツのカンファレンスであるNI Weekに合わせて8月の第1週頃にリリースされ、翌年2月にはバグ修正版がリリースされるようになった。
2009年、ナショナルインスツルメンツは製品のリリース名をリリース年にちなんで命名し始めた。例えば、バグ修正はサービスパックと呼ばれ、2009年サービスパック1は2010年2月にリリースされた。
2017年、ナショナルインスツルメンツは年次カンファレンスを5月に移し、Windows Presentation Foundation(WPF)をベースに完全に再設計されたLabVIEW NXG 1.0とともにLabVIEW 2017をリリースした。
OpenGとLAVAコードリポジトリ(LAVAcr)は、幅広いオープンソースのLabVIEWアプリケーションとライブラリのリポジトリとして機能します。SourceForgeでは、LabVIEWはコードの記述に使用できる言語の1つとしてリストされています。
VI Package Managerは、LabVIEWライブラリの標準パッケージマネージャとなっています。その目的はRubyのRubyGemsやPerlのCPANと非常によく似ていますが、 Synaptic Package Managerと同様のグラフィカルユーザーインターフェースを提供します。VI Package Managerは、LabVIEW用のOpenG(およびその他の)ライブラリのリポジトリへのアクセスを提供します。
ナショナルインスツルメンツは、 LabVIEWのテスト、計測、制御機能の多くをMicrosoft Visual Studioで使用できるクラスセットとして提供するMeasurement Studioも提供しています。これにより、開発者はテキストベースの.NET Framework内でLabVIEWの強みを活用できます。また、ナショナルインスツルメンツは、ANSI Cプログラマー向けにLabWindows/CVIも提供しています。
アプリケーションでシーケンス処理が必要な場合、ユーザーはLabVIEWとNational Instruments社のテスト管理ソフトウェアTestStandを組み合わせて使用することがよくあります。
Chインタープリタは、LabVIEWに組み込んでスクリプトを作成できるC / C++インタープリタです。 [ 31 ]
DSP Robotics社のFlowStone DSPもLabVIEWに似たグラフィカルプログラミングを採用しているが、ロボット産業に限定されている。
LabVIEWには、ほぼすべてのコンピュータ支援エンジニアリングツールと連携できるように設計された、多分野・多目的最適化・設計環境であるmodeFRONTIERへの直接接続ノードが用意されています。両者は同じプロセスワークフロー記述の一部として組み込むことができ、modeFRONTIERで利用可能な最適化技術によって仮想的に制御することが可能です。