mike-neckのブログ

Java or Groovy or Swift or Golang

クリーンアーキテクチャーの読書メモ(10)

f:id:mike_neck:20190312230053p:plain

第四部 コンポーネントの原則

  • SOLID 原則 = レンガを組み合わせて部屋を作る
  • コンポーネントの原則 = 部屋を組み合わせて建物を作る

§12 コンポーネント

  • コンポーネント = デプロイの単位
  • コンポーネントの歴史
    • アプリケーションと関数ライブラリーのアドレス(セグメンテーション)を分けてた
      • 関数ライブラリーのアドレス開始位置が固定なので、アプリケーション領域が増えると、また先にある特定の固定アドレスにアプリケーションの続きを配置する
    • リロケータビリティ/リンクローダー
      • コンパイラーが出力するバイナリに手を加えてスマートローダーでメモリに再配置
      • コンパイラーも関数名をメタデータとして関数名を出力
      • ライブラリーの関数も外部参照として扱えるようになる
    • リンカ
      • プログラムが巨大化してリンクローダーが使い物にならなくなった
      • ロードとリンクに分けて、後者をさらに別のアプリケーション(リンカ)に切り出し
    • プログラムの巨大化とマシンの高速化の戦い
      • マシン性能の向上によるリンク時間短縮が勝った
  • つまり