<目次>
1. はじめに
2. ソフト開発の手順
2.1 開発手順の検討
2.2 データの取得
2.3 加工工程日程表の作成
2.4 開発ソフトの生産工程手順
3. 実行状況
3.1 動作状況
3.2 エラー(日程計画の設定に失敗)の場合
4. おわりに
1. はじめに
ある企業から、約800種類のプラスチック製品を製作加工する工程の計画設計に苦慮しているので、省力化できないかとの相談を受けた。一つの製品の加工工程は主に、旋盤加工、ドリル加工、フライス加工、研削等の工程で構成されている。また、各工程での製品1個当たりの加工時間は把握できているとのことであった。発注先より製品を受け取り、受託加工して納品する。この加工工程の手順計画において表計算ソフト(Microsoft Excel)を利用して立案しているが、通常の勤務体制では完了できないと判断されると、残業または土日の出勤計画を検討し、納期に間に合わせるとのことである。この表計算ソフトを利用した加工工程の作成では、何度も修正・変更を繰り返して計画を立てていた。このような無駄な作業をなくししたいとの依頼を受け、これまでの汎用の表計算ソフトをベースとした入出力作業を保ったまま極力自動化するために、工程決定手順のロジックはC#(Microsoft Visual Studio 2017)を利用して開発することにした。
ここでC#とは、ネットワークの基幹システムとして使用されるUNIXの開発言語であるC言語を基に発展したオブジェクト指向言語C++を、より一層メモリ管理を厳格にした言語で、扱いやすくなっている。
2. ソフト開発の手順
今回、説明を容易にするために各製品(製品A~Dまでの4種類)の加工工程を3工程に絞ることとする。そして、加工機もコード化し、「工程1」で使用する加工機は「NC11」または「NC23」とし、さらに各加工機で処理できる製品数を決定した。例えば「製品A」の「工程1」で加工機「NC11」を使用して午前中に加工可能な製品数は「60」.午後は「80」、夜間(残業時での単位時間における加工数)は「20」とした。
今回開発する生産工程計画のソフトは、各工程に使用する機械装置(例えば「NC11」としたNC工作機械)と加工に要する時間と品数をもとに、効率よく(無駄な空き時間なく)納期に間に合うように生産計画を可能な限り自動的に組み立てることを目的とした。
この生産工程の計画を自動的に作成するソフトの開発工程について、製品数を4種類、加工工程を3工程、各工程における各加工機での加工可能な製品数を具体的に設定して以下に説明する。
2.1 開発手順の検討
従来は、計画担当者が1か月分の日程表を表計算ソフトで作成していた。その際、加工開始日は、担当者が任意に開始日(例えば、計画当日の翌日が空いていれば翌日)を決定し、順次納期日へ繰り下がって入力する手法で、納品期日までに完了できない場合は、加工開始日を前方に移動させるか、残業の追加、あるいは土曜および日曜の休日作業を追加することで対応していた。「工程1」においては、製品名を示す行の項目に加工開始日から順次、加工機名と加工数を設定し、その加工数の合計が納品数に達したら終了する。「工程2」においては、「工程1」の加工開始日の翌日から、同様の作業を実施する。通常一つの製品の加工工程は最大3工程で、「工程1」から「工程3」までの工程計画を立てていた。図1に製品と納期限、加工数のデータの例を示す。また、一つの工程における加工機械は主と副の二種類が設定され、製品ごとの加工機械と朝と昼の時間帯において加工可能な数を定義したデータを図2に示す。夜は1時間当たりの加工数を示し、残業時間に対応可能としていた。
これまで現場での作業は、任意の加工開始日から順次納期日へ繰り下がって入力する手法で、納品期日までに完了できない場合は、加工開始日を前方に移動、残業または休日出勤による処理を実施していた。
これに対して今回のソフト開発においては、最終工程(「工程3」)を納期日から遡っていくようにして最終工程の加工開始日を求め、その一つ前の工程(「工程2」)の加工開始は、「工程3」の加工開始の前日以前から、最初の工程(「工程1」)は、さらに「工程2」の加工開始日の前日以前から開始して繰り下がりながら加工数を設定するようにした。その結果、納品期日までに加工完了できるかを明確に判定できるようになった。

図1 加工製品データの例

図2 製品の加工工程マスターデータの例
この従来と今回の手法との相違をフローチャートにして図3に示す。この図において開始日、終了日および日程の決定においては、その工程で使用する機械装置の空き状態、主に使用する機械装置が空いていない場合は、副の機械装置の空き状況を検索して決定している。

