システム開発の現場において、プロジェクト管理の観点でしばしば使われる言葉に、「リポジトリ」というものがあります。
しかし、プロジェクトやその工程、扱うアプリケーションによって、「リポジトリ」が指し示すものは異なる場合があります。では、「リポジトリ」とは一体なんなのでしょうか。
リポジトリ自体の意味と、その役割について説明していきましょう。
リポジトリとは?
リポジトリ(repository)とは、英語で「容器」「貯蔵庫」「倉庫」「集積所」「資源のありか」などの意味を持つ単語です。
システム開発などの情報工学の世界では、仕様、デザイン、ソースコード、テスト情報、インシデント情報など、システムの設計・開発に関するあらゆる情報を統合的に蓄積し、一元的に管理する「場所や仕組み」(貯蔵庫)を意味します。
リポジトリという概念は、データディクショナリという概念をもとに、その発展形として考案されました。
データディクショナリとは、情報資源の管理を目的として、企業内で使用するデータや情報を、項目や形式、属性など規定された形式で登録し、蓄積・管理していく仕組みのことです。
このときデータや情報を管理するために付与する情報のことをメタデータと呼びます。
リポジトリはシステム開発を通して発生する情報や成果物をそれぞれに関連するメタデータと結び付け、データベースとして蓄積・保存します。
リポジトリの役割
データディクショナリは、データの管理そのものを主な目的としていますが、リポジトリはシステム開発の各工程での成果物をメタ情報として管理することを目的としています。
たとえば、ソフトウェアの開発工程で利用されるバージョン管理システムなどでは、ソフトウェアを構成する多数のプログラムのソースファイルをリポジトリに蓄積し、バージョンの管理を行います。
これによって、複数の開発者による修正内容の競合などを防いだり、ソースファイルの修正履歴を一元管理し、どの時点でどんな修正が行われたのかを簡単に把握したりすることが出来るようになります。
その他にも、Linuxディストリビューションでは、パッケージ管理システムがインストールされているソフトウェア・パッケージの情報をリポジトリに登録することで、ユーザーがソフトウェア・パッケージの格納位置やバージョン情報などを意識することなく、新しいソフトウェアを導入したり、バージョンの更新をしたりすることが出来るようになっています。
リポジトリの役割について、その背景にある根本的な考え方としては、ソフトウェアのライフサイクル全体を通して発生する全ての情報や成果物を一元管理し、閲覧や修正を可能にすることで、チーム内やプロジェクト内、ひいては企業全体でそれらの情報を共有し、それによって、システム開発において、重複開発の排除や、過去に開発した機能やソースコードの再利用を進め、開発をより効率的に進めるという狙いがあります。