前回「製造業のバイブル『部品表(BOM)』の復権」では、部品表とその発展形である統合化部品表の概略について述べた。まずは簡単に、その内容をおさらいしておこう。
メインフレーム上で動作するMRP(資材所要量計画)システムのインフラとして誕生した「第1世代」の部品表は、統合化部品表の登場で一気に第2世代から第5世代まで発達することになった。各世代の要点は以下の通りだ。
今回は、まず第1世代の部品表について少し詳しく説明したい。統合化部品表は製造業に多くのメリットをもたらす画期的なインフラだが、その原型となるのはやはり昔ながらのオーソドックスな部品表だ。従って、統合化部品表を理解し、導入するためには、まずはその大本となる第1世代の部品表についての理解が欠かせない。
若干技術的な内容にも踏み込むが、技術者ではない読者にも理解しやすいよう、なるべく簡単に説明したつもりである。部品表を理解する上では必須の知識なので、どうかお付き合い願いたい。
まず、部品表の基本形をごく簡単に説明する。前回でも述べたが、部品表を一言で言うと「製品の組み立てを行うときに必要な部品を、その組み立て順序に応じて階層的に表現した表」である。
例えば、自転車Aという製品を作る例で考えてみよう。下図が、自転車Aがどのような部品で組み立てられているかを示したマスタデータベース、すなわち部品表である(図1)。
ご覧いただければ分かるように、タイヤとフレームからシャーシができて、ハンドルとシャーシから自転車Aが組み立てられるということがデータ構造で表されている。このように部品表は、ある製品のすべての部材・部品と、その組み立て順序を示すデータとなっている。
初期の部品表は、大型メインフレームのデータベースであるCODASYL(Conference on Data Systems Languages:コダシル)型のネットワーク型データベースや、IBMのIMS(Information Management System:アイエムエス)に代表されるような階層型データモデルのデータベースを基に実装された。理論的には無限のデータ階層を持ち得る部品表を、わずか2つのテーブル「品目マスタ」と「構成マスタ」の組み合わせで表現できる画期的なデータモデルだった。
このデータモデルが考案される以前は、部品表のような階層データは階層ごとに個別のテーブルとして実装されたため、大規模な部品表になるとテーブルの数も膨大になる。その結果、パフォーマンスとメンテナンス性に問題が発生することが多かった。ちなみに、これは決して過去の話とは限らず、メインフレームで部品表を運用している企業の中には、現在でもこうした形で部品表が実装されていることが少なくない。

