Polymorphism

誰も教えてくれない開発の重要ポイントです!

工数削減のポイント
a Key point in Cut back


ホーム > 業務案内 > コンサルティング > 工数削減のポイント

システム開発におきまして多くの開発期間や予算が確保されないことがございます。そのような場合には、システムの要件を減らしたり、機能を削ったりすることとなります。ここでは、設計の方法やプログラムの手法など面で開発工数を削減する方法をいくつかご紹介しております。これらの工数削減方法を利用することで、要件や機能そのものを減らさずに少ない工数の中で同等の機能が実現できればと思っております。また、この工数削減内容は、お客様がプログラムを外部委託する場合などの工数削減のヒントとしてご利用いただけると思います。

「運用」と「システム」のバランスが重要です。
システムで実現すべき「要件」を100%プログラムのみで実現する必要があるかを検討する必要があります。設計者は必要な「要件」を実現するために、何とかプログラムで実現しようと努力してしまいます。しかし、「要件」の内容やその主旨を分析すると、すべてをプログラムで実現しなくても良いケースもあります。例えば、「つながった連続線を見つけたい」との「要件」があった場合、図面データの中をすべて調べてすべての「つながった連続線」を見つけ出すのはとても大変なプログラムとなります。しかし、「つながった連続線を見つけたい」という「要件」が実際の運用でどのように利用されるのかを調査しますと、ユーザが調べたい図形に対する「つながった連続線」の検出でも良い場合があります。この場合は、ユーザが調べたい図形を「ユーザ入力により選択」することで、この選択図形に対してだけの「つながった連続線」を見つけるプログラムとなります。これは当初の図面データ内のすべての「つながった連続線」を見つけ出すプログラムよりは、大幅に簡単になります。このように、システムの「要件」の主旨を正しく捉え、プログラムの代わりにユーザに操作してもらうことなどで、プログラムの工数を大きく削減することができます。

「事前の仕掛け」は可能ですか?
膨大な図面データの中から必要な情報を取得したい場合、この「要件」は一般的に「図面からXXX情報を取得したい」のように指示されます。設計者のこの「要件」をもとに図面から情報を収集する方法を一生懸命考えることとなります。実現のためには、膨大な図面データの検索や目的の情報取得するための多くの条件による評価が必要となります。しかし、視点を変えることでこの情報検索の工数を大きく削減できる場合があります。これは主に、開発するシステムが新規図面を作成する場合に利用される場合です。この「作図」の段階でシステムの入り込める可能性がある場合には、後に実行される「データ収集」を想定し、作図の段階で「仕掛け」をしておくことです。作図の段階で、集計の対象となる図形や部品などを作図する際に、その図形を後ですぐに識別できるように、対象図形に特別な情報を付加しておきます。この作図時の「仕掛け」により、実際の集計の際には「特別な情報の付加された図形」を探すだけとなり、図面内からのデータ収集プログラムが驚くほど簡単になります。この図形に情報を付加する「仕掛け」はシステム開発において様々な使用方法の期待できる考え方です。(例えば、図形を作図した日付や作成者の情報や、他の図形との関連情報、他にもCADには概念の存在しない「材質」や「重さ」の情報を付加することなども可能です。)設計者このように、「要件」の目的だけに着目せずに、様々な視点からシステム全体を考えた方が良いでしょう。

「ジオメトリ」を活用しましょう。
AutoCADで図形に関する位置や状態などを操作する場合には、ObjectARXの「ジオメトリ」が有効に活用できます。「ジオメトリ」とは「幾何計算」用の機能です。AutoCAD内の座標値、ベクトル、変換マトリクス、平面、直線、円弧など、3D空間上での計算に必要なツール(オブジェクト)が数多く揃っています。これらのツールを利用することで、座標値やベクトルの成分などから複雑な計算をすることなく、2点間の距離を計測したり、ベクトルを変換することや2直線の交点や平行を評価したり、平面と直線の関係(投影形状の取得や平面と直線の交点)を取得することなどが簡単に行えるようになります。これらの複雑な計算のためのプログラムが大きくなったり、開発工数が増えてしまう恐れのある場合には、是非この「ジオメトリ」をご利用ください 。

プログラム実行のタイミングを検討しましょう。
AutoCADのプログラム開発では、AutoCADから発行される多くのイベント(通知)を受け取ることができます。(AutoCADカスタマイズではこの手法を「リアクタ」と呼びます。)この機能(リアクタ)は、各イベント発行時に自動的にプログラムを起動できるため、特殊で高度な開発を行うことが可能となります。AutoCADのイベント処理(リアクタ)を習得している設計者は、「AutoCADが〜した時に自動的に〜して欲しい」との「要件」に対して、すぐにこのイベント処理(リアクタ)を利用しようとします。確かに多くの場合、このような「要件」はイベント処理(リアクタ)にて開発が可能です。しかし、イベント処理(リアクタ)は通常の開発よりもやや高度な開発が必要となるため、開発工数も増えることとなります。しかし、この「AutoCADが〜した時に自動的に〜して欲しい」との「要件」を実現するためには、AutoCADのイベント処理(リアクタ)を利用せずに、もっと簡単に実現できる場合もあります。「AutoCADが〜した時」のタイミングは、AutoCADの機能を良く調べるとイベント処理(リアクタ)以外で取得できる場合もあります。また、運用との調整により、単純に機能を「メニュー」などに割り当てることで実現できる場合もあります。例えば「図面を保存する際に〜をしたい」という「要件」の場合、設計者は「図面保存」のイベント処理(リアクタ)をすぐに検討してしまいますが、「〜したい」部分プログラムをイベント処理(リアクタ)を利用せずに通常のプログラムで作成し、「図面保存」メニューの保存コマンドの前に実行させる方法などもあります。この場合もちろん、「図面保存」メニューを利用して図面保存をする運用上の取り決めが必要となりますが、イベント処理(リアクタ)を利用しないため開発工数の削減は可能となります。

