基礎知識
基礎知識について
【第1章】基本原則
- 目次 -
  1. 背景
  2. 1.制約
    1. 制約 (2つの現実)
    2. 認知限界
    3. 物理量
    4. トレードオフ
    5. 物理量の限界、凡庸な人間、有限な時間、限られた経済性
  3. 2.抽象化
    1. インターフェース
    2. Key -> Value
  4. 3.規約
    1. 規約と標準化
    2. なぜ規約が必要なのか?

背景

コンピュータ科学を見ていく上で、「なぜ、こんな風になっているのか」に対する答えは、大概この三つ収束する。

  1. 制約
  2. 抽象化
  3. 規約

1.制約

制約 (2つの現実)

  1. 人間の能力は不完全
  2. 物理量は有限

認知限界

人間には認知限界がある。人間には完全無欠な情報処理能力や認知能力があるわけではなく、そこには限界がある。
– H・A・サイモン

物理量

物質系の物理的な性質・状態を表現する量。普通,一個の数値(スカラー)または一組の複数個の数値(ベクトル・テンソル)によって表され,その値は,用いる単位や座標系の選び方によって異なる。
– 大辞林 第三版

トレードオフ

一方を追求すれば他方を犠牲にせざるを得ないという状態・関係のことである。
トレードオフのある状況では具体的な選択肢の長所と短所をすべて考慮したうえで決定を行うことが求められる。
– トレードオフ - Wikipedia

物理量の限界、凡庸な人間、有限な時間、限られた経済性

トレードオフが必ず存在する。
無限の速度や天才的頭脳を前提にしない。
凡庸な人間が、限られた物理量を扱う。
さらに、限られた時間と資本という制約もある。

2.抽象化

left fit

抽象化という概念は、コンピュータ科学とコンピュータシステムの設計の隅々まで及んでいる。抽象化(abstraction)という用語は、あるものの「外面的な性質」と「内面的な構造の詳細」とを区別することを意味している。つまり抽象化によって、コンピュータ、自動車、電子レンジといった複雑な装置の内部構造の詳細を無視して、1つの理解可能な単位として使用できる。そもそもそのような複雑な設計し構築できるのも、抽象化という手段があってのことである。システムの各構成要素は抽象化のレベルを表していて、そのような抽象化レベルを使うことによって、内部構造の詳細に立ち入ることなく構成要素を使用できる。

インターフェース

界面や接触面、中間面などといった意味を持ち、転じてコンピュータと周辺機器の接続部分を表すようになった。ものごとの境界となる部分と、その境界での処理方式であるプロトコルを指す。

left fit

right fit

大規模で複雑なコンピュータシステムを構成し、分析して管理できるのも、抽象化の概念を適用しているからに他ならない。コンピュータシステムを常に詳細なレベルで見ていたならば、その複雑さに圧倒されてしまい手も足も出ないだろう。抽象化のレベル毎にシステムを、抽象化ツール(abstract tool)と呼ばれる構成要素からなるものとして見る。そうすることにより、同じ抽象化レベルの各構成要素がどのように相互に関連しているか、そして全体がどのように一段高い構成要素へと形成されるかという点に意識を集中させられる。つまりシステムの一部を、システムの複雑な詳細に溺れることなく、それが実行する機能を果たすものとして理解できるようになる。

抽象化とは、科学技術分野に限られて使われるわけではないことも強調しておきたい。抽象化は、それなしでは立ち行かない社会が創造したライフスタイルの重要な単純化の技法なのである。ほとんどの人は、日常生活のさまざまな利便性というものがどのようにして実現されているかを理解してない。食品や衣服にしても、自分で育成し縫製したものではない。電子機器や通信機器にしても、その基礎技術についての知識なしで使用している。さまざまなサービスを享受しているが、それぞれの職業について詳しく知っているわけではない。社会のごく一部が進歩の実現に関わり、残りの人々は、その結果を抽象化ツールとして利用する術を学ぶだけで済んでいる。このように社会の抽象化ツールが発展するとともに、社会の進歩も加速されていく。
コンピュータは、抽象化ツールの複数のレベルによって構成されている。大規模なソフトウェアシステムの開発も、それを構成する各モジュールが、大きなモジュールの抽象化ツールとして使用されるモジュール構造によって組み立てられていると考えられる。更に抽象化は、コンピュータ科学そのものの進歩でも重要な役割を演じている。抽象化によって研究者は、コンピュータ科学という複雑な分野の細分化された特定の分野に意識を集中できる。

Key -> Value

「世の中に存在するあらゆるものは、
実体と関連という2つの概念で表現が可能」
– 1975年、マサチューセッツ工科大学(MIT) Peter Chen

inline

3.規約

規約と標準化

人々の協議によって決めた規則。

なぜ規約が必要なのか?

多くの人や組織が技術開発に関与する場合、それぞれが勝手に開発するよりも、一定の取り決め(=ルール)のもとに開発する方が効率的である。標準化が必要。その技術が発展途上の場合は、技術発展にもこのような取り決めが大きく寄与する場合がある。

このような、一定の取り決めをするときは、その技術開発を牽引している研究者や企業などが結束する場合がだいたいである。そのような結束した組織は、経済活動を行わない組織体になることが多い。W3Cなどがその例である。

このようなとき、ブラウザのIE6の場合がそうだが、業界が決定した一定の規約を、影響力の大きな組織が無視し、独自に規約を設定した場合、それに付随して開発をする人々に多大なコストをかけ、その技術そのもの(この場合はブラウザ)の進化の妨げになることにもなる。なので、技術発展のためには、ある個人や企業に有利にならないようなフラットな規約の構築が必要であり、影響力のある個人や企業の勝手な行動には、一定のペナルティを設定することが大切でもある。