執筆:EugeneAmnis
Excelで量産シミュレーション
遠い昔、ある製造現場に夜勤明けで目をシュパシュパさせながら、書類処理をしている男がいた。その横では彼の上司と彼の形だけの部下が静かな口論を繰り広げようかとしていた。
「お前がトロイから生産が上がらないんじゃないか。」「自分は精一杯仕事をしています。一度作業を実感されてはいかがですか?」
その口論は徐々にヒートアップしていきそうな気配があり、男は心の中で面倒くさいと思いながらも「彼はよくやっていますよ。」と形だけの部下に助け舟を出しました。ただ、これがよくなかった。
形だけの部下はこれを助け舟ではなく助太刀と理解したらしく、上司に更に食って掛かった。上司も最初はセンスのないじゃれ合いのつもりだったがついムキになってしまい、口論継続・ヒートアップ。
今や書類処理も終わり、ただ帰りたいだけの男。そのままにしておく気の大きさもなく、二人にこう言った。「今のままでは埒が明かないでしょう。僕が週末を使ってExcelで量産のシミュレーションプログラムをつくりましょう。一度それを叩き台にして、また議論してはいかがですか?」
どっちにしろ口論中の二人も切り上げるタイミングを探っていたのだろう。両者ともそれで了承し、夜勤組の男と部下は帰り、上司は昼勤の準備を始めた。
巡回サラリーマン問題
翌日、昼過ぎに起きた男は朝食か昼食かどちらともつかないような食事を取りながら、仕事終わりに約束したことを整理していた。
あんなことを言ってしまったのは早く帰りたかったのもあったが、男が学んでいる通信制の大学で取った授業にそれを話題にしたものがあったからだったのも大きい。それは巡回サラリーマン問題や中国人郵便配達問題のように呼ばれていた。
巡回サラリーマン問題とはあるエリアを受け持つサラリーマンがお得意先周りをする際にどの順番でお得意様を回ることが最小ルートを選ぶことになるかという問題である。これだけを聞くと何だそんなことかと思われるかもしれないが、3社や10社くらいならなんとか答えを見つけられそうだが、100や1000となるとお手上げになることがすぐわかるはずだ。
この問題の本質はP=NP問題と呼ばれ、ある問題が方程式と呼ばれるようなある一定の手順で答えの見つかるものなのか、はたまた総当たりと呼ばれるような闇雲に答えを探求するものなのかを判断する方法はあるのかを問いたものだったと理解していた。
複数の製品を同時生産する生産現場では稼働率や生産数の目安は長らく現場の人間の勘に支えられてきた。そういう男もその勘が鋭いとされ、一番下ながらも安い役職手当がつくようになったのだ。だが男は疑問にも思っていた。この勘はあっているのか?生産管理や営業に対して本当に正しい生産見通しを伝えているのだろうかと。
今回の件も巡回サラリーマン問題と似たようなものだと感じたので、あんな口約束をしてしまったのだろう。勿論、男に天才的な数学の才能がある訳でも無い。単位を取るのも一苦労のときがあるのだから。しかし、総当たりの方法ならなんとかなるだろうという根拠なき自信があった。
生産現場の仕事内容
製造といえ数多く種類があるので一概には言えないが、主に生産(量産)は主体作業と付随作業に分けられるとされている。主体作業は生産そのもの。機械加工なら機械にワークと呼ばれる材料をセットし、起動。次の機械に移動して完成品を取り出し、目視検査後をクリアしたら次のワークをセットし起動する。の連続である。
付随作業は検査、段取り、メンテナンスなどアシスト役をメインとする作業だ。勿論、アシスト作業が一段落している場合は主体作業に従事することもある。
上司と口論をしていた男の形ばかりの部下は主体作業を担当していた。上司はその部下の作業が遅いと指摘したのだ。ただし、男の評価は違っていた。その部下は言動がゆっくりなので仕事も遅いと勘違いをされているだけで主体作業をこなす速さはどちらかといえば早い方だったのだ。
とはいえ、具体的なものを提示できなければ禅問答の繰り返しである。
Excelで量産シミュレーション
Excelでシミュレーションを行うというアイデアは決して突拍子もない事でもない。実際に製造現場では事実上、Excelしか使用を許されていないところも多い。そして何より、製造現場のおじさん達はExcelを万能のツールと見なしている雰囲気があった。
男が常務の鞄持ちとして、海外出張に行った際も「Excelは何でもできるから是非、覚えなさい。」と何度も言われたものだ。男が少しづつ実力をつけて行くと自然とExcelに詳しいと噂が出回り、関係のない部署のおじさんから質問や話しかけられることも多くなった。
男が上司にExcelで叩き台をつくると提案したのはそんな背景と上司がパラメータをイジれるようにすることで新たな発見を変わりにしてもらおうという魂胆もあった。その為、VBAは最小にし、シート関連の機能を多用することにした。
シミュレーションの概要
今回のシミュレーションは以下の条件をベースにした。
- 主体作業者は1人である
- 機械間の移動距離は直線で計算する
- 脱着(ワークの取り換え)時間は考慮しない
- 移動スピードは平均歩行時間である時速4kmとする
- 作業時間を超える加工は行わない
- 最初のスタート位置と開始機械は指定する
- 先に加工が完了し、近い機械から脱着(ワークの取り換え)を行う
- 検査や刃物交換・段取りは考慮しない
パラメータは以下を複数機械で自由に設定できるようにした。尚、機械台数は40台と制限してある。
- 機械の加工時間
- 稼働時間
- 開始機械
- 機械の位置
上記を元にExcelブックの構成は制約条件設定シート・中間処理シート・結果シートの3つにした。条件設定シートはパラメータの設定用で、それを元にVBAが加工開始した機械の名前と時間を中間処理シートに入力していく。結果シートは中間処理シートの内容を見やすくダッシュボード化したものになる。
VBAのアルゴリズムは最初の開始位置から最初の機械の位置までの移動時間を稼働時間から引き、次の近い機械までの移動時間を引く。これを稼働時間がゼロになるまで繰り返す。もし、同時に機械が停止した(加工時間が経過したという事)場合は近い機械から、処理を繰り返すというかなり単純化したものだった。
実行
実際、このシミュレーションと現実の作業では、脱着時間・機械間の経路・検査などの機械停止時間・作業者の有限の体力など、シミュレーションの方が有利になる状況だった。男は乖離が酷ければ作り直す気でいたのだ。
必要なパラメータ類のデータは別の案件で生産技術から譲り受けていたCADデータや生産記録から拝借した。今なら眉をひそめる事態だが当時は間に合わないのなら、宿題が当たり前の環境であった。少しでも役職手当を貰っているなら尚の事。
できたてホヤホヤのシミュレーションにパラメータを打ち込みVBAを走らせる。中間処理シートが埋まり、結果シートが表示された。結果シートと過去の生産記録を見比べる。これを何度も繰り返した。
外が夕焼けに染まる頃、男は一つの結論に達していた。かなり近い結果になったと。一回で充分な結果が出たことにたじろぎながら、日曜日まで潰れなくてよかったと胸をなで下ろし、月曜日の昼勤終わりに上司に報告することにしてデスクトップからノートパソコンに作成したExcelシミュレーションファイルを保存した。
報告・提出・考察
月曜日の仕事終わり上司が帰る前に作成したExcelシミュレーションファイルを披露した。上司は腑に落ちたまでは行かないにしろ、新しいツールになる可能性は感じてもらったようだった。男はExcelシミュレーションファイルのコピーを上司に渡し、家路に着いた。余計な小競り合いに二度と巻き込まれないことを祈りながら。
この事案の後、男は時間があるときに作成したExcelシミュレーションを動かしながら、現実との乖離がないかを調べていた。機械の加工時間が移動時間よりも早い場合に発生する問題や逆に加工時間が非常に長い場合に発生する現象もうまく説明できる結果が表示されていた。
ここまで来ると男は案外、複雑に捉えていた多品種生産現場の稼働率予想は単純な方程式で表すことができるのではないかと考えるようになっていた。この試みは直接な解を与えてくれることはなかったが、想定される稼働率に対して必要時間を容易に求められるような計算式を編み出すこととなった。
もしかしたら、高等な専門領域では当たり前に運用されているのかもしれないがそれを独学で得たことは何よりも男にとって自信に繋がった。それと同時に信念ある複雑さは効果のある単純さを得ると男なりの言葉で表現するような体験をしたことは非常に大きなものを得たように思えていた。
ちょっと小説風に書いてみました。