段階的な開発を検討しましょう。
システム開発は投資に対する効果がすぐにわかりにくいのが特徴です。巨額を投じて大きなシステムを構築しても、実際に円滑に可動し、その効果が現れるまでには少し時間の掛かるものです。そのため、システム開発に多くの予算をいきなり確保するのが困難なケースもあるようです。このような場合には、効果のわかりやすいポイントを絞り、このポイントだけを抑えた最小のシステムを作成する方法もあります。将来的にはすべての機能を実装することを前提とし、システムは設計しておきますが、初期の開発においては開発予算を抑え、効果のわかりやすい部分のみの開発をなるべく少ない開発工数で行います。このシステム開発により、ある程度の実績を積み重ねた上であらためて機能の拡張として、必要な機能を随時実装して行きます。この段階的な開発により当初に多くの予算を確保せずに目的のシステムを作り上げて行く開発方法もあります。

異なるAPIは組み合わせることができます。
AutoCADを利用したシステム開発は、様々な開発言語やAPIにより設計することが可能です。AutoCADのAPIにはそれぞれ特徴が存在し、これらの特徴を良く理解した上で目的のシステム開発に最適なAPIや開発言語を選択することが開発工数の削減につながります。また、開発するシステムによっては1つのAPIや開発言語だけではなく、複数のAPI や開発言語を組み合わせた方がより効率の良い開発が行える場合もあります。例えばAutoCADの図面から取得データMicrosoft Excelに貼り付けるシステムを作成するとします。この場合、AutoCADの図面からデータを取得する部分を柔軟で高速なObjectARX(C/C++言語)で開発します。取得したデータをExcelに貼り付ける作業はもちろんObjectARX(C/C++言語)でも開発可能ですが、Excelとの連携部分に関してはObjectARXよりもAutoCAD VBAを利用した方が遥かに簡単にプログラムを作成することができます。このObjectARX(C/C++言語)のプログラムとAutoCAD VBAのプログラムを組み合わせることで、作業工数を削減することが可能となります。


データ構造に一工夫で設計が簡単になります。
システム開発におきましては、運用上様々なものに名前を付ける必用があります。図面(DWG)ファイルの名称や部品(ブロック)の名称、画層(レイヤー)の名称などAutoCADを利用したシステムでは様々なデータやファイルに名前が付けられます。システムで利用するデータやファイルに名前を付ける場合、ただ名前を付けるのではなく、運用上の「命名規則」を決めておくことでシステム開発の工数を削減することも可能です。例えば図面上に配置されている部品(ブロック)の名前に「ボルト_ステンレス_8X15」のように、「部品名_材質_サイズ」などと「命名規則」を定めておくことで、この部品の属性などの抽出をせずに名称からだけで、必要な情報を取得することも可能となります。部品の集計などの際にも、部品(ブロック)の名前だけで必用な部品を集めることができます。同様に図面ファイルの名前などにも「命名規則」を設定しておきますと、外部に書き出した部品(図面)の管理や、図面管理のシステムを作成する際に工数の削減が可能となります。

対応図形を限定しましょう。
AutoCADにおけるシステム開発では、プログラムで図形を操作するケースが多く発生します。しかし、AutoCADの図形の種類は大変多いため、すべての図形に対応したプログラムを作成するのはとても工数の掛かる作業となります。そのため、「要件」と運用の内容から対応しなければいけない図形を特定し、限られた図形にだけ対応したプログラムにすることで工数の削減が可能となります。また図形の検索や抽出の際、対象とする作業空間(モデル空間やレイアウト空間)の検討も必要です。特にレイアウト空間はユーザが任意の数だけ作成できるため、すべてのレイアウト空間を対象にするためにはモデル空間だけを対象にするよりは工数が多く掛かります。運用上レイアウト空間を対象にすべきかを検討し、不要な場合にはシステムの対象から除外することで開発工数を削減できます。同様に、AutoCADはブロック登録によりブロックの構成要素内にも様々な図形が含まれております。図形の検索や抽出の際、登録されているすべてのブロックの構成要素を対象とするかどうかでも開発工数が変わってきます。この点につきましても運用面から検討をされると良いでしょう。


AutoCADコマンドは簡単・便利です。
AutoCADのカスタマイズの特徴はAPIによるプログラムで様々な処理を行えますが、必用に応じてAutoCADの「コマンド」をプログラムから実行することができます。例えば、図形を作成する場合、APIによるプログラム開発では各APIの関数などを利用し、プログラムで図形を作成することができます。プログラムによる図形の作成は、処理速度が速く、データによる柔軟な作成が可能です。しかし、プログラムで図形を作成する場合には図形の作成に必用なデータの作成や実行に必用な手続きなどが必要となります。同じ図形の作成をプログラムからAutoCADのコマンドを呼び出して実行する場合、通常のAutoCADのオペレーションと同じ手順をパラメータとして渡すだけで簡単に実行できます。そのため、コマンドの使い方さえ知っていれば、難しいAPIの知識が無くとも、ある程度の作図や編集などはプログラムで作成できてしまいます。設計の中で単純に図形を作成する場面や処理速度を要求されない部分などでは、このプログラムによるコマンド実行を利用することで工数を削減することができます。