
505
クローン作成の作業内容を吟味する
ほどには似ていない問題を解いている既存コードが見つかるときに、行われます。カスタマイズによる
クローンが生じるのは、全くの技術的というよりも、コード所有や十分テスト済みのコードと出来たて
のコードを分離したいという理由などにまつわる管理上の圧力による場合もあります。こういう場合既
存コードは、望まれている新しい機能を達成するために「その場」で変更するわけにいかないため、シ
ステム内のどこか他の場所にコピーされて調整されます。
カスタマイズは、フォークやテンプレートとはさまざまな点で異なります。カスタマイズでは、クロー
ン作成がやがてオリジナルと袂を分かっていく新しい設計アイデアの出発点になります。ずっと長い間、
クローンどうしの間にほとんどあるいはまったく、何の調整もないかもしれません。フォークでは、違
うものどうしが細部としては多かれ少なかれ独立に発展していくにも関わらず
、共通の外部要求に変更
があった場合には開発者グループどうしのコミュニケーションがあるのが普通です。テンプレートでは、
クローンが
1
つの抽象化に結合されないのは、言語の表現力が足らないことやシステムの設計が理由の
大部分なのですから、クローンどうしの関係は一層強固です。テンプレートとフォークの目標は、オリ
ジナルの振舞いをできるだけ保持することであるのに対して、カスタマイズは振舞いの再利用であり、
しかもその振舞いが時間を経ても同じに留まるというような要求は普通伴わないような再利用なので
す。カスタマイズによるクローン群において生じる互いの協調のない進化は、それぞれのクローンを ...