説明

開発支援システム、開発支援装置、開発支援方法、および開発支援プログラム

【課題】開発支援システムにおいて、安価にかつ煩雑な作業を必要とすることなく画像処理装置に実行させるプログラムの開発を可能とする。
【解決手段】開発支援システムでは、パーソナルコンピュータ(PC)2において、画像処理装置1で実行されるプログラムの開発が行なわれ、そして、開発後のプログラムが、PC2から画像処理装置1にインストールされる。PC2では、1つのソースファイルから、PC2で実行可能な実行ファイルと画像処理装置1で実行可能な実行ファイルが作成される。そして、PC2では、前者の実行ファイルを用いてデバッグが行なわれ、開発完了後、後者の実行ファイルが画像処理装置1にインストールされる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理システムの開発支援に関し、特に、計測対象物の画像に対して画像処理を行なうことにより検査や判別を行なう画像処理装置を含むシステムにおける画像処理装置で実行されるプログラムの開発に関する。
【背景技術】
【0002】
従来から、たとえば特許文献1や特許文献2に開示されるように、物品の視覚的な検査に画像処理装置が用いられてきた。このような画像処理装置では、基準画像とカメラ等から入力された物品の画像とを所定のプログラムに従って処理することにより、当該物品の視覚的な検査が行なわれる。
【特許文献1】特開2001−165863号公報
【特許文献2】特開2007−128306号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
近年の商品の多品種少量生産等により、画像処理装置のユーザは、多様な画像処理プログラムの開発を希望する状況が多く見られるようになっている。
【0004】
なお、このような状況に対し、画像処理装置のメーカがユーザの要望ごとにプログラムの開発を行なうことはコスト等の面から難しいという問題があった。このことから、ユーザ側で画像処理装置におけるプログラムの開発をする必要が生じてくる。
【0005】
しかしながら、このようなプログラムの開発には、プログラム開発の中でもより専門的な知識が必要とされるという課題があった。これは、画像処理装置において実行される上記のようなプログラムが、一般的に、アンマネージコードと呼ばれる、特定のプロセッサやプラットフォームでのみ実行されるようなコードで記述されていることに起因すると考えられる。上記のような画像処理装置が汎用のコンピュータではなく専用の端末によって実現されることが多く、そのため、当該プログラムには、リソース使用量を最小限に抑えつつ高いパフォーマンスを発揮することが求められていたからである。
【0006】
また、上記したようなプログラムの開発には、画像処理装置のような、当該プログラムが実際に実行される装置(以下、適宜「開発ターゲット」と呼ぶ)を利用した動作確認が必要とされ、開発作業が煩雑となるという課題があった。上記したように、当該プログラムが特別なコードで記述されるためである。
【0007】
なお、汎用のコンピュータ上で上記したようなプログラムの開発がなされた場合、汎用のコンピュータ上で実行したプログラムとは別に、当該汎用コンピュータ上で実現された機能と同様の機能を実現するプログラムであって開発ターゲット上で実行される形式で記述されたプログラムを作成する必要があり、プログラムの開発者は煩雑な作業を余儀なくされていた。
【0008】
また、このように汎用のコンピュータにおける開発後に開発ターゲット用に作成されたプログラムも、開発ターゲット上での動作確認は必要とされる。そして、このような開発ターゲット上での動作確認の際には、再度デバッグやログ出力などの確認動作を必要とされる。つまり、プログラムの開発者は、汎用のコンピュータ上での開発の他に、さらに、開発ターゲット上で実行されるプログラムの作成およびその確認作業という、煩雑な作業
を必要とされていた。
【0009】
なお、開発ターゲット上での確認動作のための負荷を軽減するべく、開発ターゲット上での確認動作の際に当該開発ターゲットをICE(In-Circuit Emulator:登録商標)等のデバッガを介して汎用コンピュータに接続し、汎用コンピュータ上で確認作業を行なうことも考えられた。しかしながら、このようなICE(登録商標)等の新たな機器の導入は、プログラム開発のコストを上昇させるという新たな課題を所持させる。
【0010】
本発明はかかる実情に鑑み考え出されたものであり、その目的は、安価にかつ煩雑な作業を必要とすることなく画像処理装置に実行させるプログラムの開発を可能とする開発支援システム、開発支援装置、開発支援方法、および開発支援プログラムを提供することである。
【課題を解決するための手段】
【0011】
本発明に従った画像処理システムの開発支援システムは、画像の入力を受け付け、入力された画像に対して画像処理に関するプログラムを実行する画像処理装置と、前記画像処理装置で実行されるプログラムの作成および前記画像処理装置へのプログラムの転送が可能な開発支援装置とを備える開発支援システムであって、前記開発支援装置と前記画像処理装置は、互いに異なる環境でプログラムを実行し、前記開発支援装置は、ソースコードを入力するためのインターフェース手段と、前記インターフェース手段からの入力を受けて、ソースコードの追加または削除を行なう編集手段と、前記インターフェース手段から入力され前記編集手段で追加または削除されたソースコードを、前記画像処理装置の動作環境に対応した実行プログラムと、前記開発支援装置の動作環境に対応した動作確認プログラムと、にコンパイルするコンパイル手段と、前記動作確認プログラムを実行する実行手段と、前記実行プログラムを前記画像処理装置へ転送する転送手段とを含み、前記画像処理装置は、前記実行プログラムを転送されて当該実行プログラムを実行することを特徴とする。
【0012】
また、本発明の開発支援システムでは、前記画像処理装置は、プログラムの実行に利用される第1の容量のメインメモリを含み、前記開発支援装置は、プログラムの実行に利用される前記第1の容量よりも多い第2の容量のメインメモリをさらに含み、前記実行手段は、前記動作確認プログラム実行中に利用される前記第2の容量のメインメモリの中の容量が前記第1の容量を越えた場合に報知動作を実行することが好ましい。
【0013】
また、本発明の開発支援システムでは、前記実行プログラムおよび前記動作確認プログラムは、それぞれの動作環境において互いに対応する処理を実行するライブラリ化された処理の実行の命令を含むことができ、前記開発支援装置は、前記画像処理装置の動作環境に対応する処理を実行する実行プログラム用ライブラリを記憶する第1の記憶手段と、前記開発支援装置の動作環境に対応する処理を実行する動作確認プログラム用ライブラリを記憶する第2の記憶手段をさらに含み、前記実行プログラム用ライブラリは、前記画像処理装置のみに接続される外部機器との間でのデータの送信または受信を行なう処理を含む処理を含み、前記動作確認プログラム用ライブラリは、前記外部機器との間でのデータの送信または受信を行なう処理に対応した処理として、当該送信または受信を行なう処理に代えて、前記外部機器との間でのデータの送信または受信を行なうことなく当該送信または受信が完了したとみなす処理を含む処理を含むことが好ましい。
【0014】
また、本発明の開発支援システムでは、前記実行プログラムおよび前記動作確認プログラムは、それぞれの動作環境において互いに対応する処理を実行するライブラリ化された処理の実行の命令を含むことができ、前記開発支援装置は、前記画像処理装置の動作環境に対応する処理を実行する実行プログラム用ライブラリを記憶する第1の記憶手段と、前
記開発支援装置の動作環境に対応する処理を実行する動作確認プログラム用ライブラリを記憶する第2の記憶手段をさらに含み、前記実行プログラム用ライブラリは、前記画像処理装置のみに接続される外部機器からデータを受信する処理を含む処理を含み、前記動作環境プログラム用ライブラリは、前記外部機器からデータを受信する処理に対応して、当該受信する処理に代えて、前記外部機器からのデータの受信を行なうことなく、前記画像処理装置において外部機器からデータを正常に受信できなかった場合の警告処理に対応する処理を含む処理を含むことが好ましい。
【0015】
また、本発明の開発支援システムでは、前記コンパイル手段は、前記ソースコードをコンパイルするたびに、前記実行プログラムと前記動作確認プログラムの双方を生成することが好ましい。
【0016】
本発明に従った開発支援装置は、画像の入力を受け付け、入力された画像に対して画像処理に関するプログラムを実行する画像処理装置で実行されるプログラムの作成および前記画像処理装置へのプログラムの転送が可能な開発支援装置であって、前記開発支援装置と前記画像処理装置は、互いに異なる環境でプログラムを実行し、ソースコードを入力するためのインターフェース手段と、前記インターフェース手段からの入力を受けて、ソースコードの追加または削除を行なう編集手段と、前記インターフェース手段から入力され前記編集手段で追加または削除されたソースコードを、前記画像処理装置の動作環境に対応した実行プログラムと、前記開発支援装置の動作環境に対応した動作確認プログラムと、にコンパイルするコンパイル手段と、前記動作確認プログラムを実行する実行手段と、前記実行プログラムを前記画像処理装置へ転送する転送手段とを備えることを特徴とする。
【0017】
また、本発明の開発支援装置は、プログラムの実行に利用され、前記画像処理装置においてプログラムの実行に利用されるメインメモリの容量である第1の容量よりも多い第2の容量のメインメモリをさらに備え、前記実行手段は、前記動作確認プログラム実行中に利用される前記第2の容量のメインメモリの中の容量が前記第1の容量を越えた場合に報知動作を実行することが好ましい。
【0018】
また、本発明の開発支援装置では、前記実行プログラムおよび前記動作確認プログラムは、それぞれの動作環境において互いに対応する処理を実行するライブラリ化された処理の実行の命令を含むことができ、前記画像処理装置の動作環境に対応する処理を実行する実行プログラム用ライブラリを記憶する第1の記憶手段と、前記開発支援装置の動作環境に対応する処理を実行する動作確認プログラム用ライブラリを記憶する第2の記憶手段をさらに備え、前記実行プログラム用ライブラリは、前記画像処理装置のみに接続される外部機器との間でのデータの送信または受信を行なう処理を含む処理を含み、前記動作確認プログラム用ライブラリは、前記外部機器との間でのデータの送信または受信を行なう処理に対応した処理として、当該送信または受信を行なう処理に代えて、前記外部機器との間でのデータの送信または受信を行なうことなく当該送信または受信が完了したとみなす処理を含む処理を含むことが好ましい。
【0019】
また、本発明の開発支援装置では、前記実行プログラムおよび前記動作確認プログラムは、それぞれの動作環境において互いに対応する処理を実行するライブラリ化された処理の実行の命令を含むことができ、前記画像処理装置の動作環境に対応する処理を実行する実行プログラム用ライブラリを記憶する第1の記憶手段と、前記開発支援装置の動作環境に対応する処理を実行する動作確認プログラム用ライブラリを記憶する第2の記憶手段をさらに備え、前記実行プログラム用ライブラリは、前記画像処理装置のみに接続される外部機器からデータを受信する処理を含む処理を含み、前記動作環境プログラム用ライブラリは、前記外部機器からデータを受信する処理に対応して、当該受信する処理に代えて、
前記外部機器からのデータの受信を行なうことなく、前記画像処理装置において外部機器からデータを正常に受信できなかった場合の警告処理に対応する処理を含む処理を含むことが好ましい。
【0020】
また、本発明の開発支援装置では、前記コンパイル手段は、前記ソースコードをコンパイルするたびに、前記実行プログラムと前記動作確認プログラムの双方を生成することが好ましい。
【0021】
本発明に従った開発支援方法は、画像の入力を受け付け、入力された画像に対して画像処理に関するプログラムを実行する画像処理装置で実行されるプログラムの作成および前記画像処理装置へのプログラムの転送が可能な開発支援装置におけるプログラムの開発支援方法であって、前記開発支援装置と前記画像処理装置は、互いに異なる環境でプログラムを実行し、ソースコードを入力するためのステップと、前記入力を受けて、ソースコードの追加または削除を行なうステップと、前記入力されかつ前記追加または削除されたソースコードを、前記画像処理装置の動作環境に対応した実行プログラムと、前記開発支援装置の動作環境に対応した動作確認プログラムと、にコンパイルするステップと、前記動作確認プログラムを実行するステップと、前記実行プログラムを前記画像処理装置へ転送するステップとを備えることを特徴とする。
【0022】
本発明に従った開発支援プログラムは、画像の入力を受け付け、入力された画像に対して画像処理に関するプログラムを実行する画像処理装置で実行されるプログラムの作成および前記画像処理装置へのプログラムの転送が可能な開発支援装置において実行されるプログラムの開発支援プログラムであって、前記開発支援装置と前記画像処理装置は、互いに異なる環境でプログラムを実行し、ソースコードを入力するためのステップと、前記入力を受けて、ソースコードの追加または削除を行なうステップと、前記入力されかつ前記追加または削除されたソースコードを、前記画像処理装置の動作環境に対応した実行プログラムと、前記開発支援装置の動作環境に対応した動作確認プログラムと、にコンパイルするステップと、前記動作確認プログラムを実行するステップと、前記実行プログラムを前記画像処理装置へ転送するステップとを前記開発支援装置に実行させることを特徴とする。
【発明の効果】
【0023】
本発明によれば、或るソースコードがコンパイルされて、画像処理装置においてプログラムが実行される環境に適した実行プログラムと開発支援装置においてプログラムが実行される環境に適した動作確認プログラムの双方が生成される。そして、開発支援装置では上記動作確認プログラムが実行され、画像処理装置では開発支援装置から転送された実行プログラムが実行される。
【0024】
なお、画像処理装置が備えるプログラムの動作環境は、開発支援装置が備えるプログラムの動作環境とは異なるものであることが意図される。ここで、動作環境が異なるということには、当該装置を構成するハードウェアが異なる場合や、当該装置で実行されるオペレーションシステムが異なる場合を含む。また、ハードウェアが異なる場合には、構成要素である個々のデバイスの有無や種類が異なる場合や、各装置が接続される外部機器の有無や種類が異なる場合が含まれる。
【0025】
これにより、画像処理装置において実行されるプログラムの開発に際し、開発支援装置において、動作確認プログラムが実行されることにより開発後のプログラムのデバッグが実行された後、プログラムの開発者は、デバッグ後のプログラムについて画像処理装置のために改めてプログラミングを行なう必要がなくなる。また、開発支援装置において、画像処理装置用にコンパイルされたプログラムと同じソースコードのプログラムのデバッグ
処理が可能であるため、開発支援装置と画像処理装置との間にICE(登録商標)等のデバッガを接続させるような必要がなくなる。
【0026】
したがって、本発明によれば、安価にかつ煩雑な作業を必要とすることなく画像処理装置に実行させるプログラムの開発が可能となる。
【発明を実施するための最良の形態】
【0027】
以下、本発明のプログラムの開発支援システムの一実施の形態について、図面を参照しつつ説明する。なお、同一の構成要素には各図において同一の符号を付し、詳細な説明は繰返さない。
【0028】
図1は、本実施の形態の開発支援システムの構成を模式的に示す図である。開発支援システムでは、パーソナルコンピュータ(PC)2において、画像処理装置1で実行されるプログラムの開発が行なわれ、そして、開発後のプログラムが、PC2から画像処理装置1にインストールされる。
【0029】
図2は、PC2のハードウェア構成を模式的に示すである。PC2は、CPU(Central Processing Unit)21、ハードディスク22、RAM(Random Access Memory)23、グラフィックコントローラ24、操作I/F(インターフェイス)25を含む。ハードディスク22は、CPU21で実行されるプログラムを含む種々の情報が記憶されている。RAM23は、CPU21がプログラムを実行する際のメインメモリとして利用される。グラフィックコントローラ24は、CPU21による制御に基づいて、LCD(Liquid
Crystal Display)などによって構成されるビデオモニタに画像を表示させる。操作I/F25は、ユーザが外部から情報を入力するのに用いるキーボードやマウス(ポインティングデバイス)に接続されている。外部I/F26は、画像処理装置1等の外部機器との接続のインターフェイスとなる。
【0030】
図3は、画像処理装置1のハードウェア構成を模式的に示す図である。画像処理装置1は、CPU11、フラッシュメモリ12、RAM13、グラフィックコントローラ14、操作I/F15、外部I/F16、およびカメラI/F17を含む。フラッシュメモリ12には、CPU11が実行するプログラムなどの種々の情報が記憶されている。RAM13は、CPU11がプログラムを実行する際のメインメモリとして利用される。
【0031】
画像処理装置1では、外部のカメラが撮影した映像(または画像)が、カメラI/F17を介して入力される。CPU11は、カメラから入力された画像や種々の情報を、グラフィックコントローラ14を介して、LCD等によって構成されるビデオモニタに表示させる。
【0032】
CPU11は、上記したカメラに当該カメラが撮影した画像を入力させるタイミング等を決定するタイミングセンサに接続されている。CPU11は、カメラI/F17を介して入力された画像を処理することによって、タイミングセンサに対して、上記カメラの撮影した画像の入力のタイミングを指示したり、ラインを流れるワークについてのラインからの排出を指示したり、当該ラインの流れを制御するための信号を送信する。
【0033】
画像処理装置1では、外部I/F16を介して外部の機器との間で情報の送受信が行なわれ、また、操作I/F15を介して、外部の操作機器(ポインティングデバイスやキーボード等)に対する操作に基づく情報が入力される。
【0034】
図4は、PC2のハードディスク22に記憶される内容を模式的に示す図である。
図4を参照して、ハードディスク22には、OS(Operating System)などの基本とな
る処理プログラム(基本処理プログラム)121、実行ファイル作成用プログラム122、コアライブラリ123、およびアプリケーションファイル124が記憶されている。PC2では、プログラミングされたソースファイルがコンパイル(後述するビルドに含まれる処理)されて実行ファイルが作成される。実行ファイル作成用プログラム122は、このようなコンパイルを含むビルドを実行するためのプログラムである。
【0035】
プログラミングされたソースファイルは、ソースファイル1240として示されるように、第1処理用ソースファイル1240A、第2処理用ソースファイル1240B、第3処理用ソースファイル1240C、…のように、処理ごとに記述されている。各処理のソースファイルは、たとえばC++言語などのプログラミング言語によって記述される。また、ここでいう各処理とは、たとえば、上記したカメラから入力された画像の中で、画像処理の対象とする領域の形状(たとえば、矩形、楕円、円形、等)を更新する処理(図形更新時処理)、上記したカメラから(画像処理装置2に)入力された画像に基づいて実行された計測結果をビデオモニタにどのように(たとえば画面のデザイン等)表示するかを決定する処理(計測結果表示処理)などが挙げられる。
【0036】
本実施の形態の開発支援システムでは、PC2と画像処理装置1とでは、プログラムが実行されるプラットフォームが異なる。具体的には、画像処理装置1は、工業製品の生産ラインの近傍に、ワークの品質等の検査のために生産ラインの近傍に配置されることが多いため、RAM13やフラッシュメモリ12として搭載されるメモリ容量がPC2に対して抑えられ、そして、このような事情およびシステムの安定性が重視されることから、いわゆるリアルタイムOSが組込まれている。また、PC2には、上記した画像処理装置1に対する制約がないことから、画像処理装置1と比較して、メインメモリ(RAM23)の容量は画像処理装置1のメインメモリ(RAM13)よりも容量を多くすることができ、また、フラッシュメモリ12の代わりに、衝撃等に対する安定性は低いが大きな容量を得ることができるハードディスク22が採用されている。
【0037】
上記したようなPC2と画像処理装置1との間のプラットフォームの差異から、PC2と画像処理装置1とでは、アプリケーションの実行ファイルの対応するコードが異なる。本実施の形態の実行ファイル作成用プログラム122は、1つのソースファイルから、画像処理装置1におけるプラットフォーム上で実行可能な実行ファイル(ターゲット用実行ファイル1243)とPC2におけるプラットフォーム上で実行可能な実行ファイル(開発環境用実行ファイル1244)を作成することができる。なお、ターゲット用実行ファイル1243の作成には、ターゲット用プロジェクトフォルダ1243に記憶されたプロジェクトが利用され、また、開発環境用実行ファイル1244が作成には、開発環境用プロジェクトフォルダ1243に記憶されたプロジェクトが利用される。
【0038】
また、本明細書では、「開発環境用」とはPC2に対応していることを意味し、「ターゲット用」とは画像処理装置1に対応していることを意味する。つまり、ターゲット用実行ファイル1243は、上記したように画像処理装置1で実行される実行ファイルであることを意味し、本発明における「実行プログラム」を構成する。また、開発環境用実行ファイル1244は、上記したようにPC2で実行される実行ファイルであることを意味し、本発明における「動作確認プログラム」を構成する。
【0039】
コアライブラリ123には、ターゲット用実行ファイル1243が実行される際に必要とされるdll(Dynamic Link Library)ファイルを含むターゲット用ライブラリ123Aと、開発環境用実行ファイル1244が実行される際に必要とされるdllファイルを含む開発環境用ライブラリ123Bとが含まれる。
【0040】
次に、PC2で、画像処理装置1で実行されるプログラムを開発するための処理の内容
について、当該処理のフローチャートである図5を参照して説明する。
【0041】
図5を参照して、まずステップS10では、PC2に対して、実行ファイル作成用プログラム122、コアライブラリ123などのインストールが行なわれ、ステップS20へ処理が進められる。
【0042】
ステップS20では、CPU21は、操作I/F25を介して入力される情報等に基づいて、ソースファイルを作成して、ステップS30へ処理を進める。
【0043】
ステップS30では、CPU21は、ステップS20で作成または後述するステップS70で修正されたソースファイルをビルドして、実行ファイルを作成して、ステップS40へ処理を進める。なお、ステップS30では、図4を参照して説明したように、1つ(1種類の意味であって、第1処理用ソースファイル1240A、第2処理用ソースファイル1240B、第3処理用ソースファイル1240C、…等のように複数の実行モジュールそれぞれに対応する複数のソースファイルが、まとめられて1つのアプリケーションの実行ファイルに対応するものとされたものを意図する)から、画像処理装置1で実行可能なターゲット用実行ファイル1243と、PC2で実行可能な開発環境用実行ファイル1244を作成する。
【0044】
ステップS40では、CPU21は、デバッグのために、ステップS30でのビルドにより作成された実行ファイルを実行する。なお、ステップS40では、CPU21は、作成されたターゲット用実行ファイル領域1243と開発環境用実行ファイル1244との中から、PC2で実行可能な開発環境用実行ファイル1244を選択して実行する。ここで、実行ファイルの選択は、当該ファイルのファイル名が指定されることによって行なわれる。つまり、実行ファイル作成用プログラム122は、ターゲット用実行ファイル領域1243と開発環境用実行ファイル1244とを、それぞれ、CPU21によって識別されることが可能なファイル名で作成する。そして、実行ファイル作成用プログラム122(のデバッグ用プログラム)は、デバッグの際に、開発環境用実行ファイル1244を選択して実行するように構成されている。
【0045】
ステップS50では、CPU21は、ステップS40における実行ファイルの実行において不具合が発生したか否かを判断する。なお、CPU21は、不具合が発生したか否かを、デバッグ用プログラムが実行されることによって実現される機能によって判断してもよいし、操作I/F25を介してユーザから入力される情報に基づいて判断してもよい。
【0046】
なお、デバッグ用プログラムは、ハードディスク22にインストールされており、たとえば、上記したように実行ファイル作成用プログラム122の中に含まれている。本実施の形態では、(ターゲット用実行ファイル領域1243と同じソースファイルから作成された)開発環境用実行ファイル1244のデバッグが汎用コンピュータによって構成可能なPC2上で実現することができる。そして、デバッグ処理の際には、プログラムの実行を特定の位置で中断する「ブレークポイント」機能や、一段階ずつ動作を確認しながら実行する「ステップ実行」機能、実行中のメモリやレジスタ、変数などの状態を見る「トレース」機能などの一般的にデバッグの際に活用される機能の活用が可能となる。
【0047】
CPU21は、ステップS50において不具合が発生したと判断するとステップS60へ処理を進め、発生していないと判断すると、ステップS80へ処理を進める。
【0048】
ステップS60では、CPU21は、デバッグログを出力して、ステップS70へ処理を進める。なお、ここでの出力は、たとえば当該デバッグログがグラフィックコントローラ24を介してビデオモニタに表示されることにより実現される。
【0049】
ステップS70では、CPU21は、操作I/F25を介してユーザから入力される情報に基づいてソースファイルを修正して、ステップS30へ処理を戻す。
【0050】
つまり、本実施の形態では、ステップS70でソースファイルが修正された後、当該修正後のソースファイルに基づいて、再度ターゲット用実行ファイル1243と開発環境用実行ファイル1244とが作成される。
【0051】
また、本実施の形態におけるデバッグ処理(ステップS40)において、CPU21は、擬似的に画像処理装置1のRAM13のメモリ容量に基づいたメインメモリの容量管理を行なう。このようなメモリ容量管理について、図6を参照して詳細に説明する。
【0052】
図6(A)は、PC2のRAM23と画像処理装置1のRAM13のメモリ容量の違いを模式的に示す図である。この図では、画像処理装置1のRAM13のメモリ容量がC1で表わされており、PC2のRAM23のメモリ容量が、C1よりも大きいC2で表わされている。そして、CPU21は、ステップS40で実行されるデバッグ処理において、C2の容量を有するRAM23に対して、RAM13の容量であるC1を上限とするようなメモリの容量管理を行なう。
【0053】
図6(B)は、CPU21がメモリ管理用に用いるテーブルを概念的に示す図である。デバッグ処理におけるメモリ容量管理に基づくと、CPU21は、図6(B)に示すテーブルに、RAM23の使用量を逐次的に記録する。具体的には、開発環境用実行ファイル124が実行されている期間中、どのような処理によって(処理名101)、RAM23のどのアドレスから(使用アドレス103)、どれだけの容量(使用量102)が使用されているかを、図6(B)に示されたようなテーブルに記録していく。なお、当該テーブルに記憶された情報に対応するメモリ領域が開放された場合には、CPU21は当該テーブルから対応する情報を削除する。これにより、図6(B)に示されたようなテーブルが参照されることにより、RAM23においてどの領域が使用されまたどれだけの容量が使用されているかが逐次的に把握される。
【0054】
そして、CPU21は、デバッグ処理の期間中は、使用量102の合計が、RAM23の容量C2ではなく、RAM13の容量C1を超えた場合に、不具合が発生したとして、ステップS50でエラーメッセージの表示等を行なう。
【0055】
図5に戻って、ステップS80では、CPU21は、インストール用のファイルを選択して、ステップS90へ処理を進める。ここで、インストールとは、ステップS20で作成し、ステップS70で修正したプログラムのインストールであり、インストール用のファイルとは、画像処理装置1にインストールためのファイルである。具体的には、インストール用ファイルとは、ターゲット用実行ファイル1243とターゲット用ライブラリ123Aを含む。
【0056】
ステップS90では、CPU21は、ステップS80で選択したファイルを画像処理装置1へインストールして、処理を終了する。
【0057】
以上説明した本実施の形態では、CPU21は、実行ファイル作成用プログラム122を実行することにより、1つのソースファイル(ソースファイル1240)から、PC2で実行可能な開発環境用実行ファイル1244と画像処理装置1で実行可能なターゲット用実行ファイル1243とを作成することができる。そして、CPU21は、これらの2つの実行ファイルの中から、開発環境用実行ファイル1244を選択して、デバッグ処理の対象とする。
【0058】
このようなデバッグ処理により、PC2では、ソースファイルに修正を施すことができる。そして、CPU21は、ソースファイルに修正がなされると、ステップS30において、ターゲット用実行ファイル1243と開発環境用実行ファイル1244とを改めて作成する。このとき、それまでハードディスク22に記憶されていたターゲット用実行ファイル1243と開発環境用実行ファイル1244は、改めて作成されたものによって上書きされることが好ましい。
【0059】
このように、PC2において、ステップS30におけるビルド処理が実行されるたびにターゲット用実行ファイル1243と開発環境用実行ファイル1244の双方が作成されることにより、ハードディスク22に記憶されるターゲット用実行ファイル1243と開発環境用実行ファイル1244とを、常に同じソースファイル1240に対応したものとすることができる。
【0060】
なお、本実施の形態のPC2では、デバッグ処理において利用されるのはターゲット用実行ファイル1243ではなく、開発環境用実行ファイル1244である。ターゲット用実行ファイル1243は、最終的に修正されたソースファイルが完成した後、画像処理装置1にインストールされる段階で初めて必要とされるものである。したがって、ターゲット用実行ファイル1243は、ステップS50において不具合の発生がなくなったと判断された後で、初めて作成されてもよい。
【0061】
また、本実施の形態において、ステップS80におけるインストール用のファイルの選択は、たとえばターゲット用実行ファイル1243のファイル名が指定されることによって実現される。
【0062】
本実施の形態の開発支援システムにおいて開発されるプログラムの開発ターゲットである画像処理装置1は、図3を参照して説明したように、カメラなどの種々の外部の装置に接続される。このことから、開発されるプログラムには、当該カメラから入力される画像に対する画像処理など、図2を参照して説明したPC2(プログラムを開発する装置である、開発支援装置)には接続されていない機器または装置とのデータの送受信に関する処理が含まれる場合がある。
【0063】
本実施の形態では、ソースファイルのビルドが実行される際に、当該送受信に関する処理についてはターゲット用実行ファイル1243と開発環境用実行ファイル1244とで内容が異なるように実行ファイルの作成が行なわれることが好ましい。
【0064】
たとえば、ターゲット用実行ファイル1243に、画像処理装置1から当該画像処理装置1に接続されているタイミングセンサへのデータの出力(送信)を行なう処理が含まれている場合について、開発環境用実行ファイル1244が、当該処理に対応する処理をどのように変更されて作成されるかについて、図7を参照して説明する。
【0065】
図7(A)は、ターゲット用実行ファイル1243に含まれる、上記したようなデータ出力に対応した部分の処理(以下、便宜上「第N処理」と呼ぶ)のフローチャートであり、図7(B)は、開発環境用実行ファイル1244に含まれる上記第N処理のフローチャートである。
【0066】
まず、図7(A)を参照して、ターゲット用実行ファイル1243の第N処理が開始されると、画像処理装置1では、当該処理に含まれる命令が順に実行され(ステップNX10)、ステップNX20で、第N処理が終了する条件が成立したか否かが判断される。終了する条件の成立とは、たとえば、直前で実行した命令に第N処理を終了させて他の処理
に移行する旨の記述がなされている場合が挙げられる。そして、そのような条件が成立したと判断されると、第N処理は終了され、終了していないと判断されると、ステップNX30へ処理が進められる。
【0067】
ステップNX30では、次に実行される命令がタイミングセンサ等の外部機器に対するデータの出力を行なうものであるか否かが判断され、そうではないと判断されるとステップNX10へ処理が戻され、そうであると判断されるとステップNX40へ処理が進められる。
【0068】
ステップNX40では、データ出力に対応する関数がターゲット用ライブラリ(ターゲット用ライブラリ123Aが画像処理装置1にインストールされたもの)から呼出され、ステップNX50へ処理が進められる。
【0069】
ステップNX50では、ステップNX40で呼出された関数(dllファイル)の記述に従ってデータが出力され、ステップNX60へ処理が進められる。
【0070】
ステップNX60では、CPU11が実行する動作の状態を格納するレジスタに「データ出力」が完了した旨の情報が設定されて、ステップNX10へ処理が戻される。
【0071】
なお、図7(A)では、データ出力に対応する関数に基づいて実行される部分が、破線の矩形に囲まれて示されている。
【0072】
次に、図7(B)を参照して、PC2で開発環境用実行ファイル1244の第N処理が開始されると、PC2では、当該処理に含まれる命令が順に実行され(ステップNY10)、ステップNY20において、第N処理が終了する条件が成立したか否かが判断される。そして、そのような条件が成立したと判断されると、第N処理は終了され、終了していないと判断されると、ステップNY30へ処理が進められる。
【0073】
ステップNY30では、次に実行される処理がデータ出力の処理であるか否かが判断され、そうであると判断されるとステップNY40へ処理が進められる。
【0074】
ステップNY40では、開発環境用ライブラリ123Bから、データ出力に対応した関数が呼出されて、ステップNY50へ処理が進められる。
【0075】
ステップNY50では、ステップNY40で呼出された関数が実行されることにより、CPU21の動作の状態が格納されるレジスタに、「データ出力」が完了した旨の情報が設定されて、ステップNY10へ処理が戻される。
【0076】
図7(B)では、ステップNY40で呼出された関数に基づいて実行される部分が、破線の矩形に囲まれて示されている。
【0077】
以上、図7(A)および図7(B)を参照して説明したように、PC2では、同じソースファイルから、PC2で実行されるための実行ファイルと画像処理装置1で実行されるための実行ファイルが作成されるが、それらのファイル(プログラム)が実行されることによって実現される処理の内容を一部異ならせることができる。具体的には、データ出力に関する処理について、ターゲット用実行ファイルが実行されることによって実現される処理では、外部の機器へのデータ出力と当該データ出力が完了した旨の情報のレジスタへの格納がなされるのに対し、開発環境用実行ファイルが実行されることにより実現される処理としては、データ出力が完了した情報のレジスタへの格納のみとすることができる。
【0078】
なお、以上説明した例では、ターゲット用ライブラリ123Aから呼出される関数の内容と開発環境用ライブラリ123Bから呼出される関数の内容が異なることにより、結果として実行される処理が異なるようになるが、このような実行される処理の差異は、ターゲット用実行ファイル1243と開発環境用実行ファイル1244の記述自体の内容の差異によって実現されても良い。
【0079】
開発環境用実行ファイルによって実現される処理が、ターゲット用実行ファイルによって実現される処理に対して変更される他の例としては、ターゲット用実行ファイルに含まれる外部の機器からのデータの受信(取得)に関する処理が挙げられる。ここで、データの受信の処理の具体例として、画像処理装置1において実行されるカメラから画像データを取得する処理(以下、便宜上「第M処理」と呼ぶ)を挙げて、図8を参照しつつ説明する。図8(A)は、ターゲット用実行ファイル1243の中の第M処理のフローチャートであり、図8(B)には、開発環境用実行ファイル1244の中の第M処理のフローチャートである。
【0080】
まず図8(A)を参照して、画像処理装置1において第M処理が開始されることにより、当該処理を構成する命令が順に実行され(ステップMX10)、ステップMX20で、第M処理が終了する条件が成立したか否かが判断される。終了する条件の成立とは、たとえば、直前で実行した命令に第M処理を終了させて他の処理に移行する旨の記述がなされている場合が挙げられる。そして、そのような条件が成立したと判断されると、第M処理は終了され、終了していないと判断されると、ステップMX30へ処理が進められる。
【0081】
ステップMX30では、次に実行される命令が、カメラからの画像データの入力を要求する処理であるか否かが判断され、そうではないと判断されるとステップMX10へ処理が戻され、そうであると判断されると、ステップMX40へ処理が進められる。
【0082】
ステップMX40では、カメラに対して画像データの入力を要求するための処理の関数がターゲット用ライブラリ(ターゲット用ライブラリ123Aが画像処理装置1にインストールされたもの)から呼出され、ステップMX50へ処理が進められる。
【0083】
ステップMX50では、ステップMX40で呼出された関数が実行されることにより、カメラに対して画像データを要求する情報が送信され、ステップMX10へ処理が進められる。
【0084】
ステップMX60では、カメラからの画像データの取得が成功したか否かが判断され、成功したと判断されるとステップMX70へ処理が進められ、成功していない(正常に受信できなかった)と判断されるとステップMX80へ処理が進められる。
【0085】
ステップMX70では、画像データの取得が完了した旨の情報が、CPU11の動作の状態を格納するレジスタに設定されて、ステップMX10へ処理が戻される。
【0086】
ステップMX80では、カメラからの画像データの取得が失敗した旨の情報(カメラからの画像データを正常に受信できなかった旨の情報)が上記レジスタに設定されて、ステップMX10へ処理が戻される。
【0087】
次に、図8(B)を参照して、PC2で開発環境用実行ファイル1244の第M処理が開始されると、PC2では、当該処理に含まれる命令が順に実行され(ステップMY10)、ステップMY20において、第M処理が終了する条件が成立したか否かが判断される。そして、そのような条件が成立したと判断されると、第M理は終了され、終了していないと判断されると、ステップMY30へ処理が進められる。
【0088】
ステップMY30では、次に実行される命令が、カメラからの画像データの入力を要求する処理であるか否かが判断され、そうではないと判断されるとステップMY10へ処理が戻され、そうであると判断されると、ステップMY40へ処理が進められる。
【0089】
ステップMY40では、開発環境用ライブラリ123Bから、カメラからの画像データの入力の要求に対応した関数が呼出されて、ステップMY50へ処理が進められる。
【0090】
ステップMY50では、ステップMY40で呼出された関数が実行されることにより、カメラからの画像データの取得が失敗した旨の情報(カメラからの画像データを正常に受信できなかった旨の情報)がCPU21の動作の状態を格納するレジスタに設定されて、上記レジスタに設定されて、ステップMY10へ処理が戻される。
【0091】
以上、図8(A)および図8(B)を参照して説明したように、PC2では、同じソースファイルから、PC2で実行されるための実行ファイルと画像処理装置1で実行されるための実行ファイルが作成されるが、それらのファイル(プログラム)が実行されることによって実現される処理の内容を一部異ならせることができる。具体的には、データ出力に関する処理について、ターゲット用実行ファイルが実行されることによって実現される処理では、外部の機器からのデータ受信と当該データ受信が成功した旨または失敗した旨の情報のレジスタへの格納がなされるのに対し、開発環境用実行ファイルが実行されることにより実現される処理としては、データ受信が失敗した旨の情報のレジスタへの格納のみとすることができる。
【0092】
なお、以上説明した例では、ターゲット用ライブラリ123Aから呼出される関数の内容と開発環境用ライブラリ123Bから呼出される関数の内容が異なることにより、結果として実行される処理が異なるようになるが、このような実行される処理の差異は、ターゲット用実行ファイル1243と開発環境用実行ファイル1244の記述自体の内容の差異によって実現されても良い。
【0093】
以上説明した本実施の形態では、ソースファイルがビルドされることにより、実行ファイル(ターゲット用実行ファイルおよび開発環境用実行ファイル)が作成される。ここで、ビルド処理には、コンパイルとリンクの処理が含まれる。具体的には、ソースファイルがコンパイルされることにより、オブジェクトファイルが生成される。本実施の形態では、ソースファイル1240には複数のソースファイル(第1処理用ソースファイル1240A、第2処理用ソースファイル1240B、第3処理用ソースファイル1240C、…)が含まれるため、ソースファイルがコンパイルされることにより複数のオブジェクトファイルが生成される。そして、これらの複数のオブジェクトファイルがリンク処理によって結合されることにより、1つの実行ファイル(ターゲット用実行ファイルまたは開発環境用実行ファイル)が作成される。なお、コンパイル処理に利用されるコンパイラに対応するプログラムおよびリンク処理に利用されるプログラム(リンカー)は、いずれも、たとえば実行ファイル作成用プログラム122に含まれているものとすることができる。
【0094】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0095】
【図1】本発明の一実施の形態である開発支援システムの構成を模式的に示す図である。
【図2】図1のPCのハードウェア構成を模式的に示す図である。
【図3】図1の画像処理装置のハードウェア構成を模式的に示す図である。
【図4】図2のPCのハードディスク22に記憶されている情報の内容を模式的に示す図である。
【図5】図2のPCにおいてプログラムの開発の際に実行される処理のフローチャートである。
【図6】図2のPCにおいて、プログラムが開発される際のデバッグ処理におけるメインメモリの容量管理の内容を説明するための図である。
【図7】図4のターゲット用実行ファイルによって実現される処理と開発環境用実行ファイルによって実現される処理の差異の一例を説明するためのフローチャートである。
【図8】図4のターゲット用実行ファイルによって実現される処理と開発環境用実行ファイルによって実現される処理の差異の他の例を説明するためのフローチャートである。
【符号の説明】
【0096】
1 画像処理装置、2 PC、11,21 CPU、12 フラッシュメモリ、13,23 RAM、14,24 グラフィックコントローラ、15,25 操作I/F、16,26 外部I/F、17 カメラI/F、22 ハードディスク、121 基本処理プログラム、122 実行ファイル作成用プログラム、123 コアライブラリ、124 アプリケーションファイル、1240 ソースファイル、1241 ターゲット用プロジェクトフォルダ、1242 開発環境用プロジェクトフォルダ、1243 ターゲット用実行ファイル、1244 開発環境用実行ファイル。

