お客様: 画像計測機器メーカー様
ご依頼内容
- C/C++で提供しているカメラ制御ライブラリを、MATLABからも使えるようにしたい、というご相談。
- 自社製品を使うお客様が、MATLABの環境からも扱えるようにしたい。
- 既存のC++サンプルとの対応が分かる形にして、利用者がAPIの使い方をたどれるようにしたい。
- GUIが付いたサンプルプログラムと、英文の説明書も、あわせて用意したい。
課題
- 技術的には、C/C++のネイティブライブラリを、MATLABから安定して呼び出し、撮影の手順どおりに動かすのが困難なこと。
- 既存のC++サンプルと、対応が分かるAPIを設計すること。
- 実機と、実機がない環境の双方で、一連のカメラ操作を検証すること。
ソリューション
- MATLABからネイティブのDLLを直接呼ばず、C#で中間のラッパを作り、MATLABの.NET連携(他の言語の部品を読み込む仕組み)で読み込む方式にした。
- 関数単位ではなく、撮影手順の機能単位で、MATLABのメソッドを構成した。
- 接続、ライブ表示、録画、再生、保存、パラメータ設定を、状態を保持するhandleクラスにまとめ、接続や撮影の状態を、クラス側で管理した。
- 実機と、実機がないときに使う検証用の環境を、設定ファイルで切り替えられるようにした。
- パラメータの対応表を、ライブラリのヘッダファイルから生成する仕組みにして、ヘッダが変わっても、利用者側で作り直せるようにした。
- GUIが付いたサンプルプログラムと、英文の説明書を用意した。
- 実機での確認で出た仕様の調整を、反映した。



結果
- 正常系と異常系をあわせて、20項目強の動作確認に合格した。異常値の入力や、操作順の誤りも、試験に含めた。
- 接続からライブ表示、録画、再生、複数の形式での保存までを、ひとつのサンプルで追える。
- MATLABのソースは約2千行の規模で、ラッパクラスとGUIのサンプルを、そのまま実例として読める。
- お客様の製品を使うMATLABユーザーが、APIの使い方を、動くコードからたどれる。
ひとこと
- C/C++で書かれたライブラリを、MATLABのような別の言語から使う方法は、直接呼ぶ、中間のラッパを挟む、など、いくつかあります。ライブラリの作りや、扱うデータの大きさによって適する方法が変わり、選び方で後の保守のしやすさまで変わるため、見極めが難しい場合があります。
- 型の受け渡しや、DLLの配置のような、言語をまたぐところは、実機で動かして初めて分かることも多いので、経験のある人が担当するのが良いと思います。
- また、今回の事例では、GUIが付いたサンプルプログラムとして納めているため、プログラムに不慣れな方でも、まず動かしてみて、そこからAPIの使い方をたどれます。
- 「自社のライブラリを、お客様のMATLABの環境からも使えるようにしたい。ただ、社内にMATLABに詳しい人がおらず、サンプルや説明書まで揃えるとなると、手が回らない。」というご相談は、計測機器のメーカー様からよくいただきます。弊社では、ラッパの設計から、サンプルプログラム、英文の説明書、動作確認のレポートまで、まとめてお引き受けしています。
お問い合わせ
開発事例にご興味ありましたら、お気軽にお問い合わせ下さい。
下記の、「今すぐお問い合わせ」をクリックして、フォームにご記入下さい。
早急に回答致します。


