イノベーションの風に吹かれて

山下技術開発事務所 (YAMASHITA Technology & Engineering Office, LLC)

抽象化がもたらすもの~ソフトウェアアーキテクチャとは

抽象化がもたらすもの
抽象化とはある機能が果たしている動作やパラメーターを還元主義的に再構築したものである。デジタルカメラはカメラの持っている機能を再構築することではなく、フィルムをCCDに置き換えることで成立している。ゆえに、デジタルカメラはカメラの持っていたフォームファクターや伝統的なカメラの価値観に縛られ、カメラ市場という限定された市場での次元的競争が強いられる。結果としてコモディティ化が進み製品としての市場価値を失っていくことになる。一方でソフトウェアの世界では「写真を撮影する」という働きを還元主義的に再構築することでCCDとカメラソフト、スマートフォンへのインストールという異なるマーケットサイズへのアプローチが可能になる。スマートフォンは運命的にインターネットに接続された存在であるために、インターネット上の開発コミュニティとソーシャルネットワーククロスネットワークエフェクトを直截的に享受して指数的成長を遂げ、開発者が意図した写真という範囲を否応もなく逸脱しインターネットライフスタイルという領域を開拓することになる。

→抽象化は単にこれまで実装してきた機能をAPIでアクセスできれば良いということではなく、機能の働きを還元主義的にソフトウェアに再構築することを目的としている。

f:id:mash-kyam:20201211140932p:plain

デジカメとスマートフォンの比較

ソフトウェアアーキテクチャとは
かつてIBMがComputing Tabulating Recording Companyと呼ばれていたころ(ワトソン、フェアチャイルド、ホレリスの時代)、計算機は機械や電気によって動作し、肉量り機のように重量と単価を掛け合わせて合計のレシートを印刷したり、パンチカードに穿孔された国勢調査票を集計して人口統計を印刷したりする専用設計だった。汎用コンピュータアーキテクチャとして生まれたIBM System/360は、これらのハードウェアの機能を入出力、処理制御、記憶というように還元主義的に再構築しそれらをInstruction Setというソフトウェアアーキテクチャに展開した。現代ではISAはプロセッサーアーキテクチャであるが、ISAが汎用プログラミングモデルを提供し、コンピューターの普及すなわちソフトウェアファーストの時代の第一歩を歩み出した。

→Hardware Abstractionとはハードウェアの課題をソフトウェアに還元し、汎用プログラミングモデルによるソフトウェアの成長を支えるものである。

f:id:mash-kyam:20201211141156p:plain

IBM System/360