図3 従来と今回のソフト開発の手順の相違を示すフローチャート
2.2 データの取得
図1に示した加工数の設定データはCSV書式で提供される。このデータにおいて部品コード、納品日と個数を取得するようにした。
図2に示す加工工程マスターデータもCSV書式で設定される。加工工程は最大3工程なので、「工程1」、「工程2」及び「工程3」において、朝と昼の時間帯において余裕を持った製品加工数を示し、夜間の項目は残業1時間当たりの加工数を示す。図1に示したデータに関連する項目は、図2において黄色で示した範囲のデータとなる。「工程1」~「工程3」において使用される加工装置は「NC11」、「NC12」、「NC23」等のコードで表現した。
製品加工において加工装置は主と副があり、例えばコード「A1001」、品名「製品A」(図2において「品名」)が「製品A」の項目において「工程1」は「NC11」と「NC23」の二段の記載がある。第一段目のデータを優先して加工し、もし既に「NC11」の装置が使用されている場合は、第二段目のデータである「NC23」の装置を使用することとし、両方の装置に空きがない場合は、次の日程へ移動するようにしている。

図4 2021年の休日設定データ
2.3 加工工程日程表の作成
加工工程日程表を表示するためには、カレンダーの設定が必要である。企業によっては、祭日に業務を行い、週末に休日をまとめる場合もある。そのため、年ごとの企業の休日を設定できるようにした。そのデータを図4に示す。
このデータを参照して、指定した日から6週間分(10月24日まで)の日程表を表計算ソフトで表示するようにした。この加工工程日程表は、常に月曜から開始し6週間分の日程を作成する。具体的には2021年9月20日は月曜日であるが、9月21日~26日までの間の日を指定された場合は、9月20日から開始するようにし、データは「Plan20210920.xlsx」として保存される。
また、次の週において2021年9月27日月曜日からの表計算ソフトのデータが作成される場合、もし、2021年9月20日のデータ「Plan20210920」が存在する場合は、そのデータの9月27日から10月24日までの5週間分のデータが2021年9月27日の「Plan20210927」にコピーされ、9月27日から10月31日までの6週間分のデータが作成されるようにした。
このことにより、受注した製品の製作期間が5週間以上の間隔が離れないよう日程計画が作成されていれば、常にデータは更新されることとなった。また、この日程表は予定を自動計算により記載しておき、その下段には実績項目を設定して、実績数を入力することで、進捗状況なども記録できるようにした。
2.4 開発ソフトの生産工程計画決定手順
開発ソフトの生産工程の手順は、以下のようにした。
1)一つ製品データ(「製品A」とする)を取り出す。
2)製品Aの最後の工程(「工程3」とする)のデータを取得し、納期限日の午前の作業可能状況(カレンダーの作業状況「1」)を確認する。
3)実施可能であれば、「工程3」を実施する加工装置のデータ(「NC11」とする)を取得し、その日の時間帯に装置「NC11」を使用している項目の先約が存在するかを確認する。
4)もし空きがあれば、「NC11」での加工可能数(35)とすれば、その項目にデータを設定する(例えば「NC11:35」装置名と加工数を組み合わせたデータ)こととした。
5)また、もし存在すれば、「工程3」を実行するための次の装置(「NC12」とする) を、同様に、その日の時間帯に装置「NC12」を使用している項目が存在するか確認する。そして、存在しなければ、装置「NC12」による加工数(30)によるデータを設定する(設定するデータは「NC12:30」となる)。このようにデータが設定されると、加工総数は、加工数分削減していく。
6)装置「NC11」及び「NC12」が存在する場合、一つの項目分遡る。
以上のような2)~6)の処理を繰り返し、「工程3」の処理開始日(表計算ソフトのColumn位置)を記録する。このようにして「工程3」の開始日が求められた。
次に「工程2」において、「工程3」で求められた「工程3」の開始日のColumn の一つ以上遡った位置で「工程2」の開始日を求め、順次繰り下がりながら、装置の存在を確認しつつデータを設定していく。
さらに「工程1」においても、「工程2」の開始日より一つ以上遡った位置で「工程1」の開始日を求め、「工程2」と同様な処理を進めて行くことで生産計画を決定できた。(図3 のフローチャートを参照)
以上のような処理を行うことにより、プログラムから求められた加工着手日が計画当日もしくはそれ以前となった場合は、生産計画が成立しないとなるためエラー表示をするようにした。

図5 各種データを設定した状況
2. 実行(動作状況)
3.1 動作状況
開発したソフトを起動し、「表示」ボタンをクリックすると日付を参照して、工程日程表が表示される。さらに、受注情報の「参照」ボタンをクリックして、図1に示した受注データを読み込んだ状態を図5に示す。
ここで、「実行(納品日)」ボタンをクリックして実行した後の表示された工程日程表の結果を図6に示す。

