Source Code Control System(SCCS)は、
1972年に
ベル研究所のマーク・J・ロックキンドによって開発された、世界初の
ソースコードバージョン管理システムです。当初は
IBM System/370上のOS/MVT向けに開発されましたが、後にPDP-11上の
UNIXに移植され、初期の
UNIXシステムの一部として広く普及しました。SCCSのコマンド仕様は、Single
UNIX Specificationの一部にもなっています。
SCCSは、
Revision Control System(RCS)が登場するまで、長らく唯一とも言える
バージョン管理システムとして、多くの開発現場で利用されていました。現在では、そのファイル形式は
BitKeeperやTeamWareといった、他の
バージョン管理システムでも利用されています。また、SablimeなどのツールでもSCCS形式のファイルが扱えます。
SCCSのファイル形式は「interleaved delta」(または「weave」)と呼ばれる技術を採用しています。この技術は、
バージョン管理システム開発者にとって、最新のマージ手法を検討する上で重要な鍵として注目されています。例えば、Precise Codevilleのようなシステムがその一例です。
初期のUNIXシステムにおけるSCCS
SCCSは、以下の初期の
UNIXシステムに組み込まれていました。
Programmer's Workbench
UNIX
UNIX System III
UNIX System V
SCCSの技術的な特徴
SCCSが採用しているinterleaved delta(またはweave)は、ファイルの異なるバージョン間の変更箇所を効率的に格納する方式です。これにより、ストレージの効率化と高速なバージョン復元が可能になります。この技術は、現在でも最新の
バージョン管理システムにおけるマージ処理の基礎となる考え方を提供しています。
SCCSの歴史的意義
SCCSは、バージョン管理の概念を広く普及させたという点で、非常に重要な役割を果たしました。現代の
GitやSubversionのような高度な
バージョン管理システムに比べると機能は限られていましたが、当時の開発環境においては非常に革新的なツールでした。SCCSの登場によって、複数の開発者が同時に同じ
ソースコードを編集する際の競合を避けることや、過去のバージョンへのロールバックが容易になりました。これは、ソフトウェア開発の効率化に大きく貢献しました。
SCCSの現在
SCCSは、現在では新規のプロジェクトで利用されることはほとんどありません。しかし、そのファイル形式は一部のレガシーシステムやツールで利用され続けています。また、SCCSの基本的な考え方や技術は、現代の
バージョン管理システムの開発にも影響を与え続けています。GNU CSSCのようなSCCS互換プログラムも存在し、CVSやSubversionといったよりモダンなシステムへの移行を支援しています。
参考文献
M. J. Rochkind: The Source Code Control System. In
IEEE Transactions on Software Engineering SE-1:4 (Dec. 1975), pages 364–370.
Greg Hudson: Notes on keeping version histories of files
Cyclic SCCS Page
外部リンク
M. J. Rochkind: I Hear Voices Talking About Me. In Marc's Blog (2005年6月)
GNU CSSC ("Compatibly Stupid Source Control") SCCS互換プログラム。CVSやSubversionといった最近のシステムへの乗り換えを可能にする。
SourceForge での SCCS 関連プロジェクト一覧
Sourceforge Hosted Version
* sccs(1) マニュアル(HP-UX)