標準:エンティティ間の相互作用を容易にする
18世紀には、銃は熟練の銃匠によって作られており、それぞれの銃は唯一無二のオブジェクトでした。このように作られた銃は非常に高価であり、壊れた場合の修理も困難です。なぜなら、修理するためには銃を銃匠に送り返し、手作業で修理を依頼するしか方法がないからです。
そこで、18世紀半ばにフランスの銃匠であるオノレ・ルブランは、銃の部品を標準化することを提案しました。標準化された銃の部品は、製作者に関係なく互換性があります。したがって、銃が壊れた場合は、不良部品を新しいものと交換することで簡単に修理することができます。
オノレ・ルブランはかなり前に亡くなりましたが、標準化のアイデアは現代のソフトウェア開発の基礎の一つとして引き継がれています。
このセクションでは、標準化の概念とその重要性について説明します。
標準とは何ですか?
大まかに言うと、標準とは「複数のエンティティ間で共有される抽象化」です。この定義には2つの要素が含まれています。
- 「抽象化」とは何ですか?
- 「抽象化」はどのエンティティに適用されますか?
標準は重要です。なぜなら、
- 標準化された方法を提供することで、複数のエンティティが互いに対話するための標準的な方法が提供され、その標準に従って対話する限り、「適切に動作する」と保証されるからです。
- 何かを設計する際に、「具体的なもの」ではなく「抽象化された標準」に依存する方が良いです。なぜなら、前者は標準に従うものであれば何でも動作し、後者は特定のものにのみ動作するからです。
概念をよりよく理解するために、例を見てみましょう。
標準の例
標準の注目すべき例の一つは、命令セットアーキテクチャ(ISA)です。ISAは、コンピュータの抽象化であり、サポートする必要がある操作(加算や減算などの数学操作など)を定義します。
先ほどの標準の定義はISAにも当てはまります。
- 「抽象化」とは何ですか? 抽象化とは、ISAによって定義される必要な操作の集合です。
- 「抽象化」はどのエンティティに適用されますか? 標準(抽象化)は、ISAによって定義された操作をサポートするすべてのコンピュータに適用されます。
これはなぜ重要なのでしょうか?ソフトウェアアプリケーションが異なるベンダーによって作られた異なるコンピュータ上で実行できるのはなぜでしょうか?各コンピュータは異なり、古いコンピュータと新しいコンピュータはおそらく同じハードウェアを搭載していません。なぜ同じアプリケーションが両方のコンピュータで動作するのでしょうか?
その答えは、ソフトウェアアプリケーションが特定のハードウェアに依存せず、特定のISAに依存することです。つまり、ソフトウェアはISAによって定義された操作のみを使用します。同時に、異なるコンピュータは同じISAを実装(つまり、ISAで定義された命令をサポート)することができます。これにより、コンピュータが特定のISAをサポートしている限り、そのISAを対象とするソフトウェアを実行できます。ソフトウェアはISAで定義された操作のみを使用し、コンピュータはISAをサポートしているため、すべてのISAの操作は正常に動作することが保証されます。したがって、ソフトウェアも正常に動作することが保証されます。
%%{init: { "flowchart": { "curve": "linear" } } }%%
graph TD
S1([ソフトウェア-1]) --> I([ISA])
S2([ソフトウェア-2]) --> I
S3([ソフトウェア-3]) --> I
I --> C1([コンピュータ-1])
I --> C2([コンピュータ-2])
I --> C3([コンピュータ-3])
上記のように、ISAはソフトウェアアプリケーションとコンピュータハードウェアの間の「合意」として機能します。ソフトウェアとハードウェアがISAの標準に従って互いに対話する限り(つまり、ソフトウェアはISAで定義された操作のみを使用し、ハードウェアはISAをサポート),ソフトウェアは正常に動作することが保証されます。ISAの標準に従うことで、ソフトウェアおよびハードウェア開発者にとって非常に多くの利益が生じます。ISAがない場合、ソフトウェア開発者はすべてのコンピュータ向けに同じソフトウェアをプログラムする必要がありますが、ISAが存在することで、数つのISAに対してのみソフトウェアをプログラムする必要があります。このような利益はハードウェアメーカーにも適用されます。
おめでとうございます!ほとんどすべてのソフトウェアアプリケーションの基礎となる標準の概念を学びました。