Q108:図面検索ソフト(まずはワイルドカードを使った範囲検索ができるもの)を作成したいが、まず手始めに最初にどこから始めたら良いでしょうか?
Q108-1:
アプリケーション合成ツールのマニュアルを見ながら実行してみてかなり便利そうなツールだということはなんとなく分かったのですが、いざこれからソフトを作ろうと思った時にまず何から始めたら良いかが一番難しいと感じました。
自分の目下の使命は「図面検索ソフトを作成すること」です。
現在はあるベンダーが昔作成した数値を入力して合致したものだけを表記するといった使い勝手の悪いものを使用しています。
色々盛り込みたい機能はあるのですが、まずはワイルドカードを使った範囲検索ができるものを、と考えています。
まず手始めに最初にどこから始めたら良いでしょうか?(一通りチュートリアルと必要そうなマニュアルは読破しました)
漠然とした質問で申し訳ありませんが、ある程度ソフト開発のフローができるまで(というか慣れるまで)ご指導宜しくお願いします。
A108-1:
お問い合わせの件についてですが、作られようとしている「図面検索ソフト」の内容や「ワイルドカードを使った範囲検索」の具体的な動作が分かりかねますので、以下、想像を交えての回答となることをご容赦ください。
ここではソフトウェアの動作として(1)〜(3)の3つを想定し、それぞれの場合について意見を述べさせていただきます。
(1) 電子データとして存在している図面ファイルを、ファイル名をもとに検索
PCに保存されている図面ファイルを、ファイル名あるいはその一部を利用して検索するのであれば、Windowsのエクスプローラが備えている検索機能を利用するのが最も簡単です。それでは機能不足ということでしたら、有償/無償のものも含め、多くのファイル検索ソフトがございますので、そちらをお試しになるのがよろしいかと存じます。
(2) 電子データとして存在している図面ファイルを、その内部に含まれているデータをもとに検索
図面ファイルの中に製品名や部品表、寸法/公差指示など、図形以外のデータも含まれており、それらのデータをもとに検索するということであれば、図面ファイルを読込んで内部のデータを抽出する機能を持ったソフトウェアを用意することが必要です。そのようなソフトウェアをどこからも入手できない場合には自作することになりますが、MZ Platformでそのようなソフトウェアを作ることは適切ではありません。むしろ、既存のプログラム言語を用いて、その図面ファイルに特化したソフトウェアを作られた方が良いでしょう。
なお、既存のファイル検索ソフトの中には、ファイル内のデータ検索を行う機能を備えたものもございます。もちろん、その機能が有効に働くかどうかは検索対象となるファイル形式にも依存しますが、お試しいただくのもよろしいでしょう。
(3) 図面ファイルには他にも付随データがあり、それらを含めて検索
図面ファイルに、製品名や顧客名、数量、納期といった付随データがある場合、言い換えると、図面ファイル、製品名、顧客名、数量、納期などのデータが1セットとなって、例えば「受注」というデータを構成している場合で、ファイル名のほかにそれらの付随データをもとに検索するということであれば、以下のような一覧表を作成して、この一覧表のデータを検索するようにするのがよろしいかと存じます。
受注番号 |
製品名 |
顧客名 |
数量 |
納期 |
ファイルパス |
受注0001 |
製品01 |
○○○ |
10 |
2010/11/01 |
C:\図面\図01 |
受注0002 |
製品02 |
××× |
30 |
2010/11/15 |
C:\図面\図02 |
このような表(テーブル)をMZ Platformで作成し、さらに検索機能を作りこむのも一つの方法ではありますが、それよりも既存のデータベースソフトを利用してデータベース上にこのようなテーブルを作成し、MZ Platformからそのデータベースへ接続するようなソフトを作成することをお勧めします。そちらの方が、MZ Platformですべてを作成するよりも、検索機能の種類や性能、将来のシステム保守や拡張性の点で圧倒的に優れたものになります。
データベースでの検索では、「%」をワイルドカードとして使うことができます。例えば、上述のテーブル名を「受注表」とし、顧客名に「(株)」を含めるデータを検索する場合、データベースの検索を行うSQL文は以下のようになります。
(注: ここでは簡単のためテーブルの列名を日本語にしていますが、データベースソフトによっては日本語列名を正しく扱えない場合があります。)
SELECT * FROM 受注表 WHERE 顧客名 like '%(株)%'
また、製品名あるいは顧客名に「△△」を含めるデータを検索する場合のSQL文は以下となります。
SELECT * FROM 受注表 WHERE 製品名 like '%△△%' OR 顧客名 like '%△△%'
SQL文の書式や例につきましては、「データベースアクセスチュートリアル」、「エクセル連携導入チュートリアル」、「購買管理アプリケーション作成チュートリアル」をご覧ください。
このようなソフトウェアを作成する際にまず行うべきことは、図面ファイルに付随するデータを明確にし、どのようなテーブル構成にするのかを決めることです。実際の業務では、1つの製品には複数の構成部品があり、各構成部品にその図面ファイルが存在することと存じます。そしてそれらの構成部品の中には、1つの製品でのみ使われるわけではなく、複数の製品で共通に使用されるものも含まれていると思います。したがって、単一のテーブルですべてを表現するのではなく、いくつかのテーブルに分けて管理するのが適切です。この作業はソフトウェア作成の基本となりますので、拙速とならないように取り組むことが必要です。
その過程において、考案したテーブル構成が妥当なものかを検証するためには、付属のサンプル「データベースアクセス_2(エクセル接続).mzax」をお使いになるのが良いでしょう。このサンプルはエクセルファイルに接続し、そのエクセルファイルに対してSQL文を実行するものです。テーブルを取りあえずエクセルで作成し、SQLのSELECTコマンドで必要としている検索結果を得られるのかどうかを確認しながらテーブル構成を決定していくと、次第にソフトウェアのイメージも固まってくることと存じます。
Q108-2:
製作しようとしている図面検索ソフトは(3)にある、CADファイルに各種寸法や、価格、材質といった付属情報があるものです。
既存のデータベースソフトはサンプルやチュートリアルで使われているMySQLで構わないでしょうか?
それとも今使っている検索ソフトのマイクロソフトアクセスのデータベースの方が良いのでしょうか?
検索ソフトで扱う項目についてはもう少し具体化してみたいと思います。
なお、弊社の図面に対しては、金型のように何種類もパーツがあるわけではないのでテーブルの分かれ目は、顧客情報位でしょうか。
A108-2:
すでにアクセスをお使いならば、取りあえずアクセスをお使いになることをお勧めします。そして、アクセスでは不十分と判断された段階でMySQL等の他のデータベースソフトへ移行されるのがよいでしょう。
MZ Platform側からみると、データベースソフトはすべて同様に扱えますので、接続先のデータベースソフトを切り替えてもアプリケーションを大きく変更する必要はなく、基本的には接続時のパラメータ(ドライバ名や接続先データベース名等)を変更するだけで対応可能です。
ただし、用いるSQL文にアクセス固有のコマンドを使用している場合にはそれらも変更しなくてはなりませんので、なるべく標準的なSQLコマンドを使用するようにしておいた方が、データベースソフト変更への対応は容易です。
蛇足ながら、アクセスファイルをネットワークで共有した場合、同時に接続するユーザ数が5を超えるあたりから性能が低下すると言われています。したがって、多くのユーザがデータを共有するような場合には、他のデータベースソフトの利用を検討された方がよいでしょう。特に推奨のデータベースソフトがあるというわけではございませんが、チュートリアル等で扱っているMySQLは充分実務に耐えうるものです。
Q108-3:
個人的には、MySQLの方が、チュートリアル等で説明されていますし、そちらの方が良いのですが、一点だけ懸念事項があります。
現在アクセスでデータベースを構築してあるため、かなりの量のデータが蓄積されています。これを再びMySQLで打ち込む必要はあるのでしょうか?それとも何か一気にMySQLにインポート出来る方法があるのでしょうか?
一応販売管理ソフト(チュートリアルの購買管理のようなもの)はエクセルで出力出来るとは思うのですが、アクセスからエクセル⇒MySQLというやり方が可能なのでしょうか?
図面検索用ソフトのデータベースはエクセルへの出力機能はないので、難しいかもしれません。
A108-3:
アクセスからMySQLへのデータインポートは可能です。直接インポートすることもできますが、アクセスのテーブル列名に日本語を使用している場合には、MySQLで正しく扱えない場合がありますので、MZ Platform経由でインポートするのが安全かもしれません。
すなわち、MZ Platformからアクセスファイルへ接続してデータを読み込み、それをMySQLへ出力するという方法です。繰り返しとなりますが、MySQLで日本語列名を扱おうとすると想定外のエラーが発生する可能性が高いので、MySQL側にはあらかじめ列名が英数文字列である空のテーブルを作成しておく必要があります。
MySQLでのテーブル作成には、「購買管理アプリケーション作成チュートリアル」の「2.4. 動作確認」に記述してあるアプリケーション(購買管理02.mzax)をお使いになるのが簡単かと存じます。
備考:「一般的な質問」の「Q&A89」にも掲載。