図6 計算結果 日程の加工開始日
3.2 エラー(日程計画の設定に失敗)の場合
この機能において、設定された期限内に加工が間に合わないデータが存在する場合は 図7に示すようにエラーメッセージが表示される。これは納期日10月19日に間に合わせるためには、カレンダーで設定した通常の日程では9月20日から10月19日までに加工製作できず、30個の加工不足が生じることを示している(つまり、9月19日以前から加工を開始しなくてはならない。あるいは残業、土日の作業をしなくてはならないことを示す)。この時のデータを保存せずに終了し、再度起動して、日程表を表示させた後、一部の項目(残業の設定と土曜日)に作業するように設定する。ここで、残業の場合は、その夜の残業時間数、土曜日と日曜日の午前と午後に作業することを意味する「1」を設定する。図8においては黄色で示す。
この状態で「実行(納品日)」ボタンをクリックして実行すると、今度はエラーを表示することなく、図8に示すように完了することができた。
従来、各項目において、手作業で加工機と加工数を示すデータ「NC11:30」を入力し、その上下列の項目に加工機の重複が存在しないかを確認し、もし存在する場合は副の加工機によるデータ「NC12:25」を設定し、再度、加工機の重複がないかを確認し、存在する場合は、列を一つ繰り上げて、同様な入力作業を実施していた。このような作業に5時間程度を要していたが、今回のソフト開発により、加工機の重複の確認は自動的に実施されるため、大幅に作業時間が軽減された。実際に、加工工程計画作業が40分程度に軽減できたとのことである。

図7 エラーメッセージの表示

図8 完了 残業(残業の時間数)と土曜日と日曜日(土曜と日曜は「1」)の作業を設定した
4. おわりに
このソフトを利用することで、従来5時間程度を要していた入力作業を40分程度に省力化することができた。また、見落としなどによる装置の重複のミスがなくなった。その結果、担当者の負担軽減に効果があった。
今回の開発において、「工程1」で加工済みの製品が発生した場合、次の工程となる「工程2」の加工機に空きがあれば、その「工程2」の作業を進めるようにしている。つまり「工程1」が当日の午前から開始された場合、その午後には「工程2」の処理が計画されることとなる。このとき、「工程2」の加工時間が「工程1」の処理時間よりも短い場合は、「工程1」の処理が終了しないうちに「工程2」の処理が終了してしまう計画が生じてしまう。本来ならば、「工程1」の処理がすべて終了した後「工程2」の処理を実施すべきと考える。可能な限り加工機の空き時間を削減するための配慮であったが、オプション機能として検討が必要であると考えている。
中小企業において、大企業が導入するようなソフトウェアの導入は容易ではない。また、PCやソフトウェアに精通した技術者も少なく、Excelなどの市販のアプリを活用して、何とか省力化を実現しようとしているのが現状である。
今回の開発は、多種類の製品の加工製作の工程計画を立てる作業を表計算ソフトで実施している内容を理解し、加工工程を順序良く納期から遡って、効率的に計画を立てていく手法で開発した。同時間帯に、稼働している装置がある場合は、それを避けて計画を立てることは、人が行うと見落としがちであり、当日になって急遽、予定の変更を余儀なくされる場合も少なくなかったとのことである。そのようなミスをなくし、自動的に、ある程度の計画を作成できるようにすることで、大幅な省力化を実現できている。
今後、このソフトに関しては、さらに活用されるように改善を重ね、中小企業において、役立つツールとしたいと考えている。また、中小企業においてはExcelを利用して独自に工程計画,在庫管理、データの解析など、様々な省力や効率化を目指した努力を実施している例は少なくないと思われる。そのような状況で、例えば、二つのExcelのデータを比較して、同種のもの、あるいは異種のものを拾い出す、という処理はソフト開発で高速処理することは容易である。すべての処理をソフト開発しようとすると多大な時間と費用を要するが、ある程度の処理はExcelなどを利用してトライしてみて、うまく処理できることを確認した後、ソフト開発を依頼すると安価にかつ短期間に実現可能である。DX化が推進される現在において、可能な範囲で良いので、是非とも取り組んでいただきたいと考える。
この内容は、月刊「技術士」2022年4月号掲載の「生産工程計画ソフトの開発」を元に書き直したものである。
<参考文献>
1) 金城俊哉:VisualC#2013 パーフェクトマスター,株式会社秀和システム,2013年12月23日第1版

【執筆者】
外山技術士事務所
代表 外山 真也
技術士(情報工学部門)、博士(工学)
(日本技術士会九州本部/宮崎支部幹事)
【専門事項】
宮崎県工業技術センターにて研究開発に36年間従事、主にCAD/CAM関連の研究開発に従事。C#言語によるソフト開発などを得意とする。現在、宮崎大学工学部などで非常勤講師を務める。※本記事のご利用にあたって
本記事の内容は執筆者個人の見解に基づくものであり、日本技術士会の公式見解ではありません。また、記事の内容は執筆時点の情報に基づいています。ご利用者様自身の判断と責任において、ご活用頂くようお願いいたします。