品目マスタと構成マスタによるデータモデルの考案は、部品表データベースのパフォーマンスやメンテナンス性の向上をもたらしたことはもちろん、部品データの階層間での移動も容易に実現できるようにした画期的なものだった。MRPは、この画期的な部品表データモデルと部品展開アルゴリズムによって生まれた生産管理システムだった(部品展開アルゴリズムについては後述)。このデータモデルはやがて、1970年代後半に登場し現在ではデータベースの主流を占めるリレーショナル型データベースに移植され、今日に至っている(図3)。
ではここで、品目マスタと構成マスタについて簡単に説明しておこう。
部品の品目番号(部品番号、または“Parts Number”“P/N”ともいう)をキーにしたマスタデータベースで、部品(品目)そのものに関する情報を保持している。主な項目は以下の通り(ごく基本的な項目のみ)。
親品目(親部品)と子品目(子部品)の関係を保持するマスタデータベースで、キーは「親品番+子品番」である。原則として、構成マスタに存在する品目はすべて必ず品目マスタに存在しなければならない。主な項目は以下の通り(ごく基本的な項目のみ)。
この2つのテーブル、品目マスタと構成マスタのリレーションによって、理論的には無数の階層を持つことができる(※1)部品表を、非常にシンプルな形で実装することができるのだ。
※1 筆者が今まで経験した最も深い階層の部品表はある重工業のもので、MAXレベルが17階層であった。レベルが10を超えるとメンテナンスも難しくなるので、最大20階層が一般的な部品表のMAXではないかと考えられる。
部品表の中に含まれる個々の部品データを展開して取り出すアルゴリズムのことを「部品展開」と呼ぶ。MRPなどのアプリケーションは、部品展開によって部品表から部品データをさまざまな方法で取り出して利用している。ここでは、部品展開の幾つかのパターンを紹介する。
なお、昨今のアプリケーションやツールのGUIでは、部品表の階層を主に「エクスプローラー型」で表現している(図1を参照)。エクスプローラー型のツールとして最も身近な例は、Windowsに付属している「Windowsエクスプローラ」だろう。PCのHDD内のフォルダ階層を自由に展開しながら、ファイルを参照することができる。部品表のエクスプローラー型ツールも、インタフェースの基本的な仕組みはこれと同様だ。
従って、エクスプローラー型のGUIを使う限りにおいては、部品展開の種別やパターンを特に意識することなく簡単に部品表の階層をたどり、部品データを参照することが可能だ。そのため、これから紹介する部品展開の各パターンを意識する場面は、実際にはあまり多くないかもしれない。
しかし、部品展開は部品表の世界では一般常識とされており、部品表を理解するためには避けて通れない知識である。ごくたまにツールを使って部品表の内容を軽く参照する程度のユーザーならともかく、製造業のシステムを構築・運用するエンジニアや、RFPを作成する情報システム担当者にとっては、必須の知識だといえる。
「単層展開(Single-level Explosion)」とは、ある品目に従って位置レベル、単層レベルで子品目の情報を展開する部品展開パターンである(図4)。言い換えれば、ある部品が直接どういう部品でできているかを示すための部品展開だ。
図1の例でいえば、自転車Aをハンドルとシャーシに展開するためのアルゴリズムが単層展開に当たる。
「構造展開(Indented Explosion)」は、ある親品目から遡及(そきゅう)し、展開される子品目の構成をすべての階層にわたって展開する部品展開パターンである(図5)。具体的な用途としては、その製品が末端の部品に至るまでどういう構造でできているのを示すものだ。
図1の例で言えば、自転車A、ハンドル、シャーシ、フレーム、タイヤのすべての構造を明らかにするのが構造展開だ。
なお、この構造展開と前述の単層展開の区別は、現在では事実上なくなっているかもしれない。その理由は、エクスプローラー型のツールでは、表示する階層の深さを自由に選択できるからだ。階層を1つだけ展開して表示すれば単層展開、末端に至るまですべての階層を展開して表示すれば構造展開になるわけだ。
総合展開とは、親品目をすべて展開し、その中の員数をレベルごとに掛け合わせて、その製品全体の中で、ある部品が何個必要であるかを総合計した表である(図6)。この展開を行うことによって、親品目を作成するのに子の部品がそれぞれ何個ずつ必要になるかを一意に計算し、発注処理を行うことができる。原価計算の業務には欠かせない展開方式である。
これは、子部品からその親の部品を逆にたどる部品展開パターンである(図7)。ある部品に不良が発生した際、それがどの製品で使われているのか、どういう部品の中で使われているのかを探し出したい場合などに利用する。あるいは、ある子部品を異なるメーカーのものに取り換えたいといった場合に、どの製品群に影響があるかを調べる際にもよく使われる。
初期の部品表では、この逆単層展開のアウトプット、すなわちある任意の共通部品がどの親で使われているかを表にしたものを「Where Used表」といった。
これは、ある部品が最終的にどの製品に遡及して使われているかを総合的に展開するための部品展開パターンである。例えば、ある部品に有害物質が含まれているのが見つかった際、どの最終製品にその部品、ひいては有害物質が含まれているのか、といったことを突き止めることができる。
ある子部品が、最終的にどの親部品にサマライズされるかを計算するために使う部品展開パターンである(図8)。例えば、ある製品の末端の子部品であるスチール板から逆総合展開していくことによって、同じスチール板を使ってどの製品(部品)をどれだけ作ることができるのかを割り出すことができる。つまり、材料から製品を遡及するような部品展開を行うことができるのだ。
「ファントム」とは日本語でいうところの「疑似品目」で、部品表を見やすくするために便宜上設定した品目のことを指す。実際には存在しない品目であるため、ファントム(幽霊)と呼ばれている。これは、何千品目もの部品がフラットに並んでいて見づらいような場合に使用する(図9)。
「ループ」とは、部品展開を行っていく際に同じ品目が繰り返し現れる現象のことを指す。下図のように、Aの下にB、Bの下にCがあり、その下にまたAがあるようなケースは、現実の品目ではあり得ないが、データベース上のデータとしては存在し得る(図10)。
このようなデータが部品表に存在すると、部品展開は永遠に続いてしまう。このような現象のことをループと呼ぶ。
このループを防ぐための仕組みとして「LLC」というものがある。LLCとは“Low Level Code”の略称で、ループを防ぐために部品表内の品目の最深レベル(展開レベル)を保持している。このLLCを使用して、その品目がループデータかどうかをチェックするアルゴリズムのことを「ループチェック」という。
エクスプローラー型のGUIがなかったころは、構造展開の出力結果がリストだったので、このようなループのチェックをきちんと行う必要があった。しかし現在では、ある特定の階層レベル(通常は20レベル程度)で展開を強制的にストップさせる方法(“Max Loop”と呼ぶ)でループとパフォーマンス低下を防ぐことが多い。
今回は第1世代の部品表について説明したが、これは別に部品表の歴史の講義をしたかったわけではない。前述の通り、現在でも多くの製造業では、レガシーホストの中でブラックボックス化したこの第1世代の部品表を運用している。つまり、部品表の「今」をきちんと認識するための情報を提供したつもりである。読者の皆さんも、もし自社の部品表がレガシーホストで運用されている場合は、その中身が一体どうなっているのか、本稿を参考にしながら調べてみてはいかがだろうか。
さて次回は、この第1世代の部品表が進化を遂げて統合化部品表が誕生した背景や経緯、さらに統合化部品表の具体的な内容や特徴などについて説明したいと思う。
1996年に生産管理システムソリューション会社、株式会社クラステクノロジーを設立。外国製品が大半を占める生産管理ソフトウェア分野において、国内製品として功績を挙げたことが評価され、2002年に創業・ベンチャー国民フォーラム企業家部門において経済産業大臣賞を受賞、2005年春の褒章では藍綬褒章を受章。著書に『エンジニアリング・チェーン・マネジメント』(翔泳社)、『グローバル生産のための統合化部品表のすべて』(日本能率協会マネジメントセンター)などがある。