コードの再利用(コードのさいりよう)またはソフトウェアの再利用とは、既存のソフトウェアまたはソフトウェアの知識を活用し、新たなソフトウェアを構築すること。コードの再利用はプログラミングの黎明期から行われてきた。プログラマは常にコードの一部、テンプレート、関数、プロシージャを再利用している。ソフトウェアの再利用はソフトウェア工学の研究対象である。
概要
再利用可能なソフトウェアやソフトウェアの知識は再利用可能な資産である。資産には、設計、要求仕様、テストケース、アーキテクチャなども含まれる。
おそらく最もよく知られている再利用可能資産はコードである。コードの再利用とは、ある時点で書かれたプログラムの一部または全部を後の別のプログラムを書くときに利用することである。コードの再利用は、冗長な作業に費やす時間とエネルギーを節約する典型的技法である。
ライブラリは抽象化のよい例である。プログラマはプログラムの一部を再利用可能とするために内部に抽象化ポイントを作成したり、自前で使うためにカスタムライブラリを作ったりする。ソフトウェアをより再利用しやすくする特性をモジュール性、低結合度、高凝集度、情報隠蔽、関心の分離などと呼ぶ。
既存をコードを使って新たなコードを書く場合、なんらかのインタフェースあるいはアクセス手段が定義されていなければならない。これにはサブルーチンコール、オブジェクト、クラス、プロトタイプなどが含まれるのが一般的である。企業では、これらは定式化され標準化されているのが一般的である。
あるプログラムの以前のバージョンを出発点として、次のバージョンを開発する作業も、一種のコードの再利用である。
コードの再利用の一形態として、既存のプログラムからコードを一部または全部抜き出して新しいプログラムにコピーすることがある。企業は素早く開発するためにこの手法を使うことがあるが、このようなコピー・アンド・ペーストによるプログラミングを多用すると、後で重複コード問題に悩まされることになる。
再利用を素早く容易に、プログラミングの正常なプロセスの一部として、より体系的に行えるようにする研究が多くの研究者によって行われてきた。オブジェクト指向プログラミングもそのような目的で生み出されたもので、定式化された再利用手法として一般化した。同様な目的で後に開発されたものとしてジェネリックプログラミングがある。
さらに新しい手段として自動プログラミングがある。これはプログラムがユーザーが設定した一連のパラメータに基づいてある種のプログラムを生成するものである。類似の概念にメタプログラミングもある。
再利用の形態
- 日和見的再利用
- プロジェクト開始時に、再利用可能なコンポーネントがすでに存在することを知って、再利用する。
- 計画的再利用
- コンポーネントを後々再利用可能なように戦略的に設計していく。
日和見的再利用はさらに以下のように分けられる。
- 内部再利用
- チームが自分達で作ったコンポーネントを再利用する。あくまでも日和見的再利用であって、計画的ではないので、インタフェースの調整などに工数を取られる可能性がある。
- 外部再利用
- サードパーティ製コンポーネントを調達して利用する。有償の場合、自身で開発した場合の20%以下のコストとなるのが一般的である。また、調達したコンポーネントについて学習して統合するのにかかる時間も考慮しなければならない。
![](https://blogimg.goo.ne.jp/user_image/6c/f4/135463f4ea206e1b8540dac121ca18e6.jpg?1722347099)