共通化と標準化を混同せずに使い分けること

技術的な標準化を進める中で、重要な観点。
まだきれいに言語化できる状態ではないが、メモしておく。

共通化・標準化の違い

ChatGPTが言うには、以下の通り。

共通化と標準化は、両方とも異なるものを同じにすることを意味しますが、微妙な違いがあります。

共通化は、複数の要素やプロセスを共通の基準や形式に統一することです。これにより、異なるものが互換性を持ち、相互運用可能になります。共通化は、一般的な目的を持つ要素やプロセスに適用されます。例えば、異なる製造業者が同じ規格のネジを作ることで、ネジが共通化されます。

一方、標準化は、特定の分野や業界において、品質や性能、手順などの基準を定めることです。標準化は、特定の製品やサービスが一定の品質や性能を満たすようにするために行われます。例えば、ISO(国際標準化機構)が定める品質管理の規格は、製品の品質を標準化します。

要するに、共通化は異なるものの間での互換性や相互運用性を高めるために行われる一般的なプロセスであり、標準化は特定の品質や性能を確保するための規格を定めるプロセスです。

共通化・標準化を使い分けるための観点

共通化・標準化をうっかり混同してしまうことがある。
そこで共通化・標準化の使い分けに有用な観点を、例とともに挙げる。

例外を許容するか、しないか

標準化は例外を許容するが、共通化は例外を許容しない。
そして例外を許容しないこと、すなわち共通化は認知負荷を大きく下げるという大きなメリットが存在する。
共通であるならば、1つを理解すれば共通部分については全て理解したことになる。

しかし誤って共通化を適用すると、変化への対応力が低下する可能性がある。
例えば「現時点では例外が存在しないが、それは偶然一致しているだけ」というケースがある。
本質的に共通なのか・時代や環境が変わっても共通するのかを考えず、安易な共通化を選択することは避けたい。

例えばソースコードをライブラリ化して流用するのは共通化に相当する。
しかし共通化は例外を許容しないため、顧客からの要求の変化へ対応できなくなる可能性がある。

何のために、どこまで共通化するか

例として、Javaにおける抽象クラス(abstract class)とインタフェース(interface)の使い分けを挙げる。

抽象クラスは、インタフェースよりも強力な共通化と制約をもたらす。
スーパークラスは実装を持つことができ、スーパークラスのメソッドの実装が変わるとサブクラスにも影響し得る。
また、抽象クラスは多重継承できないという制約が存在する。

一方で、インタフェースが共通化するのはメソッド名やその入出力までに留まり、具体的な処理(How)は共通化されない。
またインタフェースは複数実装することが可能であり、継承よりも柔軟である。

つまり抽象クラスはHowを共通化するが、インタフェースはHowを共通化しない
共通化は標準化の一手段であるが、「何のために、何をどこまで共通化したいのか」によって使い分ける必要がある。

トップダウンか、ボトムアップか

標準化はトップダウン的な活動で、共通化はボトムアップ的な活動。
現場に近いほど共通化に関心が向きやすく、マネジメントや経営に近いほど標準化に関心が向きやすい。

「標準化の一手段として共通化が効果的」というケースは存在するため、トップダウンの共通化を全否定するつもりはない。
しかし「標準化が目的の活動なのに、いつのまにか共通化が目的」にすり替わってしまわないよう注意が必要。

関連記事


  1. 仕事で役立つ、原理・原則・法則
  2. 他人の言葉を鵜呑みにしても、真の問題解決に至ることはできない

comments powered by Disqus