こんにちは、Matsuです。
前回まで、ネットワークやデータベースといった、生産管理にまつわる技術についてご紹介してきました。
今回は、具体的に生産管理での困りごとが発生したとき、ネットワークやデータベースを駆使して
困りごとを解決できるスグレモノ「トレサビ(トレーサビリティー)」と、それを支える技術のひとつ「インデックス」についてご紹介します。
「トレサビ」と、データを素早く検索する「インデックス」
生産管理の上で、どうしても出てしまうのが不良品です。
不良品が出てしまったときは…
- どの材料を使っていたか?
- 加工したときの状態はどうだったか?
- どこまで製品を回収しないといけないのか?
などを調査する必要があります。
そのときに役に立つのが「トレサビ」です。
トレサビとは?
では、トレサビ(トレーサビリティ)とは何でしょうか。
少し前のお話ですが、2000年代頃でしょうか。狂牛病というものが流行したことがあります。
牛の脳がスポンジ状になる恐ろしい病気で、狂牛病になった牛を食べることで人間にも感染する危険性が指摘されたことを受けて
「和牛トレーサビリティ」制度ができたというのは聞いたことがある方もいらっしゃるかもしれません。
現在、スーパーで売っている牛肉のパックには番号(個体識別番号)が貼られています。
独立行政法人家畜改良センターのサイト でこの番号を入れて検索すると、
その牛の生年月日、性別、種別、飼育地やと場などといった情報を見ることができます。
どんな牛だったのか分かれば安心ですね!
このように、「もの」の情報を記録し、たどれるようにすることを「トレーサビリティ」と言います。
工場での生産管理においても、このトレーサビリティの考え方が役に立ちます。
生産管理でのトレサビでは、「どの材料を使っているか」「どういう条件で加工したか」等の情報を扱います。
どんなときにトレサビが役に立つ?
1.不良がでた! →その製品の材料は? 加工条件は?
自動車のリコールや、カスタマーからのクレームなどが発生したとき、その不良の原因を調査する必要があります。
トレサビがあれば、製品に使われている材料や、加工したときの条件などがすべて検索できます!
2.材料の不良が判明した!その材料を使った製品をすべて回収したい!
発生した不良の原因が特定の材料だとわかれば、その材料を使った製品をすべて回収する必要が出てくるかもしれません。
トレサビがあれば、材料を使った製品をすべて検索することができます!
3.日報・月報などの帳票を自動作成したい!
どこの工場でも日々の不良率や生産数を記録すると思います。
トレサビがあれば、収集している情報を使って自動で帳票を出力できます!
4.製品の不良率を調査し、歩留まり改善のための条件を調査したい!
不良率はなるべく抑えたいですよね。
トレサビがあれば、どの条件のときに不良が発生しているか等の条件を調査することができます!
こうしてみると、トレサビは必須の技術になりますね。
実際、現在の生産現場では必ず導入されている機能になります。
トレサビを構成する技術
トレサビを構成する技術には、次のようなものがあります。
1.製品の加工条件等を収集する技術(センサー、PLC、ネットワーク…)
現在の製造機械には、多数のセンサーが搭載され、コンピュータ(PLCと言われます)で制御されています。
センサーでPLCが収集した情報は、ネットワークを通じてサーバに集められます。
2.情報を蓄積する技術(データベース)
サーバに集まった情報は、データベースに蓄積されます。
データベースでは、ルールに基づいて見つけやすいよう、利用しやすいようにデータが整理されます。
3.情報を利用する技術(検索・帳票出力)
ユーザーがデータベースを検索し、必要な情報を引き出すためのプログラムが必要です。
また、日報などの帳票の出力や、かんばんの自動印刷など、いろいろな情報を出力します。
上記のような技術を使ってトレサビを実現するわけですが、実際の現場においては、ユーザーごとに異なる要求に応えることが特に難しいことではないかなと思います。
せっかく作ったトレサビも、ユーザーが使えるものでなければ役に立ちません。
コストや性能、要求をよく吟味し、パッケージの導入か、イチからの構築が必要か、いずれにしろユーザーとの細かな調整が重要になります。
膨大なデータの中から素早く検索するために ~インデックス~
トレサビを構成する技術は上記のようにいろいろありますが、その中から一つ、データベースに格納された膨大な情報から素早く必要な情報を検索するための技術「インデックス」をご紹介します。
データベースのしくみ
まず、いろいろなデータを格納するデータベースと呼ばれるものがどのようにデータを格納しているかを見てみましょう。
データベースのうち一般的な「リレーショナルデータベース」というものを前提とします。
テーブル
データは、テーブルというものに格納されます。エクセルの表のようなイメージですね。
これに、製品番号、製造日時、使用材料番号といった内容を格納するとします。
製品番号 | 製造日時 | 使用材料番号 |
---|---|---|
PRD000320 | 2022/03/16 13:00:12 | PARTS000124 |
PRD000321 | 2022/03/16 13:00:15 | PARTS000125 |
PRD000322 | 2022/03/16 13:00:18 | PARTS000126 |
PRD000323 | 2022/03/16 13:00:20 | PARTS000127 |
こんなイメージですね。
この中から、「PRD000321」という製品番号の使用材料番号を知りたい!
となったとき、このテーブルの「製品番号」から「PRD000321」を探すことになります。
上のテーブルで「PRD000321」を探すと、使用材料番号は「PARTS000125」ですね。
このテーブルには4件しかないので、人が目で探してもすぐに分かります。
でも、これが1万件、10万件、100万件…とあったらどうでしょう。
人が先頭から探していったら日が暮れてしまいますね。
上のテーブルでは順番に並んでいますが、この通り順番に並んでいるとは限りません。
バラバラに入っているとしたら、それこそ先頭から最後まで見ていって、100万件目でやっと見つけた!ということにもなってしまいます。
これでは日が暮れてしまうどころではないですね。
人の目で探すと時間がかかりますが、コンピュータでデータを探すときも同じようなことで、日が暮れるまではないですが、
100万件のデータをぜんぶ見ていたら時間がかかって仕方がありません。
そこで、ひとつ工夫をします。
インデックス
家電のマニュアルを見ると、最後のほうに「アイウエオ」順で、この言葉は何ページに乗ってるよ!といったものがあります。
これをデータベースで実現するのが「インデックス」です。
「インデックス」は、日本語では「索引」または「目次」といった意味になります。
「PRD000000」… 1ページ目
「PRD000100」… 80ページ目
:
「PRD000200」… 231ページ目
「PRD000321」… 262ページ目
みたいな目次があればすぐ見つかりますね。
テーブルとは別にこの「索引」を作っておくことで、コンピュータがデータを検索するときに一瞬で目的のデータを見つけることができるわけです。
インデックスの実際
インデックスの実現方法は下記のようにいろいろあります。
- Bツリーインデックス
- ビットマップインデックス
- ハッシュインデックス
このうち、Bツリーインデックスについて説明します。
察しのいい方は「B…バイナリ… あ、二分木かな?」と思われるかもしれませんが、実はこのBはバイナリではなくバランスなんです。バランスツリーインデックスですね。
- Bツリーインデックスのしくみ

