2019-03-26 クリーンアーキテクチャーの読書メモ(10) 読書メモ クリーンアーキテクチャー 第四部 コンポーネントの原則 SOLID 原則 = レンガを組み合わせて部屋を作る コンポーネントの原則 = 部屋を組み合わせて建物を作る §12 コンポーネント コンポーネント = デプロイの単位 Java : jar Ruby : gem .NET : DLL コンポーネントの歴史 アプリケーションと関数ライブラリーのアドレス(セグメンテーション)を分けてた 関数ライブラリーのアドレス開始位置が固定なので、アプリケーション領域が増えると、また先にある特定の固定アドレスにアプリケーションの続きを配置する リロケータビリティ/リンクローダー コンパイラーが出力するバイナリに手を加えてスマートローダーでメモリに再配置 コンパイラーも関数名をメタデータとして関数名を出力 ライブラリーの関数も外部参照として扱えるようになる リンカ プログラムが巨大化してリンクローダーが使い物にならなくなった ロードとリンクに分けて、後者をさらに別のアプリケーション(リンカ)に切り出し プログラムの巨大化とマシンの高速化の戦い マシン性能の向上によるリンク時間短縮が勝った つまり コンポーネントをプラグインとして扱う仕組みが整っている