システム関連の仕事をしているとたまに出てくる「構成管理」という単語―。
皆さんは、その意味をちゃんと理解しているでしょうか?
初めて「構成管理」という言葉を聞いた人に分かりやすく説明できるでしょうか?
最近になって、ますます「構成管理」という概念が重要視されるようになり、関連ツールもたくさん発表されています。最新のトレンドというわけではありませんが、リモートワークやアジャイル開発などの流行と同時にますます重要性が認識されています。
このページでは、「構成管理ってのはこういうもの」「構成管理をする意味はこういうこと」っていうのを初心者でも分かるように解説します。
3分ぐらいで分かるようにサクッと解説していますので、是非最後までご覧ください。
構成管理とは?
結論から言うと、構成管理とは「プログラム(ソフトウェア)への変更を全て記録し、全て管理する」ことを表します。
広義に言えば「システムに関わる全情報(要件・機能・性能・操作マニュアル等)を管理し変更を記録すること」を指しますが、実現場で「構成管理」という言葉が利用される場合は「プログラムの変更管理」という意味合いで用いられることが多いです。
尚、英語でいうと「 Software Configuration Management 」―。略して、SCMという言葉で表されます。
※広義の「構成管理」は Configuration Management となります。
システム開発においては、プロジェクトのあらゆる時点における情報を記録し、変更履歴の管理を行う必要があります。
膨大なプログラムと、それら1つ1つの変更情報を管理する―。これが「構成管理」という言葉の意味です。
構成管理を行う目的
なぜ、膨大なプログラムの変更履歴を全て管理する必要があるのでしょうか?
構成管理と一言に言っても、管理するソースの量も、変更回数も、それに関わる開発者の数も膨大です。
その管理だけでも、非常に莫大なコストを要します。
それでもなぜ構成管理が必要なのか?大きく分けて2つの観点からメリットがあります。
① 案の枝分かれを管理できる
1つ目のメリットが、案の枝分かれを管理できるという点です。
以下のイメージ図をご覧ください。
システム開発では、複数の案を同時並行的に進めなくてはならない場合が存在します。
機能の方式であったり、実装方式であったり、様々な要因から確定せず「とりあえず試してみよう」「複数の案を同時に進めてみよう」といった場合があります。
その際、もともとの資源Aから、「A_1」「A`」「B」というように、進化の枝分かれが発生します。イメージ図のように、案が3つであればまだ良いのですが、場合によっては案が5つ以上になったり、枝分かれの先の枝分かれが起きたいします。
この案の枝分かれの管理が行えるのが「構成管理」のメリットです。
もし「構成管理」がなかったら、どの資源が確定なのか?どの資源に変更をくわれば良いのか?どの資源にどんな変更が加えられているのか?が分かりません。
結果として、バグの発生や、最悪1から作り直し、なんてことになりかねません。
1つ1つの変更には、確実にクライアントや社内での合意があるはずなのに、その情報と結果が全て無に帰してしまう可能性を持つのです。
② 整合性の担保
2つ目のメリットはプログラムの同時変更などによる不整合を防ぐことができることです。
多くのプロジェクトでは、複数の人間が、同時に同じプログラムの同じ箇所を変更しようとする場合もあります。
「構成管理」がない場合、開発者が一斉に同じプログラムを更新しようとしてしまい、プログラム間での不整合の発生につながります。
プログラムの開発を一人で担当するということは例外ですので、「構成管理」が必要となるのです。
以上が「構成管理」の概要です。構成管理は、様々なツールや方法論がたくさん出ているので、是非合わせて学習しておくと良いでしょう。