まず、一番親を順番に見ていって、探したい値より大きなものが見つかったら、矢印にそって一つ子のほうへ移動します。
次に、子を順番に見ていって、探したい値より大きなものが見つかったら、孫へ移動します。
孫の中で、PRD000321 が見つかったら、ゴールです。
数百、数千のデータでも、このように数ステップでデータが見つかってしまいます。
次回
いかがでしょうか。
データを検索するという一見簡単な処理においでも、膨大なデータの中から目的のものをすぐに見つけるための工夫があることがわかりますね。
次回は、トレサビを実現する技術「1. 製品の加工条件等を収集する技術」で使われるデータ収集について解説します。

最近ガレージをつくってDIYにハマってしまう。
無限に欲しくなる電動工具が怖い。
関連記事
-
第1回 ラズパイを使用したBLE通信 ~ ディスプレイ、キーボード、マウスを接続しないで設定 前編 ~
こんにちは、GTです。よろしくお願いします。 最近業務でラズパイのBluetooth機能を使...
公開日:2021.12.24 更新日:2021.12.24
tag : Bluetooth Raspberry Pi
-
第3回 顔認識デバイス Android編 〜 LiveDataとDataBindingを実装する 〜
前回に引き続き、MVVMの実装をしていきます。 ViewModelの実装では、UIの状態管理...
公開日:2021.08.19 更新日:2021.09.08
-
第4回 顔認識デバイス Android編 〜 ラズパイとの通信 〜
こんにちは! 本記事を担当します KNSK と申します。 よろしくお願いします! 今回はAn...
公開日:2021.09.09 更新日:2021.09.09
-
WindowsにおけるPyCharm+GITの開発環境のセットアップ方法
こんにちは!ソラです。 Python、ラズパイのお仕事が増えてきています。 ありがたいことで...
公開日:2021.06.30 更新日:2021.08.03
tag : Raspberry Pi IoT
-
こんにちは、TMIHです。 今回から組み込み系のソフトウェア設計標準規格である、MISRA-...
公開日:2022.02.25 更新日:2022.02.25
-
第2回 顔認識デバイス Android編 〜 JetPackを使ってViewModelを実装する 〜
最近のAndroidアプリはJetPackライブラリが浸透してきたこともあり、MVVMを使う...
公開日:2021.07.19 更新日:2021.07.19