Subversionは、プログラムのソースコードをはじめ、各種ファイルの変更履歴を管理する集中型バージョン管理システムです。ソースコードの履歴を管理することで、「誰が」「いつ」「なぜ」「ファイル中どの部分を」「どのように」変更を加えたかをいつでも確認することが可能になります。

前回は「Subverison」自体の解説やバージョン管理システムの用語、必要なソフトウェアのインストール手順をご紹介しましたが、ここからは第5回でご紹介した統合開発環境「NetBeans」と連携し、アプリケーションのソースコードをSubversionで管理してみましょう。

NetBeansとSubversionとの連携

第5回でご紹介した統合開発環境、NetBeansと連携し、アプリケーションのソースコードをSubversionで管理してみましょう。

NetBeansにおいて、テンプレートを利用したHTML5アプリケーションプロジェクトを作成した直後の状態

Subversionリポジトリへのインポート

NetBeansにおいてSubversionで管理したいプロジェクトを右クリックし、表示されるサブメニューから[バージョン管理] → [Subversionリポジトリにインポート]を選択します。

Subversionリポジトリにインポートするための設定ダイアログが表示されます。次の情報を入力します。

項目名 内容
リポジトリURL インポートしたいリポジトリのURLを記述します
ユーザー インポートしたいリポジトリにアクセス権限のあるユーザ情報を入力します
パスワード インポートしたいリポジトリにアクセス権限のあるユーザ情報を入力します

情報を入力後、[次]をクリックします。

VisualSVNは自己署名の証明書でインストールされるため、証明書エラーが表示される。[永久に受け入れる]または[一時的に受け入れる]を選択する

インポート先のリポジトリフォルダ名とコミットログを入力します。初期値で、プロジェクト名が入力されます。プロジェクト名とコミットログは入力必須です。それぞれを入力後、[次]をクリックします。

リポジトリにインポートするファイルの一覧が表示されます。Subversionの管理化に置きたくないファイルがある場合は、コミットのチェックを外します。ファイルを選択後、[終了]をクリックしてインポートを実行します。

インポート完了後、再度Webブラウザでインポートしたリポジトリにアクセスします。

リポジトリ内のフォルダやファイルの位置については、VisualSVN Server Managementでも確認できます。

作業中の変更内容確認

ファイルに対して変更を加えた場合や、新しくファイルを作成した場合、NetBeansのプロジェクトツリー上のファイル名の文字列色が変化します。

NetBeansの画面上部メニューの[ウィンドウ] → [Subversion] を選択して表示される通知領域にも、ファイルとステータス、リポジトリの場所が表示されます。

Subversion通知領域上に表示されている変更されたファイルをダブルクリックすると、Subversion管理化のBASEリビジョンから変更された箇所が表示されます。

左側が変更前(BASEリビジョン)、右側が変更後の状態。どこの行がどのように変更されたかがすぐに確認できる

コミット

各種ファイルに対して作業後、変更した内容をリポジトリに送信(コミット)します。プロジェクト名を右クリックし、[Subversion] → [コミット] を選択します。コミットログの入力欄とコミットするファイルの一覧が表示されます。

ファイルをコミットしたくない場合は、一覧の一番左にあるコミットチェックを外します。ファイル名をクリックすると、そのファイルの編集箇所を表示できます。コミットログを記載する際に便利です。

コミットするファイルを指定し、コミットログを入力後、[コミット]ボタンをクリックしてコミットを実行します。コミットをこまめにおこなうことで、どのコードをどのように修正したかを細かく蓄積できます。ソースコード上に時系列を含めたコメントを残すことなく、バージョン管理のコミットログで管理することでコードの可読性やメンテナンス性を向上できます。

更新 (Update)

複数のマシンで開発作業をおこなっていたり、複数ユーザでリポジトリを共同利用している場合は、各種作業前に更新(Update)を欠かさずおこなうようにしましょう。

NetBeansで更新をおこなうには、プロジェクト名を右クリックし、[Subversion] → [更新]をクリックします。この操作をおこなうことで、リポジトリから最新のバージョンのファイル変更履歴を取得し、手元の作業スペースに展開します。

変更内容を元に戻す (Revert)

何らかの事情で作業内容をすべて取り消したい場合は、変更内容を元に戻す処理をおこないます。プロジェクト名を右クリックし、[Subversion] → [変更内容を元に戻す]をクリックします。この操作をおこなうことで、特定のリビジョンまでファイルの内容やファイル構成を遡ることが可能です。

「変更内容を元に戻す」ダイアログ。どの時点まで変更内容を元に戻したいかを選択し、[元に戻す]ボタンをクリックする

リビジョン間の履歴を横断して確認

プロジェクトのこれまでの変更履歴を横断して確認したい場合は、プロジェクト名を右クリックし、[Subversion] → [履歴を検索] を選択します。履歴の検索パネルが表示されたら、右下の[検索]ボタンをクリックしてリビジョンの一覧を表示します。

履歴を検索 (サマリー表示)

リビジョンの一覧から、ユーザ名、日時、コミットログ、変更されたファイルの一覧を確認します。リビジョンをダブルクリックし、ファイルごとの詳細な差分表示に切り替えることができます。

履歴を検索 (差分表示)

検索オプションやフィルタを活用することで、特定の期間やリビジョン、コミットログ、ユーザの変更履歴を絞り込むことが可能です。コミットログに記述する文章のルールをあらかじめ決めておくことで、より目的の情報に素早く辿ることができるようになります。

Subversionサーバにコミットできるクライアントは、NetBeansだけではなく、さまざまなソフトウェアがあります。今回は名称のみ紹介とさせていただきますが、著名なクライアントとして、Windowsエクスプローラと統合してSubversionクライアント機能を提供する「TortoiseSVN」があります。

TortoiseSVNをインストールすると、エクスプローラから直接Subversionサーバに対してチェックアウトやコミット、更新を実行できるようになります。各種HTMLやコードファイル以外にも、打ち合わせに使用したドキュメントファイルを管理する際に役立つアプリケーションです。日本語のドキュメントも充実しており、Subversionを利用する場合はぜひ一読しておきたい内容です。

バージョン管理はバージョン管理に特化した専用のアプリケーションを使うことで、日々の業務の省力化や事故を減らすことにつなぐことができます。バージョン管理のコミットログや前回紹介したRedmineなどで管理し、アプリケーションのコードや開発前の打ち合わせ議事録の知識を1箇所に集約し、円滑な開発を可能にする環境を構築してみましょう。

富田宏昭 Hiroaki Tomida
「株式会社キクミミ」でFileMakerやオープンソース言語などを用いた、Webアプリ開発 企業の業務改善のためのシステム開発や環境構築を行っている。主な著書に「HTML5/JavaScriptとPhoneGapで作るiPhoneアプリ開発入門」(マイナビ)など。