【特許請求の範囲】
【請求項1】
画像の入力を受け付け、入力された画像に対して画像処理に関するプログラムを実行する画像処理装置と、前記画像処理装置で実行されるプログラムの作成および前記画像処理装置へのプログラムの転送が可能な開発支援装置とを備える開発支援システムであって、
前記開発支援装置と前記画像処理装置は、互いに異なる環境でプログラムを実行し、
前記開発支援装置は、
ソースコードを入力するためのインターフェース手段と、
前記インターフェース手段からの入力を受けて、ソースコードの追加または削除を行なう編集手段と、
前記インターフェース手段から入力され前記編集手段で追加または削除されたソースコードを、前記画像処理装置の動作環境に対応した実行プログラムと、前記開発支援装置の動作環境に対応した動作確認プログラムと、にコンパイルするコンパイル手段と、
前記動作確認プログラムを実行する実行手段と、
前記実行プログラムを前記画像処理装置へ転送する転送手段とを含み、
前記画像処理装置は、前記実行プログラムを転送されて当該実行プログラムを実行する、開発支援システム。
【請求項2】
前記画像処理装置は、プログラムの実行に利用される第1の容量のメインメモリを含み、
前記開発支援装置は、プログラムの実行に利用される前記第1の容量よりも多い第2の容量のメインメモリをさらに含み、
前記実行手段は、前記動作確認プログラム実行中に利用される前記第2の容量のメインメモリの中の容量が前記第1の容量を越えた場合に報知動作を実行する、請求項1に記載の開発支援システム。
【請求項3】
前記実行プログラムおよび前記動作確認プログラムは、それぞれの動作環境において互いに対応する処理を実行するライブラリ化された処理の実行の命令を含むことができ、
前記開発支援装置は、前記画像処理装置の動作環境に対応する処理を実行する実行プログラム用ライブラリを記憶する第1の記憶手段と、前記開発支援装置の動作環境に対応する処理を実行する動作確認プログラム用ライブラリを記憶する第2の記憶手段をさらに含み、
前記実行プログラム用ライブラリは、前記画像処理装置のみに接続される外部機器との間でのデータの送信または受信を行なう処理を含む処理を含み、
前記動作確認プログラム用ライブラリは、前記外部機器との間でのデータの送信または受信を行なう処理に対応した処理として、当該送信または受信を行なう処理に代えて、前記外部機器との間でのデータの送信または受信を行なうことなく当該送信または受信が完了したとみなす処理を含む処理を含む、請求項1または請求項2に記載の開発支援システム。
【請求項4】
前記実行プログラムおよび前記動作確認プログラムは、それぞれの動作環境において互いに対応する処理を実行するライブラリ化された処理の実行の命令を含むことができ、
前記開発支援装置は、前記画像処理装置の動作環境に対応する処理を実行する実行プログラム用ライブラリを記憶する第1の記憶手段と、前記開発支援装置の動作環境に対応する処理を実行する動作確認プログラム用ライブラリを記憶する第2の記憶手段をさらに含み、
前記実行プログラム用ライブラリは、前記画像処理装置のみに接続される外部機器からデータを受信する処理を含む処理を含み、
前記動作環境プログラム用ライブラリは、前記外部機器からデータを受信する処理に対応して、当該受信する処理に代えて、前記外部機器からのデータの受信を行なうことなく
、前記画像処理装置において外部機器からデータを正常に受信できなかった場合の警告処理に対応する処理を含む処理を含む、請求項1または請求項2に記載の開発支援システム。
【請求項5】
前記コンパイル手段は、前記ソースコードをコンパイルするたびに、前記実行プログラムと前記動作確認プログラムの双方を生成する、請求項1〜請求項4のいずれかに記載の開発支援システム。
【請求項6】
画像の入力を受け付け、入力された画像に対して画像処理に関するプログラムを実行する画像処理装置で実行されるプログラムの作成および前記画像処理装置へのプログラムの転送が可能な開発支援装置であって、
前記開発支援装置と前記画像処理装置は、互いに異なる環境でプログラムを実行し、
ソースコードを入力するためのインターフェース手段と、
前記インターフェース手段からの入力を受けて、ソースコードの追加または削除を行なう編集手段と、
前記インターフェース手段から入力され前記編集手段で追加または削除されたソースコードを、前記画像処理装置の動作環境に対応した実行プログラムと、前記開発支援装置の動作環境に対応した動作確認プログラムと、にコンパイルするコンパイル手段と、
前記動作確認プログラムを実行する実行手段と、
前記実行プログラムを前記画像処理装置へ転送する転送手段とを備える、開発支援装置。
【請求項7】
プログラムの実行に利用され、前記画像処理装置においてプログラムの実行に利用されるメインメモリの容量である第1の容量よりも多い第2の容量のメインメモリをさらに備え、
前記実行手段は、前記動作確認プログラム実行中に利用される前記第2の容量のメインメモリの中の容量が前記第1の容量を越えた場合に報知動作を実行する、請求項6に記載の開発支援装置。
【請求項8】
前記実行プログラムおよび前記動作確認プログラムは、それぞれの動作環境において互いに対応する処理を実行するライブラリ化された処理の実行の命令を含むことができ、
前記画像処理装置の動作環境に対応する処理を実行する実行プログラム用ライブラリを記憶する第1の記憶手段と、前記開発支援装置の動作環境に対応する処理を実行する動作確認プログラム用ライブラリを記憶する第2の記憶手段をさらに備え、
前記実行プログラム用ライブラリは、前記画像処理装置のみに接続される外部機器との間でのデータの送信または受信を行なう処理を含む処理を含み、
前記動作確認プログラム用ライブラリは、前記外部機器との間でのデータの送信または受信を行なう処理に対応した処理として、当該送信または受信を行なう処理に代えて、前記外部機器との間でのデータの送信または受信を行なうことなく当該送信または受信が完了したとみなす処理を含む処理を含む、請求項6または請求項7に記載の開発支援装置。
【請求項9】
前記実行プログラムおよび前記動作確認プログラムは、それぞれの動作環境において互いに対応する処理を実行するライブラリ化された処理の実行の命令を含むことができ、
前記画像処理装置の動作環境に対応する処理を実行する実行プログラム用ライブラリを記憶する第1の記憶手段と、前記開発支援装置の動作環境に対応する処理を実行する動作確認プログラム用ライブラリを記憶する第2の記憶手段をさらに備え、
前記実行プログラム用ライブラリは、前記画像処理装置のみに接続される外部機器からデータを受信する処理を含む処理を含み、
前記動作環境プログラム用ライブラリは、前記外部機器からデータを受信する処理に対応して、当該受信する処理に代えて、前記外部機器からのデータの受信を行なうことなく
、前記画像処理装置において外部機器からデータを正常に受信できなかった場合の警告処理に対応する処理を含む処理を含む、請求項6または請求項7に記載の開発支援装置。
【請求項10】
前記コンパイル手段は、前記ソースコードをコンパイルするたびに、前記実行プログラムと前記動作確認プログラムの双方を生成する、請求項6〜請求項9のいずれかに記載の開発支援装置。
【請求項11】
画像の入力を受け付け、入力された画像に対して画像処理に関するプログラムを実行する画像処理装置で実行されるプログラムの作成および前記画像処理装置へのプログラムの転送が可能な開発支援装置におけるプログラムの開発支援方法であって、
前記開発支援装置と前記画像処理装置は、互いに異なる環境でプログラムを実行し、
ソースコードを入力するためのステップと、
前記入力を受けて、ソースコードの追加または削除を行なうステップと、
前記入力されかつ前記追加または削除されたソースコードを、前記画像処理装置の動作環境に対応した実行プログラムと、前記開発支援装置の動作環境に対応した動作確認プログラムと、にコンパイルするステップと、
前記動作確認プログラムを実行するステップと、
前記実行プログラムを前記画像処理装置へ転送するステップとを備える、開発支援方法。
【請求項12】
画像の入力を受け付け、入力された画像に対して画像処理に関するプログラムを実行する画像処理装置で実行されるプログラムの作成および前記画像処理装置へのプログラムの転送が可能な開発支援装置において実行されるプログラムの開発支援プログラムであって、
前記開発支援装置と前記画像処理装置は、互いに異なる環境でプログラムを実行し、
ソースコードを入力するためのステップと、
前記入力を受けて、ソースコードの追加または削除を行なうステップと、
前記入力されかつ前記追加または削除されたソースコードを、前記画像処理装置の動作環境に対応した実行プログラムと、前記開発支援装置の動作環境に対応した動作確認プログラムと、にコンパイルするステップと、
前記動作確認プログラムを実行するステップと、
前記実行プログラムを前記画像処理装置へ転送するステップとを前記開発支援装置に実行させる、開発支援プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−59171(P2009−59171A)
【公開日】平成21年3月19日(2009.3.19)
【国際特許分類】
【出願番号】特願2007−225914(P2007−225914)
【出願日】平成19年8月31日(2007.8.31)
【出願人】(000002945)オムロン株式会社 (3,542)
【Fターム(参考)】